summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Castro <javier.alejandro.castro@gmail.com>2014-03-04 15:09:33 -0300
committerJavier Castro <javier.alejandro.castro@gmail.com>2014-03-04 15:09:33 -0300
commitb61f80babb10d0583d3199d557b4e8234d981a33 (patch)
tree747f124631f6547103bd30d4b48586382b91ae89
parent556ae5ae8187b89a3785219d5621e7ebc9bb7a8c (diff)
parentfbbd989770ea48d472a5c4d7d95b970542279099 (diff)
downloadgitlab-ce-b61f80babb10d0583d3199d557b4e8234d981a33.tar.gz
Merge remote-tracking branch 'upstream/master' into fix-4305
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml11
-rw-r--r--CHANGELOG56
-rw-r--r--CONTRIBUTING.md37
-rw-r--r--Gemfile32
-rw-r--r--Gemfile.lock105
-rw-r--r--LICENSE2
-rw-r--r--MAINTENANCE.md2
-rw-r--r--PROCESS.md4
-rw-r--r--README.md43
-rw-r--r--VERSION2
-rw-r--r--app/assets/images/ajax_loader.gifbin7927 -> 0 bytes
-rw-r--r--app/assets/images/ajax_loader_gray.gifbin8370 -> 0 bytes
-rw-r--r--app/assets/images/ajax_loader_tree.gifbin6531 -> 0 bytes
-rw-r--r--app/assets/images/bg-header.pngbin212 -> 210 bytes
-rw-r--r--app/assets/images/dark-scheme-preview.pngbin16935 -> 9873 bytes
-rw-r--r--app/assets/images/file_txt.pngbin290 -> 463 bytes
-rw-r--r--app/assets/images/icon-link.pngbin0 -> 1019 bytes
-rw-r--r--app/assets/images/icon-search.pngbin422 -> 331 bytes
-rw-r--r--app/assets/images/images.pngbin8698 -> 6644 bytes
-rw-r--r--app/assets/images/logo-black.pngbin3018 -> 2797 bytes
-rw-r--r--app/assets/images/logo-white.pngbin8337 -> 7501 bytes
-rw-r--r--app/assets/images/monokai-scheme-preview.pngbin6651 -> 4332 bytes
-rw-r--r--app/assets/images/no_avatar.pngbin1337 -> 704 bytes
-rw-r--r--app/assets/images/no_group_avatar.pngbin0 -> 4884 bytes
-rw-r--r--app/assets/images/onion_skin_sprites.gifbin1584 -> 548 bytes
-rw-r--r--app/assets/images/solarized-dark-scheme-preview.pngbin16320 -> 9902 bytes
-rw-r--r--app/assets/images/swipemode_sprites.gifbin1540 -> 505 bytes
-rw-r--r--app/assets/images/switch_icon.pngbin1203 -> 1197 bytes
-rw-r--r--app/assets/images/trans_bg.gifbin58 -> 50 bytes
-rw-r--r--app/assets/images/white-scheme-preview.pngbin17161 -> 10022 bytes
-rw-r--r--app/assets/javascripts/api.js.coffee18
-rw-r--r--app/assets/javascripts/application.js3
-rw-r--r--app/assets/javascripts/blob.js.coffee4
-rw-r--r--app/assets/javascripts/commit.js.coffee2
-rw-r--r--app/assets/javascripts/dispatcher.js.coffee18
-rw-r--r--app/assets/javascripts/groups.js.coffee11
-rw-r--r--app/assets/javascripts/issue.js.coffee9
-rw-r--r--app/assets/javascripts/issues.js.coffee14
-rw-r--r--app/assets/javascripts/main.js.coffee4
-rw-r--r--app/assets/javascripts/merge_request.js.coffee103
-rw-r--r--app/assets/javascripts/merge_requests.js.coffee94
-rw-r--r--app/assets/javascripts/notes.js.coffee6
-rw-r--r--app/assets/javascripts/profile.js.coffee2
-rw-r--r--app/assets/javascripts/project_users_select.js.coffee63
-rw-r--r--app/assets/javascripts/search_autocomplete.js.coffee9
-rw-r--r--app/assets/javascripts/users_select.js.coffee8
-rw-r--r--app/assets/stylesheets/application.scss7
-rw-r--r--app/assets/stylesheets/generic/blocks.scss15
-rw-r--r--app/assets/stylesheets/generic/buttons.scss28
-rw-r--r--app/assets/stylesheets/generic/common.scss178
-rw-r--r--app/assets/stylesheets/generic/files.scss73
-rw-r--r--app/assets/stylesheets/generic/flash.scss25
-rw-r--r--app/assets/stylesheets/generic/forms.scss24
-rw-r--r--app/assets/stylesheets/generic/highlight.scss64
-rw-r--r--app/assets/stylesheets/generic/issue_box.scss86
-rw-r--r--app/assets/stylesheets/generic/lists.scss6
-rw-r--r--app/assets/stylesheets/generic/selects.scss61
-rw-r--r--app/assets/stylesheets/generic/typography.scss22
-rw-r--r--app/assets/stylesheets/gl_bootstrap.scss2
-rw-r--r--app/assets/stylesheets/highlight/dark.scss262
-rw-r--r--app/assets/stylesheets/highlight/monokai.scss221
-rw-r--r--app/assets/stylesheets/highlight/solarized_dark.scss191
-rw-r--r--app/assets/stylesheets/highlight/white.scss236
-rw-r--r--app/assets/stylesheets/main/layout.scss6
-rw-r--r--app/assets/stylesheets/main/mixins.scss6
-rw-r--r--app/assets/stylesheets/main/variables.scss1
-rw-r--r--app/assets/stylesheets/sections/admin.scss6
-rw-r--r--app/assets/stylesheets/sections/commits.scss344
-rw-r--r--app/assets/stylesheets/sections/dashboard.scss2
-rw-r--r--app/assets/stylesheets/sections/diff.scss329
-rw-r--r--app/assets/stylesheets/sections/events.scss6
-rw-r--r--app/assets/stylesheets/sections/groups.scss9
-rw-r--r--app/assets/stylesheets/sections/header.scss77
-rw-r--r--app/assets/stylesheets/sections/issues.scss64
-rw-r--r--app/assets/stylesheets/sections/login.scss5
-rw-r--r--app/assets/stylesheets/sections/merge_requests.scss19
-rw-r--r--app/assets/stylesheets/sections/nav.scss58
-rw-r--r--app/assets/stylesheets/sections/notes.scss49
-rw-r--r--app/assets/stylesheets/sections/profile.scss20
-rw-r--r--app/assets/stylesheets/sections/projects.scss11
-rw-r--r--app/assets/stylesheets/sections/tree.scss20
-rw-r--r--app/assets/stylesheets/themes/ui_color.scss6
-rw-r--r--app/assets/stylesheets/themes/ui_gray.scss2
-rw-r--r--app/assets/stylesheets/themes/ui_mars.scss2
-rw-r--r--app/assets/stylesheets/themes/ui_modern.scss2
-rw-r--r--app/contexts/commit_load_context.rb34
-rw-r--r--app/contexts/filter_context.rb58
-rw-r--r--app/contexts/issues/list_context.rb53
-rw-r--r--app/contexts/merge_requests_load_context.rb35
-rw-r--r--app/contexts/notes/load_context.rb20
-rw-r--r--app/contexts/test_hook_context.rb7
-rw-r--r--app/controllers/admin/groups_controller.rb2
-rw-r--r--app/controllers/admin/projects_controller.rb4
-rw-r--r--app/controllers/admin/users_controller.rb6
-rw-r--r--app/controllers/application_controller.rb16
-rw-r--r--app/controllers/dashboard_controller.rb21
-rw-r--r--app/controllers/errors_controller.rb2
-rw-r--r--app/controllers/groups/avatars_controller.rb12
-rw-r--r--app/controllers/groups_controller.rb57
-rw-r--r--app/controllers/profiles/emails_controller.rb26
-rw-r--r--app/controllers/profiles/groups_controller.rb9
-rw-r--r--app/controllers/profiles/keys_controller.rb21
-rw-r--r--app/controllers/projects/blob_controller.rb3
-rw-r--r--app/controllers/projects/commit_controller.rb37
-rw-r--r--app/controllers/projects/compare_controller.rb3
-rw-r--r--app/controllers/projects/edit_tree_controller.rb27
-rw-r--r--app/controllers/projects/hooks_controller.rb11
-rw-r--r--app/controllers/projects/issues_controller.rb19
-rw-r--r--app/controllers/projects/labels_controller.rb2
-rw-r--r--app/controllers/projects/merge_requests_controller.rb47
-rw-r--r--app/controllers/projects/milestones_controller.rb2
-rw-r--r--app/controllers/projects/new_tree_controller.rb3
-rw-r--r--app/controllers/projects/notes_controller.rb4
-rw-r--r--app/controllers/projects/raw_controller.rb18
-rw-r--r--app/controllers/projects/refs_controller.rb2
-rw-r--r--app/controllers/projects/tags_controller.rb2
-rw-r--r--app/controllers/projects/team_members_controller.rb8
-rw-r--r--app/controllers/projects_controller.rb8
-rw-r--r--app/controllers/public/projects_controller.rb2
-rw-r--r--app/controllers/search_controller.rb18
-rw-r--r--app/controllers/snippets_controller.rb2
-rw-r--r--app/controllers/users_controller.rb20
-rw-r--r--app/controllers/users_groups_controller.rb15
-rw-r--r--app/finders/README.md22
-rw-r--r--app/finders/base_finder.rb137
-rw-r--r--app/finders/issues_finder.rb22
-rw-r--r--app/finders/merge_requests_finder.rb22
-rw-r--r--app/finders/notes_finder.rb17
-rw-r--r--app/finders/projects_finder.rb63
-rw-r--r--app/helpers/application_helper.rb36
-rw-r--r--app/helpers/commits_helper.rb15
-rw-r--r--app/helpers/dashboard_helper.rb2
-rw-r--r--app/helpers/gitlab_markdown_helper.rb76
-rw-r--r--app/helpers/groups_helper.rb14
-rw-r--r--app/helpers/issues_helper.rb16
-rw-r--r--app/helpers/merge_requests_helper.rb3
-rw-r--r--app/helpers/notes_helper.rb2
-rw-r--r--app/helpers/notifications_helper.rb6
-rw-r--r--app/helpers/projects_helper.rb25
-rw-r--r--app/helpers/search_helper.rb48
-rw-r--r--app/helpers/selects_helper.rb20
-rw-r--r--app/helpers/submodule_helper.rb43
-rw-r--r--app/mailers/emails/issues.rb22
-rw-r--r--app/mailers/emails/merge_requests.rb22
-rw-r--r--app/mailers/emails/notes.rb16
-rw-r--r--app/mailers/emails/profile.rb6
-rw-r--r--app/mailers/emails/projects.rb5
-rw-r--r--app/mailers/notify.rb35
-rw-r--r--app/models/ability.rb33
-rw-r--r--app/models/commit.rb54
-rw-r--r--app/models/concerns/issuable.rb15
-rw-r--r--app/models/email.rb33
-rw-r--r--app/models/event.rb6
-rw-r--r--app/models/gollum_wiki.rb5
-rw-r--r--app/models/group.rb22
-rw-r--r--app/models/issue.rb4
-rw-r--r--app/models/key.rb2
-rw-r--r--app/models/merge_request.rb186
-rw-r--r--app/models/merge_request_diff.rb155
-rw-r--r--app/models/namespace.rb11
-rw-r--r--app/models/note.rb18
-rw-r--r--app/models/notification.rb27
-rw-r--r--app/models/project.rb47
-rw-r--r--app/models/project_services/assembla_service.rb8
-rw-r--r--app/models/project_services/campfire_service.rb1
-rw-r--r--app/models/project_services/emails_on_push_service.rb1
-rw-r--r--app/models/project_services/flowdock_service.rb1
-rw-r--r--app/models/project_services/gemnasium_service.rb54
-rw-r--r--app/models/project_services/gitlab_ci_service.rb1
-rw-r--r--app/models/project_services/hipchat_service.rb5
-rw-r--r--app/models/project_services/pivotaltracker_service.rb1
-rw-r--r--app/models/project_team.rb8
-rw-r--r--app/models/repository.rb53
-rw-r--r--app/models/service.rb5
-rw-r--r--app/models/tree.rb11
-rw-r--r--app/models/user.rb40
-rw-r--r--app/models/web_hook.rb7
-rw-r--r--app/observers/email_observer.rb5
-rw-r--r--app/observers/merge_request_observer.rb19
-rw-r--r--app/observers/system_hook_observer.rb10
-rw-r--r--app/services/base_service.rb (renamed from app/contexts/base_context.rb)2
-rw-r--r--app/services/files/base_service.rb (renamed from app/contexts/files/base_context.rb)2
-rw-r--r--app/services/files/create_service.rb (renamed from app/contexts/files/create_context.rb)9
-rw-r--r--app/services/files/delete_service.rb (renamed from app/contexts/files/delete_context.rb)6
-rw-r--r--app/services/files/update_service.rb (renamed from app/contexts/files/update_context.rb)13
-rw-r--r--app/services/git_push_service.rb4
-rw-r--r--app/services/issues/bulk_update_service.rb (renamed from app/contexts/issues/bulk_update_context.rb)2
-rw-r--r--app/services/merge_requests/auto_merge_service.rb30
-rw-r--r--app/services/merge_requests/base_merge_service.rb26
-rw-r--r--app/services/merge_requests/merge_service.rb22
-rw-r--r--app/services/notes/create_service.rb (renamed from app/contexts/notes/create_context.rb)3
-rw-r--r--app/services/notification_service.rb22
-rw-r--r--app/services/projects/create_service.rb (renamed from app/contexts/projects/create_context.rb)4
-rw-r--r--app/services/projects/fork_service.rb (renamed from app/contexts/projects/fork_context.rb)2
-rw-r--r--app/services/projects/transfer_service.rb (renamed from app/contexts/projects/transfer_context.rb)2
-rw-r--r--app/services/projects/update_service.rb (renamed from app/contexts/projects/update_context.rb)2
-rw-r--r--app/services/search/global_service.rb (renamed from app/contexts/search/global_context.rb)10
-rw-r--r--app/services/search/project_service.rb (renamed from app/contexts/search/project_context.rb)2
-rw-r--r--app/services/system_hooks_service.rb10
-rw-r--r--app/services/test_hook_service.rb6
-rw-r--r--app/views/admin/dashboard/index.html.haml251
-rw-r--r--app/views/admin/groups/index.html.haml27
-rw-r--r--app/views/admin/projects/index.html.haml2
-rw-r--r--app/views/admin/users/_form.html.haml3
-rw-r--r--app/views/admin/users/index.html.haml12
-rw-r--r--app/views/admin/users/show.html.haml12
-rw-r--r--app/views/dashboard/_activities.html.haml5
-rw-r--r--app/views/dashboard/_groups.html.haml3
-rw-r--r--app/views/dashboard/_projects.html.haml2
-rwxr-xr-x[-rw-r--r--]app/views/dashboard/issues.html.haml2
-rwxr-xr-x[-rw-r--r--]app/views/dashboard/merge_requests.html.haml2
-rw-r--r--app/views/dashboard/projects.html.haml2
-rw-r--r--app/views/dashboard/show.html.haml2
-rwxr-xr-x[-rw-r--r--]app/views/devise/confirmations/new.html.haml3
-rwxr-xr-x[-rw-r--r--]app/views/devise/passwords/new.html.haml3
-rw-r--r--app/views/devise/sessions/new.html.haml2
-rw-r--r--app/views/groups/_filter.html.haml2
-rw-r--r--app/views/groups/_new_group_member.html.haml7
-rw-r--r--app/views/groups/_projects.html.haml2
-rw-r--r--app/views/groups/edit.html.haml30
-rw-r--r--app/views/groups/issues.html.haml4
-rw-r--r--app/views/groups/members.html.haml41
-rw-r--r--app/views/groups/merge_requests.html.haml4
-rw-r--r--app/views/groups/show.html.haml34
-rw-r--r--app/views/help/_api_layout.html.haml2
-rw-r--r--app/views/help/_layout.html.haml7
-rw-r--r--app/views/help/index.html.haml10
-rw-r--r--app/views/help/permissions.html.haml214
-rw-r--r--app/views/help/public_access.html.haml48
-rw-r--r--app/views/help/ssh.html.haml19
-rw-r--r--app/views/help/system_hooks.html.haml13
-rw-r--r--app/views/help/web_hooks.html.haml117
-rw-r--r--app/views/help/workflow.html.haml39
-rw-r--r--app/views/layouts/_head.html.haml6
-rw-r--r--app/views/layouts/_head_panel.html.haml9
-rw-r--r--app/views/layouts/_piwik.html.haml12
-rw-r--r--app/views/layouts/_public_head_panel.html.haml7
-rw-r--r--app/views/layouts/_search.html.haml2
-rw-r--r--app/views/layouts/admin.html.haml3
-rw-r--r--app/views/layouts/application.html.haml2
-rw-r--r--app/views/layouts/group.html.haml2
-rw-r--r--app/views/layouts/nav/_group.html.haml6
-rw-r--r--app/views/layouts/nav/_profile.html.haml4
-rw-r--r--app/views/layouts/navless.html.haml1
-rw-r--r--app/views/layouts/profile.html.haml2
-rw-r--r--app/views/layouts/project_settings.html.haml2
-rw-r--r--app/views/layouts/projects.html.haml2
-rw-r--r--app/views/layouts/public.html.haml4
-rw-r--r--app/views/layouts/public_group.html.haml10
-rw-r--r--app/views/layouts/public_projects.html.haml3
-rw-r--r--app/views/layouts/public_users.html.haml8
-rw-r--r--app/views/layouts/search.html.haml1
-rw-r--r--app/views/layouts/user_team.html.haml3
-rw-r--r--app/views/notify/new_email_email.html.haml10
-rw-r--r--app/views/notify/new_email_email.text.erb7
-rw-r--r--app/views/notify/repository_push_email.html.haml5
-rw-r--r--app/views/notify/repository_push_email.text.haml5
-rw-r--r--app/views/profiles/accounts/show.html.haml5
-rw-r--r--app/views/profiles/emails/index.html.haml33
-rw-r--r--app/views/profiles/groups/index.html.haml9
-rw-r--r--app/views/profiles/keys/index.html.haml2
-rw-r--r--app/views/profiles/notifications/_settings.html.haml44
-rw-r--r--app/views/profiles/notifications/show.html.haml81
-rw-r--r--app/views/profiles/passwords/new.html.haml42
-rw-r--r--app/views/profiles/show.html.haml3
-rw-r--r--app/views/projects/_settings_nav.html.haml12
-rw-r--r--app/views/projects/blob/_blob.html.haml4
-rw-r--r--app/views/projects/blob/_text.html.haml5
-rw-r--r--app/views/projects/blob/show.html.haml1
-rw-r--r--app/views/projects/branches/_branch.html.haml31
-rw-r--r--app/views/projects/branches/index.html.haml2
-rw-r--r--app/views/projects/branches/new.html.haml5
-rw-r--r--app/views/projects/commit/_commit_box.html.haml4
-rw-r--r--app/views/projects/commits/_commit.html.haml9
-rw-r--r--app/views/projects/commits/_diffs.html.haml40
-rw-r--r--app/views/projects/commits/_head.html.haml2
-rw-r--r--app/views/projects/commits/_image.html.haml6
-rw-r--r--app/views/projects/commits/_inline_commit.html.haml6
-rw-r--r--app/views/projects/commits/show.html.haml2
-rw-r--r--app/views/projects/compare/_form.html.haml2
-rw-r--r--app/views/projects/compare/show.html.haml29
-rw-r--r--app/views/projects/deploy_keys/index.html.haml4
-rw-r--r--app/views/projects/edit.html.haml14
-rw-r--r--app/views/projects/edit_tree/show.html.haml7
-rw-r--r--app/views/projects/empty.html.haml5
-rw-r--r--app/views/projects/graphs/show.html.haml5
-rw-r--r--app/views/projects/hooks/index.html.haml4
-rw-r--r--app/views/projects/issues/_form.html.haml6
-rw-r--r--app/views/projects/issues/_head.html.haml8
-rw-r--r--app/views/projects/issues/_issue.html.haml6
-rw-r--r--app/views/projects/issues/_issue_context.html.haml23
-rw-r--r--app/views/projects/issues/_issues.html.haml160
-rw-r--r--app/views/projects/issues/index.html.haml2
-rw-r--r--app/views/projects/issues/show.html.haml40
-rw-r--r--app/views/projects/issues/update.js.haml3
-rw-r--r--app/views/projects/labels/index.html.haml2
-rw-r--r--app/views/projects/merge_requests/_form.html.haml33
-rw-r--r--app/views/projects/merge_requests/_merge_request.html.haml10
-rw-r--r--app/views/projects/merge_requests/_show.html.haml11
-rw-r--r--app/views/projects/merge_requests/branch_from.js.haml2
-rw-r--r--app/views/projects/merge_requests/branch_to.js.haml2
-rw-r--r--app/views/projects/merge_requests/index.html.haml102
-rw-r--r--app/views/projects/merge_requests/show/_commits.html.haml15
-rw-r--r--app/views/projects/merge_requests/show/_context.html.haml22
-rw-r--r--app/views/projects/merge_requests/show/_diffs.html.haml18
-rw-r--r--app/views/projects/merge_requests/show/_mr_accept.html.haml22
-rw-r--r--app/views/projects/merge_requests/show/_mr_box.html.haml68
-rw-r--r--app/views/projects/merge_requests/show/_mr_ci.html.haml2
-rw-r--r--app/views/projects/merge_requests/show/_mr_title.html.haml29
-rw-r--r--app/views/projects/merge_requests/update.js.haml2
-rw-r--r--app/views/projects/merge_requests/update_branches.js.haml8
-rw-r--r--app/views/projects/milestones/_issues.html.haml2
-rw-r--r--app/views/projects/milestones/_merge_request.html.haml2
-rw-r--r--app/views/projects/milestones/_milestone.html.haml2
-rw-r--r--app/views/projects/milestones/index.html.haml2
-rw-r--r--app/views/projects/milestones/show.html.haml36
-rw-r--r--app/views/projects/network/show.html.haml2
-rw-r--r--app/views/projects/new.html.haml5
-rw-r--r--app/views/projects/new_tree/show.html.haml6
-rw-r--r--app/views/projects/notes/_discussion.html.haml17
-rw-r--r--app/views/projects/notes/_discussion_diff.html.haml45
-rw-r--r--app/views/projects/notes/_form.html.haml2
-rw-r--r--app/views/projects/notes/_note.html.haml2
-rw-r--r--app/views/projects/protected_branches/index.html.haml16
-rw-r--r--app/views/projects/repositories/_download_archive.html.haml14
-rw-r--r--app/views/projects/show.html.haml4
-rw-r--r--app/views/projects/snippets/_blob.html.haml9
-rw-r--r--app/views/projects/snippets/_snippet.html.haml7
-rw-r--r--app/views/projects/snippets/index.html.haml2
-rw-r--r--app/views/projects/tags/_tag.html.haml22
-rw-r--r--app/views/projects/tags/index.html.haml26
-rw-r--r--app/views/projects/team_members/_group_members.html.haml8
-rw-r--r--app/views/projects/team_members/index.html.haml4
-rw-r--r--app/views/projects/tree/_blob_item.html.haml4
-rw-r--r--app/views/projects/tree/_readme.html.haml2
-rw-r--r--app/views/projects/tree/_spinner.html.haml3
-rw-r--r--app/views/projects/tree/_submodule_item.html.haml9
-rw-r--r--app/views/projects/tree/_tree.html.haml2
-rw-r--r--app/views/projects/tree/_tree_item.html.haml4
-rw-r--r--app/views/projects/walls/show.html.haml2
-rw-r--r--app/views/projects/wikis/_main_links.html.haml4
-rw-r--r--app/views/projects/wikis/_nav.html.haml2
-rw-r--r--app/views/public/projects/index.html.haml2
-rw-r--r--app/views/search/_project_results.html.haml2
-rw-r--r--app/views/search/results/_blob.html.haml3
-rw-r--r--app/views/shared/_file_hljs.html.haml12
-rw-r--r--app/views/shared/_filter.html.haml39
-rw-r--r--app/views/shared/_issues.html.haml2
-rw-r--r--app/views/shared/_merge_requests.html.haml2
-rw-r--r--app/views/shared/_no_ssh.html.haml8
-rw-r--r--app/views/shared/_project_filter.html.haml28
-rw-r--r--app/views/shared/_promo.html.haml4
-rw-r--r--app/views/shared/_sort_dropdown.html.haml22
-rw-r--r--app/views/snippets/_blob.html.haml16
-rw-r--r--app/views/snippets/_blob_content.html.haml14
-rw-r--r--app/views/snippets/_snippets.html.haml2
-rw-r--r--app/views/snippets/current_user_index.html.haml4
-rw-r--r--app/views/snippets/index.html.haml4
-rw-r--r--app/views/users/_groups.html.haml3
-rw-r--r--app/views/users/_profile.html.haml4
-rw-r--r--app/views/users/show.html.haml4
-rw-r--r--app/views/users_groups/_users_group.html.haml35
-rw-r--r--app/workers/emails_on_push_worker.rb4
-rwxr-xr-xbin/bundle3
-rwxr-xr-xbin/rails8
-rwxr-xr-xbin/rake8
-rwxr-xr-xbin/rspec7
-rwxr-xr-xbin/spinach7
-rwxr-xr-xbin/spring18
-rw-r--r--config.ru2
-rw-r--r--config/application.rb4
-rw-r--r--config/database.yml.mysql1
-rw-r--r--config/gitlab.yml.example34
-rw-r--r--config/initializers/1_settings.rb10
-rw-r--r--config/initializers/3_grit_ext.rb1
-rw-r--r--config/initializers/6_rack_profiler.rb6
-rw-r--r--config/initializers/devise.rb20
-rw-r--r--config/initializers/devise_password_length.rb.example6
-rw-r--r--config/routes.rb10
-rw-r--r--db/fixtures/development/04_project.rb8
-rw-r--r--db/migrate/20110913200833_devise_create_users.rb55
-rw-r--r--db/migrate/20110913204141_create_projects.rb11
-rw-r--r--db/migrate/20110914221600_create_users_projects.rb13
-rw-r--r--db/migrate/20110915205627_add_private_flag_to_project.rb5
-rw-r--r--db/migrate/20110915213352_create_keys.rb9
-rw-r--r--db/migrate/20110916123731_add_name_to_user.rb5
-rw-r--r--db/migrate/20110916162511_add_key_title_to_key.rb7
-rw-r--r--db/migrate/20110917212932_add_identifier_to_key.rb5
-rw-r--r--db/migrate/20110921192501_create_issues.rb13
-rw-r--r--db/migrate/20110922110156_add_code_to_project.rb5
-rw-r--r--db/migrate/20110923211333_add_status_to_issue.rb5
-rw-r--r--db/migrate/20110924214549_create_rails_admin_histories_table.rb18
-rw-r--r--db/migrate/20110924215658_add_admin_field_to_user.rb5
-rw-r--r--db/migrate/20110926082616_remove_admin.rb9
-rw-r--r--db/migrate/20110927130352_create_notes.rb12
-rw-r--r--db/migrate/20110928140106_add_project_id_for_note.rb9
-rw-r--r--db/migrate/20110928142747_change_noteable_id_for_note.rb9
-rw-r--r--db/migrate/20110928161328_add_attachment_to_note.rb5
-rw-r--r--db/migrate/20111005193700_add_allow_repo_creation_for_user.rb9
-rw-r--r--db/migrate/20111009101738_add_ownerto_project.rb5
-rw-r--r--db/migrate/20111009110913_add_projects_limit_to_user.rb5
-rw-r--r--db/migrate/20111009111204_remove_allow_create_repo_from_user.rb9
-rw-r--r--db/migrate/20111015154310_add_position_to_issues.rb5
-rw-r--r--db/migrate/20111016183422_create_snippets.rb12
-rw-r--r--db/migrate/20111016193417_add_content_type_to_snippets.rb5
-rw-r--r--db/migrate/20111016195506_add_file_name_to_snippets.rb6
-rw-r--r--db/migrate/20111019212429_add_social_to_user.rb7
-rw-r--r--db/migrate/20111021101550_change_social_fields_in_users.rb14
-rw-r--r--db/migrate/20111025134235_add_high_label_to_issue.rb5
-rw-r--r--db/migrate/20111027051828_add_expires_at_to_snippets.rb5
-rw-r--r--db/migrate/20111027142641_change_note_note_to_text.rb8
-rw-r--r--db/migrate/20111027152724_issue_conten_to_note.rb34
-rw-r--r--db/migrate/20111101222453_acts_as_taggable_on_migration.rb28
-rw-r--r--db/migrate/20111111093150_remove_content_from_issues.rb9
-rw-r--r--db/migrate/20111115063954_add_authentication_token_to_users.rb5
-rw-r--r--db/migrate/20111124115339_add_extra_field_to_issue.rb5
-rw-r--r--db/migrate/20111127155345_create_merge_requests.rb15
-rw-r--r--db/migrate/20111206213842_add_advanced_rights_to_team_member.rb6
-rw-r--r--db/migrate/20111206222316_migrate_to_new_rights.rb20
-rw-r--r--db/migrate/20111207211728_add_default_branch_to_project.rb5
-rw-r--r--db/migrate/20111214091851_create_web_hooks.rb9
-rw-r--r--db/migrate/20111220190817_add_coloscheme_option_to_user.rb5
-rw-r--r--db/migrate/20111231111825_add_project_id_to_key.rb6
-rw-r--r--db/migrate/20120110180749_add_line_number_to_note.rb5
-rw-r--r--db/migrate/20120119202326_add_indexes.rb9
-rw-r--r--db/migrate/20120121122616_fix_noteable_id.rb8
-rw-r--r--db/migrate/20120206170141_add_modularity_fields_to_project.rb7
-rw-r--r--db/migrate/20120215182305_create_protected_branches.rb10
-rw-r--r--db/migrate/20120216085842_move_to_roles_permissions.rb22
-rw-r--r--db/migrate/20120216215008_create_wikis.rb11
-rw-r--r--db/migrate/20120219130957_add_slug_to_wiki.rb6
-rw-r--r--db/migrate/20120219140810_add_wiki_enabled_to_project.rb6
-rw-r--r--db/migrate/20120219193300_add_user_to_wiki.rb6
-rw-r--r--db/migrate/20120228130210_create_events.rb14
-rw-r--r--db/migrate/20120228134252_add_action_to_event.rb5
-rw-r--r--db/migrate/20120301185805_add_theme_to_user.rb6
-rw-r--r--db/migrate/20120307095918_add_author_id_to_event.rb5
-rw-r--r--db/migrate/20120315111711_add_commits_diff_store_to_merge_request.rb6
-rw-r--r--db/migrate/20120315132931_add_merged_to_merge_request.rb5
-rw-r--r--db/migrate/20120317095543_add_description_to_issues.rb5
-rw-r--r--db/migrate/20120323221339_add_bio_field_to_user.rb5
-rw-r--r--db/migrate/20120329170745_add_automerge_to_merge_request.rb5
-rw-r--r--db/migrate/20120405211750_increase_mr_text_column_size.rb10
-rw-r--r--db/migrate/20120408180246_create_milestones.rb12
-rw-r--r--db/migrate/20120408181910_add_milestone_id_to_issue.rb5
-rw-r--r--db/migrate/20120413135904_add_blocked_field_to_user.rb5
-rw-r--r--db/migrate/20120627145613_remove_critical_from_issue.rb9
-rw-r--r--db/migrate/20120706065612_add_lockable_to_users.rb6
-rw-r--r--db/migrate/20120712080407_add_type_to_web_hook.rb5
-rw-r--r--db/migrate/20120729131232_add_extern_auth_provider_to_users.rb8
-rw-r--r--db/migrate/20120905043334_set_default_branch_default_to_nil.rb12
-rw-r--r--db/migrate/20121002150926_create_groups.rb11
-rw-r--r--db/migrate/20121002151033_add_group_id_to_project.rb5
-rw-r--r--db/migrate/20121009205010_postgres_create_integer_cast.rb15
-rw-r--r--db/migrate/20121026114600_add_milestone_id_to_merge_requests.rb5
-rw-r--r--db/migrate/20121119170638_create_services.rb12
-rw-r--r--db/migrate/20121120051432_add_service_id_to_web_hook.rb5
-rw-r--r--db/migrate/20121120103700_add_active_to_service.rb5
-rw-r--r--db/migrate/20121120113838_add_project_url_to_service.rb5
-rw-r--r--db/migrate/20121122145155_convert_group_to_namespace.rb13
-rw-r--r--db/migrate/20121122150932_add_namespace_id_to_project.rb5
-rw-r--r--db/migrate/20121123104937_add_username_to_user.rb5
-rw-r--r--db/migrate/20121123164910_rename_code_to_path.rb11
-rw-r--r--db/migrate/20121203154450_add_events_indices.rb8
-rw-r--r--db/migrate/20121203160507_more_indices.rb26
-rw-r--r--db/migrate/20121205201726_add_more_indexes.rb44
-rw-r--r--db/migrate/20121218164840_move_noteable_commit_to_own_field.rb20
-rw-r--r--db/migrate/20121219095402_indices_for_notes.rb6
-rw-r--r--db/migrate/20121219183753_create_user_teams.rb11
-rw-r--r--db/migrate/20121220064104_create_user_team_project_relationships.rb11
-rw-r--r--db/migrate/20121220064453_create_user_team_user_relationships.rb12
-rw-r--r--db/migrate/20121220064453_init_schema.rb306
-rw-r--r--db/migrate/20130506095501_remove_project_id_from_key.rb2
-rw-r--r--db/migrate/20140116231608_add_website_url_to_users.rb5
-rw-r--r--db/migrate/20140122112253_create_merge_request_diffs.rb12
-rw-r--r--db/migrate/20140122114406_migrate_mr_diffs.rb9
-rw-r--r--db/migrate/20140122122549_remove_m_rdiff_fields.rb21
-rw-r--r--db/migrate/20140127170938_add_group_avatars.rb5
-rw-r--r--db/migrate/20140209025651_create_emails.rb13
-rw-r--r--db/migrate/20140214102325_add_api_key_to_services.rb5
-rw-r--r--db/migrate/20140304005354_add_index_merge_request_diffs_on_merge_request_id.rb5
-rw-r--r--db/schema.rb40
-rw-r--r--doc/api/README.md2
-rw-r--r--doc/api/commits.md95
-rw-r--r--doc/api/projects.md31
-rw-r--r--doc/api/repositories.md132
-rw-r--r--doc/api/repository_files.md102
-rw-r--r--doc/api/session.md1
-rw-r--r--doc/api/users.md6
-rw-r--r--doc/development/architecture.md194
-rw-r--r--doc/development/resources/gitlab_diagram_overview.odgbin0 -> 26292 bytes
-rw-r--r--doc/development/resources/gitlab_diagram_overview.pngbin0 -> 130285 bytes
-rw-r--r--doc/development/shell_commands.md111
-rw-r--r--doc/install/database_mysql.md (renamed from doc/install/databases.md)32
-rw-r--r--doc/install/installation.md87
-rw-r--r--doc/install/requirements.md26
-rw-r--r--doc/install/structure.md20
-rw-r--r--doc/integration/external-issue-tracker.md7
-rw-r--r--doc/integration/jira-integration-points.pngbin0 -> 67854 bytes
-rw-r--r--doc/markdown/markdown.md178
-rw-r--r--doc/permissions/permissions.md45
-rw-r--r--doc/public_access/public_access.md28
-rw-r--r--doc/raketasks/backup_restore.md15
-rw-r--r--doc/raketasks/user_management.md20
-rw-r--r--doc/release/monthly.md18
-rw-r--r--doc/release/security.md2
-rw-r--r--doc/security/password_length_limits.md10
-rw-r--r--doc/ssh/ssh.md24
-rw-r--r--doc/system_hooks/system_hooks.md (renamed from app/views/admin/hooks/_data_ex.html.erb)42
-rw-r--r--doc/update/5.4-to-6.0.md6
-rw-r--r--doc/update/6.0-to-6.1.md5
-rw-r--r--doc/update/6.0-to-6.5.md (renamed from doc/update/6.0-to-6.4.md)23
-rw-r--r--doc/update/6.1-to-6.2.md5
-rw-r--r--doc/update/6.2-to-6.3.md3
-rw-r--r--doc/update/6.3-to-6.4.md23
-rw-r--r--doc/update/6.4-to-6.5.md94
-rw-r--r--doc/update/6.5-to-6.6.md94
-rw-r--r--doc/update/patch_versions.md6
-rw-r--r--doc/update/ruby.md2
-rw-r--r--doc/update/upgrader.md24
-rw-r--r--doc/web_hooks/web_hooks.md112
-rw-r--r--doc/workflow/workflow.md26
-rw-r--r--features/admin/groups.feature6
-rw-r--r--features/admin/users.feature6
-rw-r--r--features/dashboard/help.feature8
-rw-r--r--features/group.feature115
-rw-r--r--features/group/create_group.feature11
-rw-r--r--features/group/group.feature33
-rw-r--r--features/profile/emails.feature25
-rw-r--r--features/profile/group.feature47
-rw-r--r--features/profile/profile.feature11
-rw-r--r--features/project/commits/branches.feature12
-rw-r--r--features/project/commits/commits_user_lookup.feature14
-rw-r--r--features/project/forked_merge_requests.feature6
-rw-r--r--features/project/issues/filter_labels.feature26
-rw-r--r--features/project/issues/issues.feature12
-rw-r--r--features/project/issues/milestones.feature6
-rw-r--r--features/project/merge_requests.feature38
-rw-r--r--features/project/source/markdown_render.feature70
-rw-r--r--features/public/public_groups.feature118
-rw-r--r--features/public/public_projects.feature37
-rw-r--r--features/steps/admin/admin_groups.rb13
-rw-r--r--features/steps/admin/admin_users.rb13
-rw-r--r--features/steps/dashboard/dashboard.rb4
-rw-r--r--features/steps/dashboard/dashboard_issues.rb2
-rw-r--r--features/steps/dashboard/dashboard_merge_requests.rb2
-rw-r--r--features/steps/dashboard/dashboard_with_archived_projects.rb2
-rw-r--r--features/steps/group/group.rb127
-rw-r--r--features/steps/help.rb21
-rw-r--r--features/steps/profile/group.rb44
-rw-r--r--features/steps/profile/profile.rb19
-rw-r--r--features/steps/profile/profile_emails.rb48
-rw-r--r--features/steps/profile/profile_notifications.rb1
-rw-r--r--features/steps/profile/profile_ssh_keys.rb2
-rw-r--r--features/steps/project/deploy_keys.rb2
-rw-r--r--features/steps/project/project_active_tab.rb6
-rw-r--r--features/steps/project/project_archived.rb6
-rw-r--r--features/steps/project/project_browse_branches.rb30
-rw-r--r--features/steps/project/project_browse_commits_user_lookup.rb35
-rw-r--r--features/steps/project/project_filter_labels.rb70
-rw-r--r--features/steps/project/project_fork.rb8
-rw-r--r--features/steps/project/project_forked_merge_requests.rb22
-rw-r--r--features/steps/project/project_graph.rb2
-rw-r--r--features/steps/project/project_hooks.rb6
-rw-r--r--features/steps/project/project_issue_tracker.rb4
-rw-r--r--features/steps/project/project_issues.rb21
-rw-r--r--features/steps/project/project_labels.rb2
-rw-r--r--features/steps/project/project_markdown_render.rb129
-rw-r--r--features/steps/project/project_merge_requests.rb157
-rw-r--r--features/steps/project/project_milestones.rb18
-rw-r--r--features/steps/project/project_network_graph.rb3
-rw-r--r--features/steps/project/project_snippets.rb4
-rw-r--r--features/steps/project/project_team_management.rb22
-rw-r--r--features/steps/project/redirects.rb8
-rw-r--r--features/steps/public/groups_feature.rb93
-rw-r--r--features/steps/public/projects_feature.rb137
-rw-r--r--features/steps/shared/authentication.rb8
-rw-r--r--features/steps/shared/diff_note.rb42
-rw-r--r--features/steps/shared/group.rb36
-rw-r--r--features/steps/shared/markdown.rb12
-rw-r--r--features/steps/shared/note.rb17
-rw-r--r--features/steps/shared/paths.rb74
-rw-r--r--features/steps/shared/project.rb79
-rw-r--r--features/steps/shared/user.rb17
-rw-r--r--features/steps/snippets/discover_snippets.rb2
-rw-r--r--features/steps/snippets/snippets.rb2
-rw-r--r--features/steps/snippets/user_snippets.rb2
-rw-r--r--features/steps/user.rb10
-rw-r--r--features/support/env.rb2
-rw-r--r--features/user.feature69
-rw-r--r--lib/api/api.rb3
-rw-r--r--lib/api/commits.rb64
-rw-r--r--lib/api/deploy_keys.rb4
-rw-r--r--lib/api/entities.rb37
-rw-r--r--lib/api/files.rb63
-rw-r--r--lib/api/groups.rb6
-rw-r--r--lib/api/helpers.rb4
-rw-r--r--lib/api/internal.rb4
-rw-r--r--lib/api/merge_requests.rb5
-rw-r--r--lib/api/projects.rb22
-rw-r--r--lib/api/repositories.rb65
-rw-r--r--lib/api/users.rb6
-rw-r--r--lib/backup/database.rb20
-rw-r--r--lib/backup/manager.rb26
-rw-r--r--lib/backup/repository.rb3
-rw-r--r--lib/backup/uploads.rb5
-rw-r--r--lib/extracts_path.rb2
-rw-r--r--lib/gitlab/auth.rb2
-rw-r--r--lib/gitlab/blacklist.rb2
-rw-r--r--lib/gitlab/identifier.rb6
-rw-r--r--lib/gitlab/ldap/user.rb4
-rw-r--r--lib/gitlab/popen.rb20
-rw-r--r--lib/gitlab/regex.rb4
-rw-r--r--lib/gitlab/satellite/files/edit_file_action.rb5
-rw-r--r--lib/gitlab/satellite/files/file_action.rb8
-rw-r--r--lib/gitlab/satellite/files/new_file_action.rb4
-rw-r--r--lib/gitlab/satellite/merge_action.rb44
-rw-r--r--lib/gitlab/satellite/satellite.rb2
-rw-r--r--lib/gitlab/upgrader.rb2
-rw-r--r--lib/redcarpet/render/gitlab_html.rb21
-rwxr-xr-xlib/support/deploy/deploy.sh4
-rwxr-xr-xlib/support/init.d/gitlab3
-rwxr-xr-xlib/support/init.d/gitlab.default.example17
-rw-r--r--lib/support/nginx/gitlab20
-rw-r--r--lib/tasks/gitlab/bulk_add_permission.rake26
-rw-r--r--lib/tasks/gitlab/check.rake52
-rw-r--r--lib/tasks/gitlab/enable_namespaces.rake4
-rw-r--r--lib/tasks/gitlab/import.rake12
-rw-r--r--public/500.html2
-rw-r--r--public/502.html13
-rw-r--r--public/gitlab_logo.pngbin17388 -> 13819 bytes
-rwxr-xr-xscript/background_jobs2
-rwxr-xr-xscript/web2
-rw-r--r--spec/contexts/filter_context_spec.rb65
-rw-r--r--spec/contexts/issues/list_context_spec.rb73
-rw-r--r--spec/controllers/blob_controller_spec.rb2
-rw-r--r--spec/controllers/commit_controller_spec.rb2
-rw-r--r--spec/controllers/commits_controller_spec.rb2
-rw-r--r--spec/controllers/merge_requests_controller_spec.rb6
-rw-r--r--spec/controllers/profile_keys_controller_spec.rb49
-rw-r--r--spec/controllers/tree_controller_spec.rb2
-rw-r--r--spec/factories.rb119
-rw-r--r--spec/features/atom/dashboard_issues_spec.rb5
-rw-r--r--spec/features/gitlab_flavored_markdown_spec.rb2
-rw-r--r--spec/features/issues_spec.rb63
-rw-r--r--spec/features/notes_on_merge_requests_spec.rb27
-rw-r--r--spec/features/security/group/group_access_spec.rb (renamed from spec/features/security/group_access_spec.rb)1
-rw-r--r--spec/features/security/group/internal_group_access_spec.rb82
-rw-r--r--spec/features/security/group/mixed_group_access_spec.rb83
-rw-r--r--spec/features/security/group/public_group_access_spec.rb82
-rw-r--r--spec/features/security/project/internal_access_spec.rb2
-rw-r--r--spec/features/security/project/private_access_spec.rb2
-rw-r--r--spec/features/security/project/public_access_spec.rb2
-rw-r--r--spec/finders/issues_finder_spec.rb58
-rw-r--r--spec/finders/merge_requests_finder_spec.rb37
-rw-r--r--spec/finders/projects_finder_spec.rb51
-rw-r--r--spec/helpers/application_helper_spec.rb17
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb44
-rw-r--r--spec/helpers/notifications_helper_spec.rb6
-rw-r--r--spec/helpers/search_helper_spec.rb29
-rw-r--r--spec/helpers/submodule_helper_spec.rb118
-rw-r--r--spec/lib/gitlab/ldap/ldap_user_auth_spec.rb10
-rw-r--r--spec/lib/gitlab/popen_spec.rb20
-rw-r--r--spec/lib/gitlab/reference_extractor_spec.rb2
-rw-r--r--spec/lib/gitlab/satellite/action_spec.rb2
-rw-r--r--spec/lib/gitlab/satellite/merge_action_spec.rb13
-rw-r--r--spec/mailers/notify_spec.rb120
-rw-r--r--spec/models/assembla_service_spec.rb10
-rw-r--r--spec/models/commit_spec.rb2
-rw-r--r--spec/models/flowdock_service_spec.rb3
-rw-r--r--spec/models/forked_project_link_spec.rb2
-rw-r--r--spec/models/gemnasium_service_spec.rb47
-rw-r--r--spec/models/gitlab_ci_service_spec.rb1
-rw-r--r--spec/models/group_spec.rb15
-rw-r--r--spec/models/merge_request_spec.rb7
-rw-r--r--spec/models/note_spec.rb12
-rw-r--r--spec/models/project_spec.rb28
-rw-r--r--spec/models/service_spec.rb5
-rw-r--r--spec/models/user_spec.rb78
-rw-r--r--spec/observers/email_observer_spec.rb17
-rw-r--r--spec/observers/merge_request_observer_spec.rb30
-rw-r--r--spec/requests/api/commits_spec.rb87
-rw-r--r--spec/requests/api/files_spec.rb32
-rw-r--r--spec/requests/api/merge_requests_spec.rb35
-rw-r--r--spec/requests/api/project_hooks_spec.rb2
-rw-r--r--spec/requests/api/projects_spec.rb53
-rw-r--r--spec/requests/api/repositories_spec.rb73
-rw-r--r--spec/requests/api/services_spec.rb2
-rw-r--r--spec/requests/api/users_spec.rb2
-rw-r--r--spec/routing/routing_spec.rb29
-rw-r--r--spec/seed_project.tar.gzbin9795570 -> 9789938 bytes
-rw-r--r--spec/services/fork_service_spec.rb (renamed from spec/contexts/fork_context_spec.rb)4
-rw-r--r--spec/services/git_push_service_spec.rb2
-rw-r--r--spec/services/issues/bulk_update_context_spec.rb (renamed from spec/contexts/issues/bulk_update_context_spec.rb)12
-rw-r--r--spec/services/notification_service_spec.rb46
-rw-r--r--spec/services/projects_create_service_spec.rb (renamed from spec/contexts/projects_create_context_spec.rb)4
-rw-r--r--spec/services/projects_update_service_spec.rb (renamed from spec/contexts/projects_update_context_spec.rb)6
-rw-r--r--spec/services/search_service_spec.rb (renamed from spec/contexts/search_context_spec.rb)10
-rw-r--r--spec/services/system_hooks_service_spec.rb4
-rw-r--r--spec/services/test_hook_service_spec.rb14
-rw-r--r--spec/support/mentionable_shared_examples.rb2
-rw-r--r--spec/support/test_env.rb4
-rw-r--r--spec/support/valid_commit.rb1
-rw-r--r--spec/support/valid_commit_with_alt_email.rb6
-rw-r--r--spec/tasks/gitlab/backup_rake_spec.rb11
-rw-r--r--spec/workers/post_receive_spec.rb4
-rw-r--r--vendor/assets/images/authbuttons/github_32.pngbin1931 -> 1902 bytes
-rw-r--r--vendor/assets/images/authbuttons/github_64.pngbin4447 -> 4444 bytes
-rw-r--r--vendor/assets/images/authbuttons/google_32.pngbin1615 -> 1611 bytes
-rw-r--r--vendor/assets/images/authbuttons/google_64.pngbin3446 -> 3437 bytes
-rw-r--r--vendor/assets/images/authbuttons/twitter_32.pngbin1439 -> 1417 bytes
-rw-r--r--vendor/assets/images/authbuttons/twitter_64.pngbin3384 -> 3328 bytes
-rw-r--r--vendor/assets/images/bg_fallback.pngbin3721 -> 2976 bytes
-rw-r--r--vendor/assets/images/icon_sprite.pngbin3217 -> 2782 bytes
-rw-r--r--vendor/assets/images/progress_bar.gifbin502 -> 494 bytes
-rw-r--r--vendor/assets/images/slider_handles.pngbin4453 -> 4122 bytes
-rw-r--r--vendor/assets/images/ui-icons_222222_256x240.pngbin4369 -> 4193 bytes
-rw-r--r--vendor/assets/images/ui-icons_454545_256x240.pngbin4369 -> 4193 bytes
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/ace.js15881
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/keybinding-emacs.js374
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/keybinding-vim.js1679
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-c9search.js268
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-c_cpp.js759
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-clojure.js347
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-coffee.js513
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-coldfusion.js1852
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-csharp.js619
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-css.js457
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-diff.js244
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-glsl.js834
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-golang.js674
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-groovy.js1160
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-haxe.js624
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-html.js1950
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-jade.js2038
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-java.js1120
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-javascript.js990
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-json.js581
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-jsp.js1664
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-jsx.js646
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-latex.js95
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-less.js504
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-liquid.js1003
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-lua.js524
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-luahtml.js2415
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-luapage.js2480
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-markdown.js2252
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-ocaml.js452
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-perl.js419
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-pgsql.js963
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-php.js2359
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-powershell.js608
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-python.js383
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-ruby.js302
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-scad.js712
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-scala.js1151
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-scss.js530
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-sh.js238
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-sql.js145
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-svg.js1602
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-tcl.js444
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-text.js0
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-textile.js175
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-xml.js822
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-xquery.js591
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/mode-yaml.js371
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-ambiance.js269
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-chrome.js205
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-clouds.js170
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-clouds_midnight.js171
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-cobalt.js182
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-crimson_editor.js197
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-dawn.js183
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-dreamweaver.js224
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-eclipse.js154
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-github.js175
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-idle_fingers.js171
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-kr_theme.js177
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-merbivore.js168
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-merbivore_soft.js169
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-mono_industrial.js180
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-monokai.js174
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-pastel_on_dark.js187
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-solarized_dark.js159
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-solarized_light.js164
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-textmate.js207
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow.js182
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night.js182
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_blue.js179
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_bright.js182
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_eighties.js178
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-twilight.js184
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-vibrant_ink.js164
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/theme-xcode.js156
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/worker-coffee.js7213
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/worker-css.js10940
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/worker-javascript.js10319
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/worker-json.js2946
-rw-r--r--vendor/assets/javascripts/ace-src-noconflict/worker-xquery.js69021
-rw-r--r--vendor/assets/javascripts/highlightjs.min.js1
-rw-r--r--vendor/assets/stylesheets/highlightjs.min.css1
802 files changed, 10219 insertions, 167930 deletions
diff --git a/.gitignore b/.gitignore
index 084edd30df7..4c25c8abf82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@ doc/code/*
.secret
*.log
public/uploads.*
+public/assets/
diff --git a/.travis.yml b/.travis.yml
index 75b4c5c7030..6bff3752b2a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,12 +1,14 @@
language: ruby
env:
global:
- - DB=mysql
- TRAVIS=true
matrix:
- - TASK=spinach
- - TASK=spec
- - TASK=jasmine:ci
+ - TASK=spinach DB=mysql
+ - TASK=spec DB=mysql
+ - TASK=jasmine:ci DB=mysql
+ - TASK=spinach DB=postgresql
+ - TASK=spec DB=postgresql
+ - TASK=jasmine:ci DB=postgresql
before_install:
- sudo apt-get install libicu-dev -y
branches:
@@ -15,7 +17,6 @@ branches:
rvm:
- 2.0.0
services:
- - mysql
- redis-server
before_script:
- "cp config/database.yml.$DB config/database.yml"
diff --git a/CHANGELOG b/CHANGELOG
index 7d5f164de53..ab420399263 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,10 +1,55 @@
+v 6.7.0
+ - Add support for Gemnasium as a Project Service (Olivier Gonzalez)
+ - Add edit file button to MergeRequest diff
+ - Public groups (Jason Hollingsworth)
+ - Cleaner headers in Notification Emails (Pierre de La Morinerie)
+ - Blob and tree gfm links to anchors work
+ - Piwik Integration (Sebastian Winkler)
+ - Show contribution guide link for new issue form (Jeroen van Baarsen)
+ - Fix CI status for merge requests from fork
+ - Added option to remove issue assignee on project issue page and issue edit page (Jason Blanchard)
+
+v 6.6.2
+ - Fix 500 error on branch/tag create or remove via UI
+
+v 6.6.1
+ - Fix 500 error on files tab if submodules presents
+
+v 6.6.0
+ - Retrieving user ssh keys publically(github style): http://__HOST__/__USERNAME__.keys
+ - Permissions: Developer now can manage issue tracker (modify any issue)
+ - Improve Code Compare page performance
+ - Group avatar
+ - Pygments.rb replaced with highlight.js
+ - Improve Merge request diff store logic
+ - Improve render performnace for MR show page
+ - Fixed Assembla hardcoded project name
+ - Jira integration documentation
+ - Refactored app/services
+ - Remove snippet expiration
+ - Mobile UI improvements (Drew Blessing)
+ - Fix block/remove UI for admin::users#show page
+ - Show users' group membership on users' activity page (Robert Djurasaj)
+ - User pages are visible without login if user is authorized to a public project
+ - Markdown rendered headers have id derived from their name and link to their id
+ - Improve application to work faster with large groups (100+ members)
+ - Multiple emails per user
+ - Show last commit for file when view file source
+ - Restyle Issue#show page and MR#show page
+ - Ability to filter by multiple labels for Issues page
+ - Rails version to 4.0.3
+ - Fixed attachment identifier displaying underneath note text (Jason Blanchard)
+
+v 6.5.1
+ - Fix branch selectbox when create merge request from fork
+
v 6.5.0
- Dropdown menus on issue#show page for assignee and milestone (Jason Blanchard)
- Add color custimization and previewing to broadcast messages
- Fixed notes anchors
- Load new comments in issues dynamically
- Added sort options to Public page
- - Added new filters(assigned/authored/all) to Dashboard#issues, Dashboard#merge_request pages
+ - New filters (assigned/authored/all) for Dashboard#issues/merge_requests (sponsored by Say Media)
- Add project visibility icons to dashboard
- Enable secure cookies if https used
- Protect users/confirmation with rack_attack
@@ -15,6 +60,11 @@ v 6.5.0
- SCSS refactored
- Use jquery timeago plugin
- Fix 500 error for rdoc files
+ - Ability to customize merge commit message (sponsored by Say Media)
+ - Search autocomplete via ajax
+ - Add website url to user profile
+ - Files API supports base64 encoded content (sponsored by O'Reilly Media)
+ - Added support for Go's repository retrieval (Bruno Albuquerque)
v6.4.3
- Don't use unicorn worker killer if PhusionPassenger is defined
@@ -22,7 +72,7 @@ v6.4.3
v6.4.2
- Fixed wrong behaviour of script/upgrade.rb
-v6.4.1
+v6.4.1
- Fixed bug with repository rename
- Fixed bug with project transfer
@@ -615,4 +665,4 @@ v 0.8.0
- stability
- security fixes
- increased test coverage
- - email notification \ No newline at end of file
+ - email notification
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index cb5c218920d..c1788657b95 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -48,7 +48,7 @@ Please send a merge request with a tested solution or a merge request with a fai
## Merge requests
-We welcome merge requests with fixes and improvements to GitLab code, tests, and/or documentation. The features we would really like a merge request for are listed with the [status 'accepting merge/merge requests' on our feedback forum](http://feedback.gitlab.com/forums/176466-general/status/796455) but other improvements are also welcome.
+We welcome merge requests with fixes and improvements to GitLab code, tests, and/or documentation. The features we would really like a merge request for are listed with the [status 'accepting merge requests' on our feedback forum](http://feedback.gitlab.com/forums/176466-general/status/796455) but other improvements are also welcome. If you want to add a new feature that is not marked it is best to first create a feedback issue (if there isn't one already) and leave a comment asking for it to be marked accepting merge requests. Please include screenshots or wireframes if the feature will also change the UI.
### Merge request guidelines
@@ -66,19 +66,30 @@ If you can, please submit a merge request with the fix or improvements including
1. If the MR changes the UI it should include before and after screenshots
1. Link relevant [issues](https://gitlab.com/gitlab-org/gitlab-ce/issues) and/or [feedback items](http://feedback.gitlab.com/) from the merge request description and leave a comment on them with a link back to the MR
1. Be prepared to answer questions and incorporate feedback even if requests for this arrive weeks or months after your MR submittion
+1. If your MR touches code that executes shell commands, make sure it adheres to the [shell command guidelines]( doc/development/shell_commands.md).
-Please keep the change in a single MR as small as possible. If you want to contribute a large feature think very hard what the minimum viable change is. Can you split functionality? Can you only submit the backend/API code? Can you start with a very simple UI? The smaller a MR is the more likely it is it will be merged, after that you can send more MR's to enhance it.
+The **official merge window** is in the beginning of the month from the 1st to the 7th day of the month. The best time to submit a MR and get feedback fast. Before this time the GitLab.com team is still dealing with work that is created by the monthly release such as assisting subscribers with upgrade issues, the release of Enterprise Edition and the upgrade of GitLab Cloud. After the 7th it is already getting closer to the release date of the next version. This means there is less time to fix the issues created by merging large new features.
-We will accept a merge requests if it:
+Please keep the change in a single MR **as small as possible**. If you want to contribute a large feature think very hard what the minimum viable change is. Can you split functionality? Can you only submit the backend/API code? Can you start with a very simple UI? The smaller a MR is the more likely it is it will be merged, after that you can send more MR's to enhance it.
-* Includes proper tests and all tests pass (unless it contains a test exposing a bug in existing code)
-* Can be merged without problems (if not please use: `git rebase master`)
-* Do not break any existing functionality
-* Conforms to the [Ruby](https://github.com/bbatsov/ruby-style-guide) and [Rails](https://github.com/bbatsov/rails-style-guide) style guides and best practices
-* Fixes one specific issue or implements one specific feature (do not combine things, send separate merge requests if needed)
-* Keeps the GitLab code base clean and well structured
-* Contains functionality we think other users will benefit from too
-* Doesn't add unnessecary configuration options since they complicate future changes
-* Contains a single commit (please use `git rebase -i` to squash commits)
+For examples of feedback on merge requests please look at already [closed merge requests](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests?assignee_id=&label_name=&milestone_id=&scope=&sort=&state=closed). Please ensure that your merge request meets the following contribution acceptance criteria.
-For examples of feedback on merge requests please look at already [closed merge requests](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests?assignee_id=&label_name=&milestone_id=&scope=&sort=&state=closed).
+## Contribution acceptance criteria
+
+1. The change is as small as possible (see the above paragraph for details)
+1. Include proper tests and make all tests pass (unless it contains a test exposing a bug in existing code)
+1. Can merge without problems (if not please use: `git rebase master`)
+1. Does not break any existing functionality
+1. Fixes one specific issue or implements one specific feature (do not combine things, send separate merge requests if needed)
+1. Keeps the GitLab code base clean and well structured
+1. Contains functionality we think other users will benefit from too
+1. Doesn't add configuration options since they complicate future changes
+1. Contains a single commit (please use `git rebase -i` to squash commits)
+1. It conforms to the following style guides
+
+## Style guides
+
+1. [Ruby style guide](https://github.com/bbatsov/ruby-style-guide)
+1. [Rails style guide](https://github.com/bbatsov/rails-style-guide)
+1. [CoffeeScript style guide](https://github.com/polarmobile/coffeescript-style-guide)
+1. [Shell command guidelines](doc/development/shell_commands.md)
diff --git a/Gemfile b/Gemfile
index b9ef6b1f46b..3955e685637 100644
--- a/Gemfile
+++ b/Gemfile
@@ -14,7 +14,9 @@ gem "protected_attributes"
gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'
-gem 'activerecord-deprecated_finders'
+
+# Default values for AR models
+gem "default_value_for", "~> 3.0.0"
# Supported DBs
gem "mysql2", group: :mysql
@@ -30,28 +32,28 @@ gem 'omniauth-github'
# Extracting information from a git repository
# Provide access to Gitlab::Git library
-gem "gitlab_git", "~> 4.0.0"
+gem "gitlab_git", '~> 5.6.0'
# Ruby/Rack Git Smart-HTTP Server Handler
gem 'gitlab-grack', '~> 2.0.0.pre', require: 'grack'
# LDAP Auth
-gem 'gitlab_omniauth-ldap', '1.0.3', require: "omniauth-ldap"
-
-# Syntax highlighter
-gem "gitlab-pygments.rb", '~> 0.5.4', require: 'pygments.rb'
+gem 'gitlab_omniauth-ldap', '1.0.4', require: "omniauth-ldap"
# Git Wiki
-gem "gitlab-gollum-lib", "~> 1.0.2", require: 'gollum-lib'
+gem "gitlab-gollum-lib", "~> 1.1.0", require: 'gollum-lib'
# Language detection
-gem "gitlab-linguist", "~> 2.9.6", require: "linguist"
+gem "gitlab-linguist", "~> 3.0.0", require: "linguist"
# API
gem "grape", "~> 0.6.1"
gem "grape-entity", "~> 0.3.0"
gem 'rack-cors', require: 'rack/cors'
+# Email validation
+gem "email_validator", "~> 1.4.0", :require => 'email_validator/strict'
+
# Format dates and times
# based on human-friendly examples
gem "stamp"
@@ -60,7 +62,7 @@ gem "stamp"
gem 'enumerize'
# Pagination
-gem "kaminari", "~> 0.14.1"
+gem "kaminari", "~> 0.15.1"
# HAML
gem "haml-rails"
@@ -125,6 +127,9 @@ gem "hipchat", "~> 0.14.0"
# Flowdock integration
gem "gitlab-flowdock-git-hook", "~> 0.4.2"
+# Gemnasium integration
+gem "gemnasium-gitlab-service", "~> 0.2"
+
# d3
gem "d3_rails", "~> 3.1.4"
@@ -137,6 +142,9 @@ gem "sanitize"
# Protect against bruteforcing
gem "rack-attack"
+# Ace editor
+gem 'ace-rails-ap'
+
gem "sass-rails"
gem "coffee-rails"
gem "uglifier"
@@ -159,7 +167,7 @@ group :development do
gem "annotate", "~> 2.6.0.beta2"
gem "letter_opener"
gem 'quiet_assets', '~> 1.0.1'
- gem 'rack-mini-profiler'
+ gem 'rack-mini-profiler', require: false
# Better errors handler
gem 'better_errors'
@@ -206,6 +214,10 @@ group :development, :test do
gem 'spork', '~> 1.0rc'
gem 'jasmine', '2.0.0.rc5'
+
+ gem "spring", '1.1.1'
+ gem "spring-commands-rspec", '1.0.1'
+ gem "spring-commands-spinach", '1.0.0'
end
group :test do
diff --git a/Gemfile.lock b/Gemfile.lock
index 80d98a50889..0b0e2aa7360 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -8,11 +8,12 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- actionmailer (4.0.2)
- actionpack (= 4.0.2)
+ ace-rails-ap (2.0.1)
+ actionmailer (4.0.3)
+ actionpack (= 4.0.3)
mail (~> 2.5.4)
- actionpack (4.0.2)
- activesupport (= 4.0.2)
+ actionpack (4.0.3)
+ activesupport (= 4.0.3)
builder (~> 3.1.0)
erubis (~> 2.7.0)
rack (~> 1.5.2)
@@ -21,16 +22,16 @@ GEM
actionpack (>= 4.0.0, < 5.0)
actionpack-page_caching (1.0.2)
actionpack (>= 4.0.0, < 5)
- activemodel (4.0.2)
- activesupport (= 4.0.2)
+ activemodel (4.0.3)
+ activesupport (= 4.0.3)
builder (~> 3.1.0)
- activerecord (4.0.2)
- activemodel (= 4.0.2)
+ activerecord (4.0.3)
+ activemodel (= 4.0.3)
activerecord-deprecated_finders (~> 1.0.2)
- activesupport (= 4.0.2)
+ activesupport (= 4.0.3)
arel (~> 4.0.0)
activerecord-deprecated_finders (1.0.3)
- activesupport (4.0.2)
+ activesupport (4.0.3)
i18n (~> 0.6, >= 0.6.4)
minitest (~> 4.2)
multi_json (~> 1.3)
@@ -42,7 +43,7 @@ GEM
annotate (2.6.0)
activerecord (>= 2.3.0)
rake (>= 0.8.7)
- arel (4.0.1)
+ arel (4.0.2)
asciidoctor (0.1.4)
atomic (1.1.14)
awesome_print (1.2.0)
@@ -100,6 +101,8 @@ GEM
daemons (1.1.9)
database_cleaner (1.2.0)
debug_inspector (0.0.2)
+ default_value_for (3.0.0)
+ activerecord (>= 3.2.0, < 5.0)
descendants_tracker (0.0.3)
devise (3.0.4)
bcrypt-ruby (~> 3.0)
@@ -114,6 +117,8 @@ GEM
email_spec (1.5.0)
launchy (~> 2.1)
mail (~> 2.2)
+ email_validator (1.4.0)
+ activemodel
enumerize (0.7.0)
activesupport (>= 3.2)
equalizer (0.0.8)
@@ -149,6 +154,8 @@ GEM
dotenv (>= 0.7)
thor (>= 0.13.6)
formatador (0.2.4)
+ gemnasium-gitlab-service (0.2.1)
+ rugged (~> 0.19)
gemoji (1.3.1)
gherkin-ruby (0.3.1)
racc
@@ -156,36 +163,32 @@ GEM
gitlab-flowdock-git-hook (0.4.2.2)
gitlab-grit (>= 2.4.1)
multi_json
- gitlab-gollum-lib (1.0.2)
+ gitlab-gollum-lib (1.1.0)
github-markdown (~> 0.5.3)
github-markup (>= 0.7.5, < 1.0.0)
gitlab-grit (~> 2.6.1)
- gitlab-pygments.rb (~> 0.5.4)
nokogiri (~> 1.5.9)
sanitize (~> 2.0.3)
stringex (~> 1.5.1)
gitlab-grack (2.0.0.pre)
rack (~> 1.5.1)
- gitlab-grit (2.6.3)
+ gitlab-grit (2.6.4)
charlock_holmes (~> 0.6.9)
diff-lcs (~> 1.1)
mime-types (~> 1.15)
posix-spawn (~> 0.3.6)
- gitlab-linguist (2.9.6)
+ gitlab-linguist (3.0.0)
charlock_holmes (~> 0.6.6)
escape_utils (~> 0.2.4)
- gitlab-pygments.rb (~> 0.5.4)
mime-types (~> 1.19)
- gitlab-pygments.rb (0.5.4)
- posix-spawn (~> 0.3.6)
- yajl-ruby (~> 1.1.0)
- gitlab_git (4.0.0)
+ gitlab_git (5.6.0)
activesupport (~> 4.0.0)
+ charlock_holmes (~> 0.6.9)
gitlab-grit (~> 2.6.1)
- gitlab-linguist (~> 2.9.5)
- gitlab-pygments.rb (~> 0.5.4)
+ gitlab-linguist (~> 3.0.0)
+ rugged (~> 0.19.0)
gitlab_meta (6.0)
- gitlab_omniauth-ldap (1.0.3)
+ gitlab_omniauth-ldap (1.0.4)
net-ldap (~> 0.3.1)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.1)
@@ -257,7 +260,7 @@ GEM
json (1.8.1)
jwt (0.1.8)
multi_json (>= 1.5)
- kaminari (0.14.1)
+ kaminari (0.15.1)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kgio (2.8.1)
@@ -279,7 +282,7 @@ GEM
minitest (4.7.5)
modernizr (2.6.2)
sprockets (~> 2.0)
- multi_json (1.8.2)
+ multi_json (1.8.4)
multi_xml (0.5.5)
multipart-post (1.2.0)
mysql2 (0.3.11)
@@ -321,8 +324,8 @@ GEM
cliver (~> 0.2.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0)
- polyglot (0.3.3)
- posix-spawn (0.3.6)
+ polyglot (0.3.4)
+ posix-spawn (0.3.8)
protected_attributes (1.0.5)
activemodel (>= 4.0.1, < 5.0)
pry (0.9.12.4)
@@ -339,7 +342,7 @@ GEM
rack-attack (2.3.0)
rack
rack-cors (0.2.9)
- rack-mini-profiler (0.1.31)
+ rack-mini-profiler (0.9.0)
rack (>= 1.1.3)
rack-mount (0.8.3)
rack (>= 1.0.0)
@@ -347,13 +350,13 @@ GEM
rack
rack-test (0.6.2)
rack (>= 1.0)
- rails (4.0.2)
- actionmailer (= 4.0.2)
- actionpack (= 4.0.2)
- activerecord (= 4.0.2)
- activesupport (= 4.0.2)
+ rails (4.0.3)
+ actionmailer (= 4.0.3)
+ actionpack (= 4.0.3)
+ activerecord (= 4.0.3)
+ activesupport (= 4.0.3)
bundler (>= 1.3.0, < 2.0)
- railties (= 4.0.2)
+ railties (= 4.0.3)
sprockets-rails (~> 2.0.0)
rails-observers (0.1.2)
activemodel (~> 4.0)
@@ -366,13 +369,13 @@ GEM
i18n
require_all
ruby-progressbar
- railties (4.0.2)
- actionpack (= 4.0.2)
- activesupport (= 4.0.2)
+ railties (4.0.3)
+ actionpack (= 4.0.3)
+ activesupport (= 4.0.3)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
raindrops (0.12.0)
- rake (10.1.0)
+ rake (10.1.1)
raphael-rails (2.1.2)
rb-fsevent (0.9.3)
rb-inotify (0.9.2)
@@ -421,6 +424,7 @@ GEM
ruby-hmac (0.4.0)
ruby-progressbar (1.2.0)
rubyntlm (0.1.1)
+ rugged (0.19.0)
safe_yaml (0.9.7)
sanitize (2.0.6)
nokogiri (>= 1.4.4)
@@ -470,6 +474,11 @@ GEM
railties (>= 3)
spinach (>= 0.4)
spork (1.0.0rc4)
+ spring (1.1.1)
+ spring-commands-rspec (1.0.1)
+ spring (>= 0.9.1)
+ spring-commands-spinach (1.0.0)
+ spring (>= 0.9.1)
sprockets (2.10.1)
hike (~> 1.2)
multi_json (~> 1.0)
@@ -541,15 +550,14 @@ GEM
websocket-driver (0.3.1)
xpath (2.0.0)
nokogiri (~> 1.3)
- yajl-ruby (1.1.0)
PLATFORMS
ruby
DEPENDENCIES
+ ace-rails-ap
actionpack-action_caching
actionpack-page_caching
- activerecord-deprecated_finders
acts-as-taggable-on
annotate (~> 2.6.0.beta2)
asciidoctor
@@ -564,25 +572,27 @@ DEPENDENCIES
coveralls
d3_rails (~> 3.1.4)
database_cleaner
+ default_value_for (~> 3.0.0)
devise (= 3.0.4)
devise-async (= 0.8.0)
email_spec
+ email_validator (~> 1.4.0)
enumerize
factory_girl_rails
ffaker
fog (~> 1.3.1)
font-awesome-rails (~> 3.2)
foreman
+ gemnasium-gitlab-service (~> 0.2)
gemoji (~> 1.3.0)
github-markup (~> 0.7.4)!
gitlab-flowdock-git-hook (~> 0.4.2)
- gitlab-gollum-lib (~> 1.0.2)
+ gitlab-gollum-lib (~> 1.1.0)
gitlab-grack (~> 2.0.0.pre)
- gitlab-linguist (~> 2.9.6)
- gitlab-pygments.rb (~> 0.5.4)
- gitlab_git (~> 4.0.0)
+ gitlab-linguist (~> 3.0.0)
+ gitlab_git (~> 5.6.0)
gitlab_meta (= 6.0)
- gitlab_omniauth-ldap (= 1.0.3)
+ gitlab_omniauth-ldap (= 1.0.4)
gon (~> 5.0.0)
grape (~> 0.6.1)
grape-entity (~> 0.3.0)
@@ -597,7 +607,7 @@ DEPENDENCIES
jquery-rails (= 2.1.3)
jquery-turbolinks
jquery-ui-rails (= 2.0.2)
- kaminari (~> 0.14.1)
+ kaminari (~> 0.15.1)
launchy
letter_opener
minitest (~> 4.7.0)
@@ -638,6 +648,9 @@ DEPENDENCIES
slim
spinach-rails
spork (~> 1.0rc)
+ spring (= 1.1.1)
+ spring-commands-rspec (= 1.0.1)
+ spring-commands-spinach (= 1.0.0)
stamp
state_machine
test_after_commit
diff --git a/LICENSE b/LICENSE
index 7cecc2485f4..8ebd322ffc8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011 Dmitriy Zaporozhets
+Copyright (c) 2011-2014 Dmitriy Zaporozhets
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/MAINTENANCE.md b/MAINTENANCE.md
index 0dca62974c3..95d9f0a5e7b 100644
--- a/MAINTENANCE.md
+++ b/MAINTENANCE.md
@@ -21,3 +21,5 @@ release where the minor version is increased numerically by increments of one
(eg. `5.0 -> 5.1`).
We encourage everyone to run the latest stable release to ensure that you can easily upgrade to the most secure and feature rich GitLab experience. In order to make sure you can easily run the most recent stable release, we are working hard to keep the update process simple and reliable.
+
+More information about the release procedures can be found in the doc/release directory.
diff --git a/PROCESS.md b/PROCESS.md
index 9486c9123e7..bf757025c40 100644
--- a/PROCESS.md
+++ b/PROCESS.md
@@ -73,7 +73,7 @@ Thanks for the issue report. Please reformat your issue to conform to the issue
### Feature requests
-Thanks for your interest in GitLab. We don't use the GitHub issue tracker for feature requests. Please use http://feedback.gitlab.com/ for this purpose or create a merge request implementing this feature. Have a look at the \[contribution guidelines\]\(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) for more information.
+Thanks for your interest in GitLab. We don't use the issue tracker for feature requests. Please use http://feedback.gitlab.com/ for this purpose or create a merge request implementing this feature. Have a look at the \[contribution guidelines\]\(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) for more information.
### Issue report for old version
@@ -81,7 +81,7 @@ Thanks for the issue report but we only support issues for the latest stable ver
### Support requests and configuration questions
-Thanks for your interest in GitLab. We don't use the GitHub issue tracker for support requests and configuration questions. Please use the \[support forum\]\(https://groups.google.com/forum/#!forum/gitlabhq), \[Stack Overflow\]\(http://stackoverflow.com/questions/tagged/gitlab), the unofficial #gitlab IRC channel on Freenode or the http://www.gitlab.com paid services for this purpose. Have a look at the \[contribution guidelines\]\(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) for more information.
+Thanks for your interest in GitLab. We don't use the issue tracker for support requests and configuration questions. Please use the \[support forum\]\(https://groups.google.com/forum/#!forum/gitlabhq), \[Stack Overflow\]\(http://stackoverflow.com/questions/tagged/gitlab), the unofficial #gitlab IRC channel on Freenode or the http://www.gitlab.com paid services for this purpose. Have a look at the \[contribution guidelines\]\(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) for more information.
### Code format
diff --git a/README.md b/README.md
index c151f966c5a..02766a334ff 100644
--- a/README.md
+++ b/README.md
@@ -4,26 +4,21 @@
![animated-screenshots](https://gist.github.com/fnkr/2f9badd56bfe0ed04ee7/raw/4f48806fbae97f556c2f78d8c2d299c04500cb0d/compiled.gif)
-### GitLab allows you to
- * keep your code secure on your own server
- * manage repositories, users and access permissions
- * communicate through issues, line-comments and wiki pages
- * perform code review with merge requests
+### Gitlab is open source software to collaborate on code
-### GitLab is
-
-* powered by Ruby on Rails
-* completely free and open source (MIT license)
-* used by more than 25.000 organizations to keep their code secure
+* Manage git repositories with fine grained access controls that keep your code secure
+* Perform code reviews and enhance collaboration with merge requests
+* Each project can also have an issue tracker and a wiki
+* Used by more than 50,000 organizations, GitLab is the most popular solution to manage git repositories on-premises
+* Completely free and open source (MIT Expat license)
+* Powered by Ruby on Rails
### Code status
-* [![build status](http://ci.gitlab.org/projects/1/status.png?ref=master)](http://ci.gitlab.org/projects/1?ref=master) on ci.gitlab.org (master branch)
+* [![build status](https://ci.gitlab.org/projects/1/status.png?ref=master)](https://ci.gitlab.org/projects/1?ref=master) on ci.gitlab.org (master branch)
* [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.png)](https://codeclimate.com/github/gitlabhq/gitlabhq)
-* [![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.png)](https://gemnasium.com/gitlabhq/gitlabhq) this button can be yellow (small updates are available) but must not be red (a security fix or an important update is available), gems are updated in major releases of GitLab.
-
* [![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq)
### Resources
@@ -36,6 +31,8 @@
* [GitLab CI](https://gitlab.com/gitlab-org/gitlab-ci/blob/master/README.md) is a continuous integration (CI) server that is easy to integrate with GitLab.
+* Unofficial third-party [iPhone app](http://gitlabcontrol.com/) and [Android app](https://play.google.com/store/apps/details?id=com.bd.gitlab&hl=en) for GitLab
+
### Requirements
* Ubuntu/Debian**
@@ -50,13 +47,17 @@
#### Official installation methods
-* [Manual installation guide for a production server](doc/install/installation.md)
+* [GitLab packages (beta)](https://www.gitlab.com/downloads/) These packages contain GitLab and all its depencies (PostgreSQL, Redis, Nginx, Unicorn, etc.). They are made with [omnibus-gitlab](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md) that also contains the installation instructions. These packages currently support a reduced selection of GitLab's normal features. For instance, it is not yet possible to create/restore application backups or to use HTTPS.
+
+* [GitLab virtual machine images](https://www.gitlab.com/downloads/) contain an operating system and a preinstalled GitLab. They are made with [GitLab Packer](https://gitlab.com/gitlab-org/gitlab-packer/blob/master/README.md) that also contains the installation instructions.
* [GitLab Chef Cookbook](https://gitlab.com/gitlab-org/cookbook-gitlab/blob/master/README.md) This cookbook can be used both for development installations and production installations. If you want to [contribute](CONTRIBUTE.md) to GitLab we suggest you follow the [development installation on a virtual machine with Vagrant](https://gitlab.com/gitlab-org/cookbook-gitlab/blob/master/doc/development.md) instructions to install all testing dependencies.
+* [Manual installation guide](doc/install/installation.md) This guide to set up a production server offers detailed and complete step-by-step instructions.
+
#### Third party one-click installers
-* [Digital Ocean 1-Click Application Install](https://www.digitalocean.com/blog_posts/host-your-git-repositories-in-55-seconds-with-gitlab) Have a new server up in 55 seconds. Digital Ocean uses SSD disks which is great for an IO intensive app such as GitLab.
+* [Digital Ocean 1-Click Application Install](https://www.digitalocean.com/blog_posts/host-your-git-repositories-in-55-seconds-with-gitlab) Have a new server up in 55 seconds. Digital Ocean uses SSD disks which is great for an IO intensive app such as GitLab. We recommend selecting a droplet with [1GB of memory](https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md).
* [BitNami one-click installers](http://bitnami.com/stack/gitlab) This package contains both GitLab and GitLab CI. It is available as installer, virtual machine or for cloud hosting providers (Amazon Web Services/Azure/etc.).
@@ -68,11 +69,9 @@
### New versions and upgrading
-Since 2011 GitLab is released on the 22nd of every month. Every new release includes an upgrade guide.
-
-* [Upgrade guides](doc/update)
+Since 2011 GitLab is released on the 22nd of every month. Every new release includes an [upgrade guide](doc/update) and new features are detailed in the [Changelog](CHANGELOG).
-* [Changelog](CHANGELOG)
+It is recommended to follow a monthly upgrade schedule. Security releases come out when needed. For more information about the release process see the documentation for [monthly](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/release/monthly.md) and [security](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/release/security.md) releases.
* Features that will be in the next releases are listed on [the feedback and suggestions forum](http://feedback.gitlab.com/forums/176466-general) with the status [started](http://feedback.gitlab.com/forums/176466-general/status/796456) and [completed](http://feedback.gitlab.com/forums/176466-general/status/796457).
@@ -145,16 +144,18 @@ or start each component separately
* [Feedback and suggestions forum](http://feedback.gitlab.com) is the place to propose and discuss new features for GitLab.
-* [Contributing guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/masterCONTRIBUTING.md) describes how to submit merge requests and issues. Pull requests and issues not in line with the guidelines in this document will be closed.
+* [Contributing guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md) describes how to submit merge requests and issues. Pull requests and issues not in line with the guidelines in this document will be closed.
* [Support subscription](http://www.gitlab.com/subscription/) connects you to the knowledge of GitLab experts that will resolve your issues and answer your questions.
* [Consultancy](http://www.gitlab.com/consultancy/) from the GitLab experts for installations, upgrades and customizations.
-* [#gitlab IRC channel](http://www.freenode.net/) on Freenode to get in touch with other GitLab users and get help, it's managed by James Newton, Drew Blessing and Sam Gleske
+* [#gitlab IRC channel](http://www.freenode.net/) on Freenode to get in touch with other GitLab users and get help, it's managed by James Newton (newton), Drew Blessing (dblessing), and Sam Gleske (sag47).
* [Book](http://www.packtpub.com/gitlab-repository-management/book) written by GitLab enthusiast Jonathan M. Hethey is unofficial but it offers a good overview.
+* [Gitter chat room](https://gitter.im/gitlabhq/gitlabhq#) here you can ask questions when you need help.
+
### Getting in touch
diff --git a/VERSION b/VERSION
index 24f0dc3141e..998707b421c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.5.0.pre
+6.7.0.pre
diff --git a/app/assets/images/ajax_loader.gif b/app/assets/images/ajax_loader.gif
deleted file mode 100644
index 8a97c91987a..00000000000
--- a/app/assets/images/ajax_loader.gif
+++ /dev/null
Binary files differ
diff --git a/app/assets/images/ajax_loader_gray.gif b/app/assets/images/ajax_loader_gray.gif
deleted file mode 100644
index af3f618bd0b..00000000000
--- a/app/assets/images/ajax_loader_gray.gif
+++ /dev/null
Binary files differ
diff --git a/app/assets/images/ajax_loader_tree.gif b/app/assets/images/ajax_loader_tree.gif
deleted file mode 100644
index 99d5a0f37f3..00000000000
--- a/app/assets/images/ajax_loader_tree.gif
+++ /dev/null
Binary files differ
diff --git a/app/assets/images/bg-header.png b/app/assets/images/bg-header.png
index 8759ca589fc..9ecdaf4e2d5 100644
--- a/app/assets/images/bg-header.png
+++ b/app/assets/images/bg-header.png
Binary files differ
diff --git a/app/assets/images/dark-scheme-preview.png b/app/assets/images/dark-scheme-preview.png
index 055a9069b63..6dac6cd8ca1 100644
--- a/app/assets/images/dark-scheme-preview.png
+++ b/app/assets/images/dark-scheme-preview.png
Binary files differ
diff --git a/app/assets/images/file_txt.png b/app/assets/images/file_txt.png
index f3638cb4e1e..b3230b5add0 100644
--- a/app/assets/images/file_txt.png
+++ b/app/assets/images/file_txt.png
Binary files differ
diff --git a/app/assets/images/icon-link.png b/app/assets/images/icon-link.png
new file mode 100644
index 00000000000..32ade0fe9a3
--- /dev/null
+++ b/app/assets/images/icon-link.png
Binary files differ
diff --git a/app/assets/images/icon-search.png b/app/assets/images/icon-search.png
index 7632915cacc..084b89e3a7c 100644
--- a/app/assets/images/icon-search.png
+++ b/app/assets/images/icon-search.png
Binary files differ
diff --git a/app/assets/images/images.png b/app/assets/images/images.png
index 973d3bdd39d..da91f6b1f4c 100644
--- a/app/assets/images/images.png
+++ b/app/assets/images/images.png
Binary files differ
diff --git a/app/assets/images/logo-black.png b/app/assets/images/logo-black.png
index 31c4a63cd08..4a96572d570 100644
--- a/app/assets/images/logo-black.png
+++ b/app/assets/images/logo-black.png
Binary files differ
diff --git a/app/assets/images/logo-white.png b/app/assets/images/logo-white.png
index 8a4ec851b1d..bc2ef601a53 100644
--- a/app/assets/images/logo-white.png
+++ b/app/assets/images/logo-white.png
Binary files differ
diff --git a/app/assets/images/monokai-scheme-preview.png b/app/assets/images/monokai-scheme-preview.png
index 9477941778e..3aeed886a02 100644
--- a/app/assets/images/monokai-scheme-preview.png
+++ b/app/assets/images/monokai-scheme-preview.png
Binary files differ
diff --git a/app/assets/images/no_avatar.png b/app/assets/images/no_avatar.png
index 752d26adba7..dac3ab1bb89 100644
--- a/app/assets/images/no_avatar.png
+++ b/app/assets/images/no_avatar.png
Binary files differ
diff --git a/app/assets/images/no_group_avatar.png b/app/assets/images/no_group_avatar.png
new file mode 100644
index 00000000000..a97d4515982
--- /dev/null
+++ b/app/assets/images/no_group_avatar.png
Binary files differ
diff --git a/app/assets/images/onion_skin_sprites.gif b/app/assets/images/onion_skin_sprites.gif
index 85d20260edc..337aa1bfb63 100644
--- a/app/assets/images/onion_skin_sprites.gif
+++ b/app/assets/images/onion_skin_sprites.gif
Binary files differ
diff --git a/app/assets/images/solarized-dark-scheme-preview.png b/app/assets/images/solarized-dark-scheme-preview.png
index 728964bc4c8..ae092ab5213 100644
--- a/app/assets/images/solarized-dark-scheme-preview.png
+++ b/app/assets/images/solarized-dark-scheme-preview.png
Binary files differ
diff --git a/app/assets/images/swipemode_sprites.gif b/app/assets/images/swipemode_sprites.gif
index 327b3c31ffd..b010b4e4482 100644
--- a/app/assets/images/swipemode_sprites.gif
+++ b/app/assets/images/swipemode_sprites.gif
Binary files differ
diff --git a/app/assets/images/switch_icon.png b/app/assets/images/switch_icon.png
index 7c11f206593..6b8bde41bc9 100644
--- a/app/assets/images/switch_icon.png
+++ b/app/assets/images/switch_icon.png
Binary files differ
diff --git a/app/assets/images/trans_bg.gif b/app/assets/images/trans_bg.gif
index c7e98e044f5..5f6ed04a43c 100644
--- a/app/assets/images/trans_bg.gif
+++ b/app/assets/images/trans_bg.gif
Binary files differ
diff --git a/app/assets/images/white-scheme-preview.png b/app/assets/images/white-scheme-preview.png
index 67eb8763044..d1866e00158 100644
--- a/app/assets/images/white-scheme-preview.png
+++ b/app/assets/images/white-scheme-preview.png
Binary files differ
diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee
index 5f4a38ebbd0..fafa5cdfaa4 100644
--- a/app/assets/javascripts/api.js.coffee
+++ b/app/assets/javascripts/api.js.coffee
@@ -3,6 +3,7 @@
user_path: "/api/:version/users/:id.json"
notes_path: "/api/:version/projects/:id/notes.json"
namespaces_path: "/api/:version/namespaces.json"
+ project_users_path: "/api/:version/projects/:id/users.json"
# Get 20 (depends on api) recent notes
# and sort the ascending from oldest to newest
@@ -50,6 +51,23 @@
).done (users) ->
callback(users)
+ # Return project users list. Filtered by query
+ # Only active users retrieved
+ projectUsers: (project_id, query, callback) ->
+ url = Api.buildUrl(Api.project_users_path)
+ url = url.replace(':id', project_id)
+
+ $.ajax(
+ url: url
+ data:
+ private_token: gon.api_token
+ search: query
+ per_page: 20
+ active: true
+ dataType: "json"
+ ).done (users) ->
+ callback(users)
+
# Return namespaces list. Filtered by query
namespaces: (query, callback) ->
url = Api.buildUrl(Api.namespaces_path)
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index aa2db1fc93c..4a393dbfe81 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -24,7 +24,8 @@
//= require g.raphael-min
//= require g.bar-min
//= require branch-graph
-//= require ace-src-noconflict/ace
+//= require highlightjs.min
+//= require ace/ace
//= require_tree .
//= require d3
//= require underscore
diff --git a/app/assets/javascripts/blob.js.coffee b/app/assets/javascripts/blob.js.coffee
index 99cb1cec911..584f6faea16 100644
--- a/app/assets/javascripts/blob.js.coffee
+++ b/app/assets/javascripts/blob.js.coffee
@@ -17,7 +17,7 @@ class BlobView
setHash(hash)
e.preventDefault()
-
+
# See if there are lines selected
# "#L12" and "#L34-56" supported
highlightBlobLines = (e) ->
@@ -64,7 +64,7 @@ class BlobView
nodes.attr("id", hash)
# initialize multi-line select
- $("#tree-content-holder .line_numbers a[id^=L]").on("click", handleMultiSelect)
+ $("#tree-content-holder .line-numbers a[id^=L]").on("click", handleMultiSelect)
# Highlight the correct lines on load
highlightBlobLines()
diff --git a/app/assets/javascripts/commit.js.coffee b/app/assets/javascripts/commit.js.coffee
index 9f55a1e6368..5f53439ca4b 100644
--- a/app/assets/javascripts/commit.js.coffee
+++ b/app/assets/javascripts/commit.js.coffee
@@ -1,6 +1,6 @@
class Commit
constructor: ->
- $('.files .file').each ->
+ $('.files .diff-file').each ->
new CommitFile(this)
@Commit = Commit
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index e264e281309..46d6db0f05c 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -4,6 +4,7 @@ $ ->
class Dispatcher
constructor: () ->
@initSearch()
+ @initHighlight()
@initPageScripts()
initPageScripts: ->
@@ -18,6 +19,8 @@ class Dispatcher
switch page
when 'projects:issues:index'
Issues.init()
+ when 'projects:issues:show'
+ new Issue()
when 'projects:issues:new', 'projects:merge_requests:new'
GitLab.GfmAutoComplete.setup()
when 'dashboard:show'
@@ -47,5 +50,16 @@ class Dispatcher
initSearch: ->
- autocomplete_json = $('.search-autocomplete-json').data('autocomplete-opts')
- new SearchAutocomplete(autocomplete_json)
+ opts = $('.search-autocomplete-opts')
+ path = opts.data('autocomplete-path')
+ project_id = opts.data('autocomplete-project-id')
+ project_ref = opts.data('autocomplete-project-ref')
+
+ new SearchAutocomplete(path, project_id, project_ref)
+
+ initHighlight: ->
+ $('.highlight pre code').each (i, e) ->
+ hljs.highlightBlock(e)
+ $(e).html($.map($(e).html().split("\n"), (line, i) ->
+ "<div class='line' id='LC" + (i + 1) + "'>" + line + "</div>"
+ ).join("\n"))
diff --git a/app/assets/javascripts/groups.js.coffee b/app/assets/javascripts/groups.js.coffee
index c0ffccd8f70..7850eb14e74 100644
--- a/app/assets/javascripts/groups.js.coffee
+++ b/app/assets/javascripts/groups.js.coffee
@@ -4,3 +4,14 @@ class GroupMembers
$(this).fadeOut()
@GroupMembers = GroupMembers
+
+$ ->
+ # avatar
+ $('.js-choose-group-avatar-button').bind "click", ->
+ form = $(this).closest("form")
+ form.find(".js-group-avatar-input").click()
+
+ $('.js-group-avatar-input').bind "change", ->
+ form = $(this).closest("form")
+ filename = $(this).val().replace(/^.*[\\\/]/, '')
+ form.find(".js-avatar-filename").text(filename) \ No newline at end of file
diff --git a/app/assets/javascripts/issue.js.coffee b/app/assets/javascripts/issue.js.coffee
new file mode 100644
index 00000000000..36935a0a159
--- /dev/null
+++ b/app/assets/javascripts/issue.js.coffee
@@ -0,0 +1,9 @@
+class Issue
+ constructor: ->
+ $('.edit-issue.inline-update input[type="submit"]').hide()
+ $(".issue-box .inline-update").on "change", "select", ->
+ $(this).submit()
+ $(".issue-box .inline-update").on "change", "#issue_assignee_id", ->
+ $(this).submit()
+
+@Issue = Issue
diff --git a/app/assets/javascripts/issues.js.coffee b/app/assets/javascripts/issues.js.coffee
index 5e60b2775a6..e2f1bc743f7 100644
--- a/app/assets/javascripts/issues.js.coffee
+++ b/app/assets/javascripts/issues.js.coffee
@@ -29,10 +29,10 @@
$('#filter_issue_search').val($('#issue_search').val())
initSelects: ->
- $("select#update_status").select2()
- $("select#update_assignee_id").select2()
- $("select#update_milestone_id").select2()
- $("select#label_name").select2()
+ $("select#update_status").select2(width: 'resolve', dropdownAutoWidth: true)
+ $("select#update_assignee_id").select2(width: 'resolve', dropdownAutoWidth: true)
+ $("select#update_milestone_id").select2(width: 'resolve', dropdownAutoWidth: true)
+ $("select#label_name").select2(width: 'resolve', dropdownAutoWidth: true)
$("#milestone_id, #assignee_id, #label_name").on "change", ->
$(this).closest("form").submit()
@@ -77,9 +77,3 @@
$("#update_issues_ids").val []
$(".issues_bulk_update").hide()
$(".issues-filters").show()
-
-$ ->
- $('.edit-issue.inline-update input[type="submit"]').hide();
- $("body").on "change", ".edit-issue.inline-update select", ->
- $(this).submit()
-
diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee
index 9cf4dba815b..69c731ff1a1 100644
--- a/app/assets/javascripts/main.js.coffee
+++ b/app/assets/javascripts/main.js.coffee
@@ -117,11 +117,11 @@ $ ->
# Commit show suppressed diff
- $(".content").on "click", ".supp_diff_link", ->
+ $(".diff-content").on "click", ".supp_diff_link", ->
$(@).next('table').show()
$(@).remove()
- $(".content").on "click", ".js-details-expand", ->
+ $(".diff-content").on "click", ".js-details-expand", ->
$(@).next('.js-details-contain').removeClass("hide")
$(@).remove()
diff --git a/app/assets/javascripts/merge_request.js.coffee b/app/assets/javascripts/merge_request.js.coffee
new file mode 100644
index 00000000000..c0f83c93021
--- /dev/null
+++ b/app/assets/javascripts/merge_request.js.coffee
@@ -0,0 +1,103 @@
+class MergeRequest
+ constructor: (@opts) ->
+ @initContextWidget()
+ this.$el = $('.merge-request')
+ @diffs_loaded = if @opts.action == 'diffs' then true else false
+ @commits_loaded = false
+
+ this.activateTab(@opts.action)
+
+ this.bindEvents()
+
+ this.initMergeWidget()
+ this.$('.show-all-commits').on 'click', =>
+ this.showAllCommits()
+
+ modal = $('#modal_merge_info').modal(show: false)
+
+ disableButtonIfEmptyField '#merge_commit_message', '.accept_merge_request'
+
+
+ # Local jQuery finder
+ $: (selector) ->
+ this.$el.find(selector)
+
+ initContextWidget: ->
+ $('.edit-merge_request.inline-update input[type="submit"]').hide()
+ $(".issue-box .inline-update").on "change", "select", ->
+ $(this).submit()
+ $(".issue-box .inline-update").on "change", "#merge_request_assignee_id", ->
+ $(this).submit()
+
+ initMergeWidget: ->
+ this.showState( @opts.current_status )
+
+ if this.$('.automerge_widget').length and @opts.check_enable
+ $.get @opts.url_to_automerge_check, (data) =>
+ this.showState( data.merge_status )
+ , 'json'
+
+ if @opts.ci_enable
+ $.get @opts.url_to_ci_check, (data) =>
+ this.showCiState data.status
+ , 'json'
+
+ bindEvents: ->
+ this.$('.nav-tabs').on 'click', 'a', (event) =>
+ a = $(event.currentTarget)
+
+ href = a.attr('href')
+ History.replaceState {path: href}, document.title, href
+
+ event.preventDefault()
+
+ this.$('.nav-tabs').on 'click', 'li', (event) =>
+ this.activateTab($(event.currentTarget).data('action'))
+
+ this.$('.accept_merge_request').on 'click', ->
+ $('.automerge_widget.can_be_merged').hide()
+ $('.merge-in-progress').show()
+
+ activateTab: (action) ->
+ this.$('.nav-tabs li').removeClass 'active'
+ this.$('.tab-content').hide()
+ switch action
+ when 'diffs'
+ this.$('.nav-tabs .diffs-tab').addClass 'active'
+ this.loadDiff() unless @diffs_loaded
+ this.$('.diffs').show()
+ else
+ this.$('.nav-tabs .notes-tab').addClass 'active'
+ this.$('.notes').show()
+
+ showState: (state) ->
+ $('.automerge_widget').hide()
+ $('.automerge_widget.' + state).show()
+
+ showCiState: (state) ->
+ $('.ci_widget').hide()
+ $('.ci_widget.ci-' + state).show()
+
+ loadDiff: (event) ->
+ $.ajax
+ type: 'GET'
+ url: this.$('.nav-tabs .diffs-tab a').attr('href')
+ beforeSend: =>
+ this.$('.status').addClass 'loading'
+ complete: =>
+ @diffs_loaded = true
+ this.$('.status').removeClass 'loading'
+ success: (data) =>
+ this.$(".diffs").html(data.html)
+ dataType: 'json'
+
+ showAllCommits: ->
+ this.$('.first-commits').remove()
+ this.$('.all-commits').removeClass 'hide'
+
+ alreadyOrCannotBeMerged: ->
+ this.$('.automerge_widget').hide()
+ this.$('.merge-in-progress').hide()
+ this.$('.automerge_widget.already_cannot_be_merged').show()
+
+this.MergeRequest = MergeRequest
diff --git a/app/assets/javascripts/merge_requests.js.coffee b/app/assets/javascripts/merge_requests.js.coffee
index 047683f00b2..9201c84c5ed 100644
--- a/app/assets/javascripts/merge_requests.js.coffee
+++ b/app/assets/javascripts/merge_requests.js.coffee
@@ -6,97 +6,3 @@
$('#milestone_id').select2()
$('#milestone_id, #assignee_id').on 'change', ->
$(this).closest('form').submit()
-
-class MergeRequest
-
- constructor: (@opts) ->
- this.$el = $('.merge-request')
- @diffs_loaded = if @opts.action == 'diffs' then true else false
- @commits_loaded = false
-
- this.activateTab(@opts.action)
-
- this.bindEvents()
-
- this.initMergeWidget()
- this.$('.show-all-commits').on 'click', =>
- this.showAllCommits()
-
- modal = $('#modal_merge_info').modal(show: false)
-
- # Local jQuery finder
- $: (selector) ->
- this.$el.find(selector)
-
- initMergeWidget: ->
- this.showState( @opts.current_status )
-
- if this.$('.automerge_widget').length and @opts.check_enable
- $.get @opts.url_to_automerge_check, (data) =>
- this.showState( data.merge_status )
- , 'json'
-
- if @opts.ci_enable
- $.get @opts.url_to_ci_check, (data) =>
- this.showCiState data.status
- , 'json'
-
- bindEvents: ->
- this.$('.nav-tabs').on 'click', 'a', (event) =>
- a = $(event.currentTarget)
-
- href = a.attr('href')
- History.replaceState {path: href}, document.title, href
-
- event.preventDefault()
-
- this.$('.nav-tabs').on 'click', 'li', (event) =>
- this.activateTab($(event.currentTarget).data('action'))
-
- this.$('.accept_merge_request').on 'click', ->
- $('.automerge_widget.can_be_merged').hide()
- $('.merge-in-progress').show()
-
- activateTab: (action) ->
- this.$('.nav-tabs li').removeClass 'active'
- this.$('.tab-content').hide()
- switch action
- when 'diffs'
- this.$('.nav-tabs .diffs-tab').addClass 'active'
- this.loadDiff() unless @diffs_loaded
- this.$('.diffs').show()
- else
- this.$('.nav-tabs .notes-tab').addClass 'active'
- this.$('.notes').show()
-
- showState: (state) ->
- $('.automerge_widget').hide()
- $('.automerge_widget.' + state).show()
-
- showCiState: (state) ->
- $('.ci_widget').hide()
- $('.ci_widget.ci-' + state).show()
-
- loadDiff: (event) ->
- $.ajax
- type: 'GET'
- url: this.$('.nav-tabs .diffs-tab a').attr('href')
- beforeSend: =>
- this.$('.status').addClass 'loading'
- complete: =>
- @diffs_loaded = true
- this.$('.status').removeClass 'loading'
- success: (data) =>
- this.$(".diffs").html(data.html)
- dataType: 'json'
-
- showAllCommits: ->
- this.$('.first-commits').remove()
- this.$('.all-commits').removeClass 'hide'
-
- alreadyOrCannotBeMerged: ->
- this.$('.automerge_widget').hide()
- this.$('.merge-in-progress').hide()
- this.$('.automerge_widget.already_cannot_be_merged').show()
-
-this.MergeRequest = MergeRequest
diff --git a/app/assets/javascripts/notes.js.coffee b/app/assets/javascripts/notes.js.coffee
index 69e9e67f712..d200d962cae 100644
--- a/app/assets/javascripts/notes.js.coffee
+++ b/app/assets/javascripts/notes.js.coffee
@@ -94,6 +94,9 @@ class Notes
if @isNewNote(note)
@note_ids.push(note.id)
$('ul.main-notes-list').append(note.html)
+ code = "#note_" + note.id + " .highlight pre code"
+ $(code).each (i, e) ->
+ hljs.highlightBlock(e)
###
@@ -253,6 +256,9 @@ class Notes
updateNote: (xhr, note, status) =>
note_li = $("#note_" + note.id)
note_li.replaceWith(note.html)
+ code = "#note_" + note.id + " .highlight pre code"
+ $(code).each (i, e) ->
+ hljs.highlightBlock(e)
###
Called in response to clicking the edit note link
diff --git a/app/assets/javascripts/profile.js.coffee b/app/assets/javascripts/profile.js.coffee
index 744f3086d55..b37a78ac197 100644
--- a/app/assets/javascripts/profile.js.coffee
+++ b/app/assets/javascripts/profile.js.coffee
@@ -26,3 +26,5 @@ $ ->
form = $(this).closest("form")
filename = $(this).val().replace(/^.*[\\\/]/, '')
form.find(".js-avatar-filename").text(filename)
+
+ $('.profile-groups-avatars').tooltip("placement": "top") \ No newline at end of file
diff --git a/app/assets/javascripts/project_users_select.js.coffee b/app/assets/javascripts/project_users_select.js.coffee
new file mode 100644
index 00000000000..03fad41c490
--- /dev/null
+++ b/app/assets/javascripts/project_users_select.js.coffee
@@ -0,0 +1,63 @@
+@projectUsersSelect =
+ init: ->
+ $('.ajax-project-users-select').each (i, select) ->
+ project_id = $('body').data('project-id')
+
+ $(select).select2
+ placeholder: $(select).data('placeholder') || "Search for a user"
+ multiple: $(select).hasClass('multiselect')
+ minimumInputLength: 0
+ query: (query) ->
+ Api.projectUsers project_id, query.term, (users) ->
+ data = { results: users }
+
+ nullUser = {
+ name: 'Unassigned',
+ avatar: null,
+ username: 'none',
+ id: ''
+ }
+
+ data.results.unshift(nullUser)
+
+ query.callback(data)
+
+ initSelection: (element, callback) ->
+ id = $(element).val()
+ if id isnt ""
+ Api.user(id, callback)
+
+
+ formatResult: projectUsersSelect.projectUserFormatResult
+ formatSelection: projectUsersSelect.projectUserFormatSelection
+ dropdownCssClass: "ajax-project-users-dropdown"
+ dropdownAutoWidth: true
+ escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results
+ m
+
+ projectUserFormatResult: (user) ->
+ if user.avatar_url
+ avatar = user.avatar_url
+ else if gon.gravatar_enabled
+ avatar = gon.gravatar_url
+ avatar = avatar.replace('%{hash}', md5(user.email))
+ avatar = avatar.replace('%{size}', '24')
+ else
+ avatar = gon.relative_url_root + "/assets/no_avatar.png"
+
+ if user.id == ''
+ avatarMarkup = ''
+ else
+ avatarMarkup = "<div class='user-image'><img class='avatar s24' src='#{avatar}'></div>"
+
+ "<div class='user-result'>
+ #{avatarMarkup}
+ <div class='user-name'>#{user.name}</div>
+ <div class='user-username'>#{user.username}</div>
+ </div>"
+
+ projectUserFormatSelection: (user) ->
+ user.name
+
+$ ->
+ projectUsersSelect.init()
diff --git a/app/assets/javascripts/search_autocomplete.js.coffee b/app/assets/javascripts/search_autocomplete.js.coffee
index 3418690e109..e144dfa1d68 100644
--- a/app/assets/javascripts/search_autocomplete.js.coffee
+++ b/app/assets/javascripts/search_autocomplete.js.coffee
@@ -1,7 +1,12 @@
class SearchAutocomplete
- constructor: (json) ->
+ constructor: (search_autocomplete_path, project_id, project_ref) ->
+ project_id = '' unless project_id
+ project_ref = '' unless project_ref
+ query = "?project_id=" + project_id + "&project_ref=" + project_ref
+
$("#search").autocomplete
- source: json
+ source: search_autocomplete_path + query
+ minLength: 1
select: (event, ui) ->
location.href = ui.item.url
diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee
index 92cd3a9905b..ce9a505b1e3 100644
--- a/app/assets/javascripts/users_select.js.coffee
+++ b/app/assets/javascripts/users_select.js.coffee
@@ -1,11 +1,13 @@
$ ->
userFormatResult = (user) ->
- if user.avatar
- avatar = user.avatar.url
- else
+ if user.avatar_url
+ avatar = user.avatar_url
+ else if gon.gravatar_enabled
avatar = gon.gravatar_url
avatar = avatar.replace('%{hash}', md5(user.email))
avatar = avatar.replace('%{size}', '24')
+ else
+ avatar = gon.relative_url_root + "/assets/no_avatar.png"
"<div class='user-result'>
<div class='user-image'><img class='avatar s24' src='#{avatar}'></div>
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index eb8bc0d63c0..33466714681 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -5,6 +5,7 @@
*= require jquery.ui.gitlab
*= require jquery.atwho
*= require select2
+ *= require highlightjs.min
*= require_self
*/
@@ -36,8 +37,10 @@
@import "generic/issue_box.scss";
@import "generic/files.scss";
@import "generic/lists.scss";
+@import "generic/flash.scss";
@import "generic/forms.scss";
@import "generic/selects.scss";
+@import "generic/highlight.scss";
/**
* Page specific styles (issues, projects etc):
@@ -45,6 +48,7 @@
@import "sections/header.scss";
@import "sections/nav.scss";
@import "sections/commits.scss";
+@import "sections/diff.scss";
@import "sections/issues.scss";
@import "sections/projects.scss";
@import "sections/snippets.scss";
@@ -63,9 +67,10 @@
@import "sections/wall.scss";
@import "sections/dashboard.scss";
@import "sections/stat_graph.scss";
+@import "sections/groups.scss";
/**
- * Code ighlight
+ * Code highlight
*/
@import "highlight/white.scss";
@import "highlight/dark.scss";
diff --git a/app/assets/stylesheets/generic/blocks.scss b/app/assets/stylesheets/generic/blocks.scss
index 1cbd7439835..3536a68f416 100644
--- a/app/assets/stylesheets/generic/blocks.scss
+++ b/app/assets/stylesheets/generic/blocks.scss
@@ -2,3 +2,18 @@
background: #f9f9f9;
padding: 15px;
}
+
+.centered-light-block {
+ text-align: center;
+ color: #888;
+ margin: 20px;
+}
+
+.nothing-here-block {
+ text-align: center;
+ padding: 20px;
+ color: #666;
+ font-weight: normal;
+ font-size: 16px;
+ line-height: 36px;
+}
diff --git a/app/assets/stylesheets/generic/buttons.scss b/app/assets/stylesheets/generic/buttons.scss
index 219e6ebd68b..dd0a2938cfe 100644
--- a/app/assets/stylesheets/generic/buttons.scss
+++ b/app/assets/stylesheets/generic/buttons.scss
@@ -118,7 +118,6 @@
@extend .btn-primary;
}
- &.btn-close,
&.btn-remove {
@extend .btn-danger;
}
@@ -143,6 +142,30 @@
line-height: 16px;
margin: 2px;
}
+
+ &.btn-close {
+ color: #B94A48;
+ font-weight: bold;
+ &:hover {
+ color: #B94A48;
+ }
+ }
+
+ &.btn-reopen {
+ color: #468847;
+ font-weight: bold;
+ &:hover {
+ color: #468847;
+ }
+ }
+
+ &.btn-grouped {
+ margin-right: 7px;
+ float: left;
+ &:last-child {
+ margin-right: 0px;
+ }
+ }
}
.btn-block {
@@ -154,9 +177,8 @@
}
}
-.btn,
.btn-group {
- &.grouped {
+ &.btn-grouped {
margin-right: 7px;
float: left;
&:last-child {
diff --git a/app/assets/stylesheets/generic/common.scss b/app/assets/stylesheets/generic/common.scss
index 79a217186de..6183cefa594 100644
--- a/app/assets/stylesheets/generic/common.scss
+++ b/app/assets/stylesheets/generic/common.scss
@@ -11,8 +11,6 @@
.bgred { background: #F2DEDE!important }
/** COMMON CLASSES **/
-.left { float:left }
-
.prepend-top-10 { margin-top:10px }
.prepend-top-20 { margin-top:20px }
.prepend-left-10 { margin-left:10px }
@@ -24,32 +22,9 @@
.append-bottom-20 { margin-bottom:20px }
.inline { display: inline-block }
-.padded { padding:20px }
-.ipadded { padding:20px!important }
-.lborder { border-left:1px solid #eee }
-.underlined_link { text-decoration: underline; }
+.underlined-link { text-decoration: underline; }
.hint { font-style: italic; color: #999; }
.light { color: #888 }
-.tiny { font-weight: normal }
-.vtop { vertical-align: top !important; }
-
-
-/** ALERT MESSAGES **/
-.alert.alert-disabled {
- background: #EEE;
- color: #777;
- border-color: #DDD;
-}
-
-/** HELPERS **/
-.nothing_here_message {
- text-align: center;
- padding: 20px;
- color: #666;
- font-weight: normal;
- font-size: 16px;
- line-height: 36px;
-}
.slead {
color: #666;
@@ -59,49 +34,23 @@
line-height: 24px;
}
-
.tab-content {
overflow: visible;
}
-@media (max-width: 1200px) {
- .only-wide {
- display: none;
- }
-}
-
-pre.well-pre {
- border: 1px solid #EEE;
- background: #f9f9f9;
- border-radius: 0;
- color: #555;
-}
-
-.input-append .btn.active, .input-prepend .btn.active {
- background: #CCC;
- border-color: #BBB;
- text-shadow: 0 1px 1px #fff;
- font-weight: bold;
- @include box-shadow(inset 0 2px 4px rgba(0,0,0,.15));
-}
-
-/** Big Labels **/
-.state-label {
- font-size: 14px;
- padding: 6px 25px;
- text-align: center;
- @include border-radius(4px);
- text-shadow: none;
- margin-left: 10px;
-
- &.state-label-green {
- background: #4A4;
- color: #FFF;
+pre {
+ &.clean {
+ background: none;
+ border: none;
+ margin: 0;
+ padding: 0;
}
- &.state-label-red {
- background: #DA4E49;
- color: #FFF;
+ &.well-pre {
+ border: 1px solid #EEE;
+ background: #f9f9f9;
+ border-radius: 0;
+ color: #555;
}
}
@@ -112,6 +61,7 @@ pre.well-pre {
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background: #29b;
+ color: #FFF
}
.breadcrumb > li + li:before {
@@ -130,31 +80,6 @@ pre.well-pre {
}
/** FLASH message **/
-.flash-container {
- display: none;
- cursor: pointer;
- margin: 0;
- text-align: center;
- color: #fff;
- font-size: 14px;
- position: fixed;
- bottom: 0;
- width: 100%;
- opacity: 0.8;
- z-index: 100;
-
- .flash-notice {
- background: #49C;
- padding: 10px;
- text-shadow: 0 1px 1px #178;
- }
-
- .flash-alert {
- background: #C67;
- text-shadow: 0 1px 1px #945;
- padding: 10px;
- }
-}
.author_link {
color: $link_color;
}
@@ -173,12 +98,10 @@ table a code {
.loading {
margin: 20px auto;
- background: url(ajax_loader.gif) no-repeat center center;
- width: 40px;
height: 40px;
- &.loading-gray {
- background: url(ajax_loader_gray.gif) no-repeat center center;
- }
+ color: #555;
+ font-size: 32px;
+ text-align: center;
}
span.update-author {
@@ -276,22 +199,6 @@ li.note {
cursor: pointer;
}
-.merge-request,
-.issue {
- &.today{
- background: #EFE;
- border-color: #CEC;
- }
- &.closed {
- background: #F5f5f5;
- border-color: #E5E5E5;
- }
- &.merged {
- background: #F5f5f5;
- border-color: #E5E5E5;
- }
-}
-
.git_error_tips {
@extend .col-md-6;
text-align: left;
@@ -327,6 +234,12 @@ li.note {
color: #fff;
text-decoration: underline;
}
+
+ .links-xs {
+ text-align: center;
+ font-size: 16px;
+ padding: 5px;
+ }
}
.warning_message {
@@ -349,15 +262,6 @@ li.note {
}
}
-pre {
- &.clean {
- background: none;
- border: none;
- margin: 0;
- padding: 0;
- }
-}
-
.milestone {
&.milestone-closed {
background: #eee;
@@ -441,40 +345,6 @@ table {
margin-bottom: 20px;
}
-.ajax-users-select {
- width: 400px;
-
- &.input-large {
- width: 210px;
- }
-
- &.input-clamp {
- max-width: 100%;
- }
-}
-
-.user-result {
- .user-image {
- float: left;
- }
- .user-name {
- }
- .user-username {
- color: #999;
- }
-}
-
-.namespace-result {
- .namespace-kind {
- color: #AAA;
- font-weight: normal;
- }
- .namespace-path {
- margin-left: 10px;
- font-weight: bolder;
- }
-}
-
.btn-sign-in {
margin-top: 7px;
text-shadow: none;
@@ -485,3 +355,7 @@ table {
margin-bottom: 15px;
}
}
+
+@media (max-width: $screen-xs-max) {
+ .container .content { margin-top: 20px; }
+}
diff --git a/app/assets/stylesheets/generic/files.scss b/app/assets/stylesheets/generic/files.scss
index 6607ae327e0..12559f76051 100644
--- a/app/assets/stylesheets/generic/files.scss
+++ b/app/assets/stylesheets/generic/files.scss
@@ -45,14 +45,14 @@
text-align: center;
img {
padding: 100px;
- max-width: 300px;
+ max-width: 50%;
}
}
&.wiki {
- padding: 20px;
font-size: 14px;
line-height: 1.6;
+ padding: 25px;
.highlight {
margin-bottom: 9px;
@@ -143,75 +143,6 @@
*/
&.code {
padding: 0;
-
- table.lines {
- border: none;
- box-shadow: none;
- margin: 0px;
- padding: 0px;
- table-layout: fixed;
-
- pre {
- border: none;
- border-radius: 0;
- font-family: $monospace_font;
- font-size: 12px !important;
- line-height: 16px !important;
- margin: 0;
- padding: 10px 0;
- }
- td {
- border: none;
- margin: 0;
- padding: 0;
- vertical-align: top;
-
- &:first-child {
- background: #eee;
- width: 50px;
- }
- &:last-child {
- }
- }
- tr:hover {
- background: none;
- }
-
- pre.line_numbers {
- color: #666;
- padding: 10px 6px 10px 0;
- text-align: right;
- background: #EEE;
-
- a {
- color: #666;
-
- i {
- display: none;
- font-size: 14px;
- line-height: 14px;
- }
- &:hover i {
- display: inherit;
- }
- }
- }
-
- .highlight {
- border-left: 1px solid #DEE2E3;
- overflow: auto;
- overflow-y: hidden;
-
- pre {
- white-space: pre;
- word-wrap: normal;
-
- .line {
- padding: 0 10px;
- }
- }
- }
- }
}
}
}
diff --git a/app/assets/stylesheets/generic/flash.scss b/app/assets/stylesheets/generic/flash.scss
new file mode 100644
index 00000000000..95d28aaef6c
--- /dev/null
+++ b/app/assets/stylesheets/generic/flash.scss
@@ -0,0 +1,25 @@
+.flash-container {
+ display: none;
+ cursor: pointer;
+ margin: 0;
+ text-align: center;
+ color: #fff;
+ font-size: 14px;
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ opacity: 0.8;
+ z-index: 100;
+
+ .flash-notice {
+ background: #49C;
+ padding: 10px;
+ text-shadow: 0 1px 1px #178;
+ }
+
+ .flash-alert {
+ background: #C67;
+ text-shadow: 0 1px 1px #945;
+ padding: 10px;
+ }
+}
diff --git a/app/assets/stylesheets/generic/forms.scss b/app/assets/stylesheets/generic/forms.scss
index 931b75a3234..19e3e7a9536 100644
--- a/app/assets/stylesheets/generic/forms.scss
+++ b/app/assets/stylesheets/generic/forms.scss
@@ -51,3 +51,27 @@ label {
.input-mn-300 {
min-width: 300px;
}
+
+.custom-form-control {
+ width: 150px;
+}
+
+@media (min-width: $screen-sm-min) {
+ .custom-form-control {
+ width: 150px;
+ }
+}
+
+/* Medium devices (desktops, 992px and up) */
+@media (min-width: $screen-md-min) {
+ .custom-form-control {
+ width: 170px;
+ }
+}
+
+/* Large devices (large desktops, 1200px and up) */
+@media (min-width: $screen-lg-min) {
+ .custom-form-control {
+ width: 200px;
+ }
+}
diff --git a/app/assets/stylesheets/generic/highlight.scss b/app/assets/stylesheets/generic/highlight.scss
new file mode 100644
index 00000000000..4110bddf4f3
--- /dev/null
+++ b/app/assets/stylesheets/generic/highlight.scss
@@ -0,0 +1,64 @@
+.highlighted-data {
+ border: none;
+ box-shadow: none;
+ margin: 0px;
+ padding: 0px;
+ table-layout: fixed;
+
+ pre {
+ padding: 10px;
+ border: none;
+ border-radius: 0;
+ font-family: $monospace_font;
+ font-size: 12px !important;
+ line-height: 16px !important;
+ margin: 0;
+
+ code {
+ white-space: pre;
+ word-wrap: normal;
+ padding: 0;
+
+ .line {
+ display: inline;
+ }
+ }
+ }
+
+ .hljs {
+ padding: 0;
+ }
+
+ .line-numbers {
+ padding: 10px;
+ text-align: right;
+ float: left;
+
+ a {
+ font-family: $monospace_font;
+ display: block;
+ font-size: 12px !important;
+ line-height: 16px !important;
+ white-space: nowrap;
+
+ i {
+ visibility: hidden;
+ @extend .pull-left;
+ }
+
+ &:hover i {
+ visibility: visible;
+ }
+ }
+ }
+
+ .highlight {
+ overflow: auto;
+ overflow-y: hidden;
+
+ pre {
+ white-space: pre;
+ word-wrap: normal;
+ }
+ }
+}
diff --git a/app/assets/stylesheets/generic/issue_box.scss b/app/assets/stylesheets/generic/issue_box.scss
index 6330523ea22..3db4d908d9c 100644
--- a/app/assets/stylesheets/generic/issue_box.scss
+++ b/app/assets/stylesheets/generic/issue_box.scss
@@ -10,37 +10,103 @@
.issue-box {
color: #666;
margin:20px 0;
- background: #FAFAFA;
- border: 1px solid #DDD;
+ background: #FFF;
+ border: 1px solid #EEE;
+
+ &.issue-box-closed {
+ border-color: #DA4E49;
+ .state {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+ .state-label {
+ background: #DA4E49;
+ color: #FFF;
+ }
+ }
+ }
+
+ &.issue-box-merged {
+ border-color: #31708f;
+ .state {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
+ .state-label {
+ background: #31708f;
+ color: #FFF;
+ }
+ }
+ }
+
+ &.issue-box-open {
+ border-color: #4A4;
+ .state {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #3c763d;
+ .state-label {
+ background: #4A4;
+ color: #FFF;
+ }
+ }
+ }
+
+ &.issue-box-expired {
+ border-color: #cea61b;
+ .state {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
+ .state-label {
+ background: #cea61b;
+ color: #FFF;
+ }
+ }
+ }
.control-group {
margin-bottom: 0;
}
+ .state {
+ height: 34px;
+ border-bottom: 1px solid #DDD;
+ line-height: 32px;
+ }
+
.title {
- font-size: 20px;
+ font-size: 22px;
font-weight: 500;
- line-height: 28px;
+ line-height: 1.5;
margin: 0;
- color: #444;
+ color: #333;
+ padding-bottom: 0;
+ padding: 15px 25px;
}
.context {
border: none;
- background-color: #f5f5f5;
- border: none;
border-top: 1px solid #eee;
+ padding: 15px 25px;
}
.description {
- border-top: 1px solid #eee;
+ padding: 0 25px 15px 25px;
}
.title, .context, .description {
- padding: 15px;
-
.clearfix {
margin: 0;
}
}
+
+ .state-label {
+ font-size: 14px;
+ padding: 1px 25px;
+ text-align: center;
+ text-shadow: none;
+ margin-right: 20px;
+ display: inline-block;
+ }
}
diff --git a/app/assets/stylesheets/generic/lists.scss b/app/assets/stylesheets/generic/lists.scss
index 245cccf855d..de70e47333f 100644
--- a/app/assets/stylesheets/generic/lists.scss
+++ b/app/assets/stylesheets/generic/lists.scss
@@ -23,6 +23,12 @@
}
}
+ &.warning-row {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
+ }
+
&.smoke { background-color: #f5f5f5; }
&:hover {
diff --git a/app/assets/stylesheets/generic/selects.scss b/app/assets/stylesheets/generic/selects.scss
index fa10e85664a..03597c1fc7d 100644
--- a/app/assets/stylesheets/generic/selects.scss
+++ b/app/assets/stylesheets/generic/selects.scss
@@ -1,6 +1,5 @@
/** Select2 selectbox style override **/
-
-.select2-container {
+.select2-container, .select2-container.select2-drop-above {
.select2-choice {
background: #FFF;
border-color: #BBB;
@@ -12,8 +11,24 @@
}
.select2-drop-active {
- border: 1px solid #BBB;
+ border: 1px solid #BBB !important;
margin-top: 4px;
+
+ &.select2-drop-above {
+ margin-bottom: 8px;
+ }
+
+ .select2-search input {
+ background: #fafafa;
+ border-color: #DDD;
+ }
+
+ .select2-results {
+ max-height: 350px;
+ .select2-highlighted {
+ background: $bg_style_color;
+ }
+ }
}
select {
@@ -66,3 +81,43 @@ select {
.project-refs-form .select2-container {
margin-right: 10px;
}
+
+.ajax-users-dropdown, .ajax-project-users-dropdown {
+ .select2-search {
+ padding-top: 4px;
+ }
+}
+
+.ajax-users-select {
+ width: 400px;
+
+ &.input-large {
+ width: 210px;
+ }
+
+ &.input-clamp {
+ max-width: 100%;
+ }
+}
+
+.user-result {
+ .user-image {
+ float: left;
+ }
+ .user-name {
+ }
+ .user-username {
+ color: #999;
+ }
+}
+
+.namespace-result {
+ .namespace-kind {
+ color: #AAA;
+ font-weight: normal;
+ }
+ .namespace-path {
+ margin-left: 10px;
+ font-weight: bolder;
+ }
+}
diff --git a/app/assets/stylesheets/generic/typography.scss b/app/assets/stylesheets/generic/typography.scss
index 4490566d4e8..1a07fde53f1 100644
--- a/app/assets/stylesheets/generic/typography.scss
+++ b/app/assets/stylesheets/generic/typography.scss
@@ -90,9 +90,27 @@ a:focus {
font-size: 14px;
line-height: 1.6;
- .white .highlight pre {
- background: #f5f5f5;
+
+ /* Link to current header. */
+ h1, h2, h3, h4, h5, h6 {
+ position: relative;
+ &:hover > :last-child {
+ $size: 16px;
+ position: absolute;
+ right: 100%;
+ top: 50%;
+ margin-top: -$size/2;
+ margin-right: 0px;
+ padding-right: 20px;
+ display: inline-block;
+ width: $size;
+ height: $size;
+ background-image: url("icon-link.png");
+ background-size: contain;
+ background-repeat: no-repeat;
+ }
}
+
ul {
padding: 0;
margin: 0 0 9px 25px !important;
diff --git a/app/assets/stylesheets/gl_bootstrap.scss b/app/assets/stylesheets/gl_bootstrap.scss
index 7f45d64fb7c..169f1268cd7 100644
--- a/app/assets/stylesheets/gl_bootstrap.scss
+++ b/app/assets/stylesheets/gl_bootstrap.scss
@@ -108,6 +108,8 @@ $pagination-active-bg: $bg_style_color;
// Nav tabs
.nav.nav-tabs {
+ margin-bottom: 15px;
+
li {
> a {
padding: 8px 20px;
diff --git a/app/assets/stylesheets/highlight/dark.scss b/app/assets/stylesheets/highlight/dark.scss
index 129d33dcac3..ca51da3fdd4 100644
--- a/app/assets/stylesheets/highlight/dark.scss
+++ b/app/assets/stylesheets/highlight/dark.scss
@@ -1,71 +1,199 @@
-.dark .highlight {
+.dark {
+ background-color: #232323;
- background-color: #333;
+ .line.hll {
+ background: #558;
+ }
+
+ .highlight{
+ border-left: 1px solid #444;
+ }
+
+ .no-highlight {
+ color: #DDD;
+ }
+
+ .line-numbers a {
+ color: #666;
+ }
pre {
- background-color: #333;
- color: #eee;
- }
-
- .hll { display: block; background-color: darken($hover, 65%) }
- .c { color: #888888; font-style: italic } /* Comment */
- .err { color: #a61717; background-color: #e3d2d2 } /* Error */
- .k { color: #CDA869; font-weight: bold } /* Keyword */
- .kp { color: #CDA869; font-weight: bold } /* Keyword */
- .cm { color: #888888 } /* Comment.Multiline */
- .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
- .c1 { color: #888888 } /* Comment.Single */
- .cs { color: #cc0000; font-weight: bold; background-color: transparent } /* Comment.Special */
- .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
- .ge { font-style: italic } /* Generic.Emph */
- .gr { color: #aa0000 } /* Generic.Error */
- .gh { color: #303030 } /* Generic.Heading */
- .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
- .go { color: #888888 } /* Generic.Output */
- .gp { color: #555555 } /* Generic.Prompt */
- .gs { font-weight: bold } /* Generic.Strong */
- .gu { color: #606060 } /* Generic.Subheading */
- .gt { color: #aa0000 } /* Generic.Traceback */
- .kc{font-weight: bold;} /* Keyword.Constant */
- .kd{font-weight: bold;} /* Keyword.Declaration */
- .kn{font-weight: bold;} /* Keyword.Namespace */
- .kp{font-weight: bold;} /* Keyword.Pseudo */
- .kr{font-weight: bold;} /* Keyword.Reserved */
- .kt{color: #458;font-weight: bold;} /* Keyword.Type */
- .m { color: #0000DD; font-weight: bold } /* Literal.Number */
- .p { color: #eee; }
- .s { color: #0AD; background-color: transparent } /* Literal.String */
- .na{color: #008080;} /* Name.Attribute */
- .nb{color: #0086B3;} /* Name.Builtin */
- .nc{color: #ccc;font-weight: bold;} /* Name.Class */
- .no{color: turquoise;} /* Name.Constant */
- .ni{color: #800080;}
- .ne{color: #900;font-weight: bold;} /* Name.Exception */
- .nf{color: #ccc;font-weight: bold;} /* Name.Function */
- .nn{color: #79C3E0;font-weight: bold;} /* Name.Namespace */
- .nt{color: #fc5;} /* Name.Tag */
- .nv{color: #FA4;} /* Name.Variable */
- .py { color: #336699; font-weight: bold } /* Name.Property */
- .ow { color: #008800 } /* Operator.Word */
- .w { color: #bbbbbb } /* Text.Whitespace */
- .mf { color: #7AC; font-weight: bold } /* Literal.Number.Float */
- .mh { color: #7AC; font-weight: bold } /* Literal.Number.Hex */
- .mi {color: #099;} /* Literal.Number.Integer */
- .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
- .sb { color: #dd2200; background-color: transparent; } /* Literal.String.Backtick */
- .sc{color: #d14;} /* Literal.String.Char */
- .sd { color: #dd2200; background-color: transparent; } /* Literal.String.Doc */
- .s2{color: orange;} /* Literal.String.Double */
- .se{color: orange;} /* Literal.String.Escape */
- .sh{color: orange;} /* Literal.String.Heredoc */
- .si{color: orange;} /* Literal.String.Interpol */
- .sx{color: orange;} /* Literal.String.Other */
- .sr{color: orange;} /* Literal.String.Regex */
- .s1{color: orange;} /* Literal.String.Single */
- .ss{color: orange;} /* Literal.String.Symbol */
- .bp { color: #D58 } /* Name.Builtin.Pseudo */
- .vc { color: #336699 } /* Name.Variable.Class */
- .vg { color: #dd7700 } /* Name.Variable.Global */
- .vi { color: cyan }
-}
+ background-color: #232323;
+ }
+
+ .hljs {
+ display: block;
+ background: #232323;
+ color: #E6E1DC;
+ }
+
+ .hljs-comment,
+ .hljs-template_comment,
+ .hljs-javadoc,
+ .hljs-shebang {
+ color: #BC9458;
+ font-style: italic;
+ }
+
+ .hljs-keyword,
+ .ruby .hljs-function .hljs-keyword,
+ .hljs-request,
+ .hljs-status,
+ .nginx .hljs-title,
+ .method,
+ .hljs-list .hljs-title {
+ color: #C26230;
+ }
+
+ .hljs-string,
+ .hljs-number,
+ .hljs-regexp,
+ .hljs-tag .hljs-value,
+ .hljs-cdata,
+ .hljs-filter .hljs-argument,
+ .hljs-attr_selector,
+ .apache .hljs-cbracket,
+ .hljs-date,
+ .tex .hljs-command,
+ .markdown .hljs-link_label {
+ color: #A5C261;
+ }
+
+ .hljs-subst {
+ color: #519F50;
+ }
+
+ .hljs-tag,
+ .hljs-tag .hljs-keyword,
+ .hljs-tag .hljs-title,
+ .hljs-doctype,
+ .hljs-sub .hljs-identifier,
+ .hljs-pi,
+ .input_number {
+ color: #E8BF6A;
+ }
+
+ .hljs-identifier {
+ color: #D0D0FF;
+ }
+
+ .hljs-class .hljs-title,
+ .haskell .hljs-type,
+ .smalltalk .hljs-class,
+ .hljs-javadoctag,
+ .hljs-yardoctag,
+ .hljs-phpdoc {
+ text-decoration: none;
+ }
+
+ .hljs-constant {
+ color: #DA4939;
+ }
+
+
+ .hljs-symbol,
+ .hljs-built_in,
+ .ruby .hljs-symbol .hljs-string,
+ .ruby .hljs-symbol .hljs-identifier,
+ .markdown .hljs-link_url,
+ .hljs-attribute {
+ color: #6D9CBE;
+ }
+
+ .markdown .hljs-link_url {
+ text-decoration: underline;
+ }
+
+
+ .hljs-params,
+ .hljs-variable,
+ .clojure .hljs-attribute {
+ color: #D0D0FF;
+ }
+
+ .css .hljs-tag,
+ .hljs-rules .hljs-property,
+ .hljs-pseudo,
+ .tex .hljs-special {
+ color: #CDA869;
+ }
+
+ .css .hljs-class {
+ color: #9B703F;
+ }
+
+ .hljs-rules .hljs-keyword {
+ color: #C5AF75;
+ }
+
+ .hljs-rules .hljs-value {
+ color: #CF6A4C;
+ }
+
+ .css .hljs-id {
+ color: #8B98AB;
+ }
+
+ .hljs-annotation,
+ .apache .hljs-sqbracket,
+ .nginx .hljs-built_in {
+ color: #9B859D;
+ }
+
+ .hljs-preprocessor,
+ .hljs-preprocessor *,
+ .hljs-pragma {
+ color: #8996A8 !important;
+ }
+
+ .hljs-hexcolor,
+ .css .hljs-value .hljs-number {
+ color: #A5C261;
+ }
+
+ .hljs-title,
+ .hljs-decorator,
+ .css .hljs-function {
+ color: #FFC66D;
+ }
+
+ .diff .hljs-header,
+ .hljs-chunk {
+ background-color: #2F33AB;
+ color: #E6E1DC;
+ display: inline-block;
+ width: 100%;
+ }
+
+ .diff .hljs-change {
+ background-color: #4A410D;
+ color: #F8F8F8;
+ display: inline-block;
+ width: 100%;
+ }
+
+ .hljs-addition {
+ background-color: #144212;
+ color: #E6E1DC;
+ display: inline-block;
+ width: 100%;
+ }
+
+ .hljs-deletion {
+ background-color: #600;
+ color: #E6E1DC;
+ display: inline-block;
+ width: 100%;
+ }
+
+ .coffeescript .javascript,
+ .javascript .xml,
+ .tex .hljs-formula,
+ .xml .javascript,
+ .xml .vbscript,
+ .xml .css,
+ .xml .hljs-cdata {
+ opacity: 0.7;
+ }
+}
diff --git a/app/assets/stylesheets/highlight/monokai.scss b/app/assets/stylesheets/highlight/monokai.scss
index c9709fa7f12..36bc5df2f44 100644
--- a/app/assets/stylesheets/highlight/monokai.scss
+++ b/app/assets/stylesheets/highlight/monokai.scss
@@ -1,89 +1,148 @@
-$monokai-fg: #f8f8f2;
-$monokai-comment: #75715e;
-$monokai-pink: #f92672;
-$monokai-blue: #66d9ef;
-$monokai-green: #a6e22e;
-$monokai-gold: #e6db74;
-$monokai-dark: #3b3a32;
-$monokai-purple: #ae81ff;
+.monokai {
+ background-color: #272822;
-.monokai .highlight {
+ .highlight{
+ border-left: 1px solid #444;
+ }
- background-color: #272822;
+ .line.hll {
+ background: #558;
+ }
+
+ .no-highlight {
+ color: #DDD;
+ }
+
+ .line-numbers a {
+ color: #666;
+ }
pre {
background-color: #272822;
- color: $monokai-fg;
+ color: #f8f8f2;
}
- .hll { background-color: darken($hover, 65%) }
- .c { color: $monokai-comment } /* Comment */
- .err { color: $monokai-fg } /* Error */
- .g { color: $monokai-fg } /* Generic */
- .k { color: $monokai-pink } /* Keyword */
- .l { color: $monokai-fg } /* Literal */
- .n { color: $monokai-blue } /* Name */
- .o { color: $monokai-fg } /* Operator */
- .x { color: $monokai-fg } /* Other */
- .p { color: $monokai-fg } /* Punctuation */
- .cm { color: $monokai-comment } /* Comment.Multiline */
- .cp { color: $monokai-comment } /* Comment.Preproc */
- .c1 { color: $monokai-comment } /* Comment.Single */
- .cs { color: $monokai-comment } /* Comment.Special */
- .gd { color: #8b0807 } /* Generic.Deleted */
- .ge { color: $monokai-fg; text-decoration: underline } /* Generic.Emph */
- .gr { color: $monokai-fg } /* Generic.Error */
- .gh { color: $monokai-fg; font-weight: bold } /* Generic.Heading */
- .gi { color: $monokai-fg; font-weight: bold; background-color: #46830c } /* Generic.Inserted */
- .go { color: $monokai-dark; background-color: #31322c } /* Generic.Output */
- .gp { color: $monokai-fg } /* Generic.Prompt */
- .gs { color: $monokai-fg } /* Generic.Strong */
- .gu { color: $monokai-fg; font-weight: bold } /* Generic.Subheading */
- .gt { color: #f8f8f0; background-color: $monokai-pink } /* Generic.Traceback */
- .kc { color: $monokai-purple } /* Keyword.Constant */
- .kd { color: $monokai-pink } /* Keyword.Declaration */
- .kn { color: $monokai-pink } /* Keyword.Namespace */
- .kp { color: $monokai-pink } /* Keyword.Pseudo */
- .kr { color: $monokai-pink } /* Keyword.Reserved */
- .kt { color: $monokai-fg } /* Keyword.Type */
- .ld { color: $monokai-fg } /* Literal.Date */
- .m { color: $monokai-purple } /* Literal.Number */
- .s { color: $monokai-gold } /* Literal.String */
- .na { color: $monokai-purple } /* Name.Attribute */
- .nb { color: $monokai-blue } /* Name.Builtin */
- .nc { color: $monokai-fg } /* Name.Class */
- .no { color: $monokai-fg } /* Name.Constant */
- .nd { color: $monokai-fg } /* Name.Decorator */
- .ni { color: $monokai-fg } /* Name.Entity */
- .ne { color: $monokai-fg } /* Name.Exception */
- .nf { color: $monokai-green } /* Name.Function */
- .nl { color: $monokai-gold } /* Name.Label */
- .nn { color: $monokai-fg } /* Name.Namespace */
- .nx { color: $monokai-fg } /* Name.Other */
- .nt { color: $monokai-pink } /* Name.Tag */
- .nv { color: $monokai-blue; font-style: italic } /* Name.Variable */
- .py { color: $monokai-fg } /* Name.Property */
- .ow { color: $monokai-pink } /* Operator.Word */
- .w { color: $monokai-fg } /* Text.Whitespace */
- .mf { color: $monokai-purple } /* Literal.Number.Float */
- .mh { color: $monokai-purple } /* Literal.Number.Hex */
- .mi { color: $monokai-purple } /* Literal.Number.Integer */
- .mo { color: $monokai-purple } /* Literal.Number.Oct */
- .sb { color: $monokai-gold } /* Literal.String.Backtick */
- .sc { color: $monokai-gold } /* Literal.String.Char */
- .sd { color: $monokai-gold } /* Literal.String.Doc */
- .s2 { color: $monokai-gold } /* Literal.String.Double */
- .se { color: $monokai-gold } /* Literal.String.Escape */
- .sh { color: $monokai-gold } /* Literal.String.Heredoc */
- .si { color: $monokai-gold } /* Literal.String.Interpol */
- .sx { color: $monokai-gold } /* Literal.String.Other */
- .sr { color: $monokai-gold } /* Literal.String.Regex */
- .s1 { color: $monokai-gold } /* Literal.String.Single */
- .ss { color: $monokai-gold } /* Literal.String.Symbol */
- .bp { color: $monokai-fg } /* Name.Builtin.Pseudo */
- .vc { color: $monokai-blue; font-style: italic } /* Name.Variable.Class */
- .vg { color: $monokai-blue; font-style: italic } /* Name.Variable.Global */
- .vi { color: $monokai-blue; font-style: italic } /* Name.Variable.Instance */
- .il { color: $monokai-purple } /* Literal.Number.Integer.Long */
-}
+ .hljs {
+ display: block;
+ background: #272822;
+ }
+
+ .hljs-tag,
+ .hljs-tag .hljs-title,
+ .hljs-keyword,
+ .hljs-literal,
+ .hljs-strong,
+ .hljs-change,
+ .hljs-winutils,
+ .hljs-flow,
+ .lisp .hljs-title,
+ .clojure .hljs-built_in,
+ .nginx .hljs-title,
+ .tex .hljs-special {
+ color: #F92672;
+ }
+
+ .hljs {
+ color: #DDD;
+ }
+ .hljs .hljs-constant,
+ .asciidoc .hljs-code {
+ color: #66D9EF;
+ }
+
+ .hljs-code,
+ .hljs-class .hljs-title,
+ .hljs-header {
+ color: white;
+ }
+
+ .hljs-link_label,
+ .hljs-attribute,
+ .hljs-symbol,
+ .hljs-symbol .hljs-string,
+ .hljs-value,
+ .hljs-regexp {
+ color: #BF79DB;
+ }
+
+ .hljs-link_url,
+ .hljs-tag .hljs-value,
+ .hljs-string,
+ .hljs-bullet,
+ .hljs-subst,
+ .hljs-title,
+ .hljs-emphasis,
+ .haskell .hljs-type,
+ .hljs-preprocessor,
+ .hljs-pragma,
+ .ruby .hljs-class .hljs-parent,
+ .hljs-built_in,
+ .sql .hljs-aggregate,
+ .django .hljs-template_tag,
+ .django .hljs-variable,
+ .smalltalk .hljs-class,
+ .hljs-javadoc,
+ .django .hljs-filter .hljs-argument,
+ .smalltalk .hljs-localvars,
+ .smalltalk .hljs-array,
+ .hljs-attr_selector,
+ .hljs-pseudo,
+ .hljs-addition,
+ .hljs-stream,
+ .hljs-envvar,
+ .apache .hljs-tag,
+ .apache .hljs-cbracket,
+ .tex .hljs-command,
+ .hljs-prompt {
+ color: #A6E22E;
+ }
+
+ .hljs-comment,
+ .java .hljs-annotation,
+ .smartquote,
+ .hljs-blockquote,
+ .hljs-horizontal_rule,
+ .python .hljs-decorator,
+ .hljs-template_comment,
+ .hljs-pi,
+ .hljs-doctype,
+ .hljs-deletion,
+ .hljs-shebang,
+ .apache .hljs-sqbracket,
+ .tex .hljs-formula {
+ color: #75715E;
+ }
+
+ .hljs-keyword,
+ .hljs-literal,
+ .css .hljs-id,
+ .hljs-phpdoc,
+ .hljs-title,
+ .hljs-header,
+ .haskell .hljs-type,
+ .vbscript .hljs-built_in,
+ .sql .hljs-aggregate,
+ .rsl .hljs-built_in,
+ .smalltalk .hljs-class,
+ .diff .hljs-header,
+ .hljs-chunk,
+ .hljs-winutils,
+ .bash .hljs-variable,
+ .apache .hljs-tag,
+ .tex .hljs-special,
+ .hljs-request,
+ .hljs-status {
+ font-weight: bold;
+ }
+
+ .coffeescript .javascript,
+ .javascript .xml,
+ .tex .hljs-formula,
+ .xml .javascript,
+ .xml .vbscript,
+ .xml .css,
+ .xml .hljs-cdata {
+ opacity: 0.5;
+ }
+}
diff --git a/app/assets/stylesheets/highlight/solarized_dark.scss b/app/assets/stylesheets/highlight/solarized_dark.scss
index cc82f39ac93..b9bec225188 100644
--- a/app/assets/stylesheets/highlight/solarized_dark.scss
+++ b/app/assets/stylesheets/highlight/solarized_dark.scss
@@ -1,80 +1,125 @@
-.solarized-dark .highlight {
-
+.solarized-dark {
background-color: #002B36;
-
+
+ .highlight{
+ border-left: 1px solid #113b46;
+ }
+
+ .line.hll {
+ background: #000;
+ }
+
+ .no-highlight {
+ color: #DDD;
+ }
+
pre {
background-color: #002B36;
color: #eee;
}
- .hll { background-color: #073642 }
- .c { color: #586E75 } /* Comment */
- .err { color: #93A1A1 } /* Error */
- .g { color: #93A1A1 } /* Generic */
- .k { color: #859900 } /* Keyword */
- .l { color: #93A1A1 } /* Literal */
- .n { color: #93A1A1 } /* Name */
- .o { color: #859900 } /* Operator */
- .x { color: #CB4B16 } /* Other */
- .p { color: #93A1A1 } /* Punctuation */
- .cm { color: #586E75 } /* Comment.Multiline */
- .cp { color: #859900 } /* Comment.Preproc */
- .c1 { color: #586E75 } /* Comment.Single */
- .cs { color: #859900 } /* Comment.Special */
- .gd { color: #2AA198 } /* Generic.Deleted */
- .ge { color: #93A1A1; font-style: italic } /* Generic.Emph */
- .gr { color: #DC322F } /* Generic.Error */
- .gh { color: #CB4B16 } /* Generic.Heading */
- .gi { color: #859900 } /* Generic.Inserted */
- .go { color: #93A1A1 } /* Generic.Output */
- .gp { color: #93A1A1 } /* Generic.Prompt */
- .gs { color: #93A1A1; font-weight: bold } /* Generic.Strong */
- .gu { color: #CB4B16 } /* Generic.Subheading */
- .gt { color: #93A1A1 } /* Generic.Traceback */
- .kc { color: #CB4B16 } /* Keyword.Constant */
- .kd { color: #268BD2 } /* Keyword.Declaration */
- .kn { color: #859900 } /* Keyword.Namespace */
- .kp { color: #859900 } /* Keyword.Pseudo */
- .kr { color: #268BD2 } /* Keyword.Reserved */
- .kt { color: #DC322F } /* Keyword.Type */
- .ld { color: #93A1A1 } /* Literal.Date */
- .m { color: #2AA198 } /* Literal.Number */
- .s { color: #2AA198 } /* Literal.String */
- .na { color: #93A1A1 } /* Name.Attribute */
- .nb { color: #B58900 } /* Name.Builtin */
- .nc { color: #268BD2 } /* Name.Class */
- .no { color: #CB4B16 } /* Name.Constant */
- .nd { color: #268BD2 } /* Name.Decorator */
- .ni { color: #CB4B16 } /* Name.Entity */
- .ne { color: #CB4B16 } /* Name.Exception */
- .nf { color: #268BD2 } /* Name.Function */
- .nl { color: #93A1A1 } /* Name.Label */
- .nn { color: #93A1A1 } /* Name.Namespace */
- .nx { color: #93A1A1 } /* Name.Other */
- .py { color: #93A1A1 } /* Name.Property */
- .nt { color: #268BD2 } /* Name.Tag */
- .nv { color: #268BD2 } /* Name.Variable */
- .ow { color: #859900 } /* Operator.Word */
- .w { color: #93A1A1 } /* Text.Whitespace */
- .mf { color: #2AA198 } /* Literal.Number.Float */
- .mh { color: #2AA198 } /* Literal.Number.Hex */
- .mi { color: #2AA198 } /* Literal.Number.Integer */
- .mo { color: #2AA198 } /* Literal.Number.Oct */
- .sb { color: #586E75 } /* Literal.String.Backtick */
- .sc { color: #2AA198 } /* Literal.String.Char */
- .sd { color: #93A1A1 } /* Literal.String.Doc */
- .s2 { color: #2AA198 } /* Literal.String.Double */
- .se { color: #CB4B16 } /* Literal.String.Escape */
- .sh { color: #93A1A1 } /* Literal.String.Heredoc */
- .si { color: #2AA198 } /* Literal.String.Interpol */
- .sx { color: #2AA198 } /* Literal.String.Other */
- .sr { color: #DC322F } /* Literal.String.Regex */
- .s1 { color: #2AA198 } /* Literal.String.Single */
- .ss { color: #2AA198 } /* Literal.String.Symbol */
- .bp { color: #268BD2 } /* Name.Builtin.Pseudo */
- .vc { color: #268BD2 } /* Name.Variable.Class */
- .vg { color: #268BD2 } /* Name.Variable.Global */
- .vi { color: #268BD2 } /* Name.Variable.Instance */
- .il { color: #2AA198 } /* Literal.Number.Integer.Long */
-}
+ .line-numbers a {
+ color: #666;
+ }
+
+ .hljs {
+ display: block;
+ background: #002b36;
+ color: #839496;
+ }
+
+ .hljs-comment,
+ .hljs-template_comment,
+ .diff .hljs-header,
+ .hljs-doctype,
+ .hljs-pi,
+ .lisp .hljs-string,
+ .hljs-javadoc {
+ color: #586e75;
+ }
+
+ /* Solarized Green */
+ .hljs-keyword,
+ .hljs-winutils,
+ .method,
+ .hljs-addition,
+ .css .hljs-tag,
+ .hljs-request,
+ .hljs-status,
+ .nginx .hljs-title {
+ color: #859900;
+ }
+ /* Solarized Cyan */
+ .hljs-number,
+ .hljs-command,
+ .hljs-string,
+ .hljs-tag .hljs-value,
+ .hljs-rules .hljs-value,
+ .hljs-phpdoc,
+ .tex .hljs-formula,
+ .hljs-regexp,
+ .hljs-hexcolor,
+ .hljs-link_url {
+ color: #2aa198;
+ }
+
+ /* Solarized Blue */
+ .hljs-title,
+ .hljs-localvars,
+ .hljs-chunk,
+ .hljs-decorator,
+ .hljs-built_in,
+ .hljs-identifier,
+ .vhdl .hljs-literal,
+ .hljs-id,
+ .css .hljs-function {
+ color: #268bd2;
+ }
+
+ /* Solarized Yellow */
+ .hljs-attribute,
+ .hljs-variable,
+ .lisp .hljs-body,
+ .smalltalk .hljs-number,
+ .hljs-constant,
+ .hljs-class .hljs-title,
+ .hljs-parent,
+ .haskell .hljs-type,
+ .hljs-link_reference {
+ color: #b58900;
+ }
+
+ /* Solarized Orange */
+ .hljs-preprocessor,
+ .hljs-preprocessor .hljs-keyword,
+ .hljs-pragma,
+ .hljs-shebang,
+ .hljs-symbol,
+ .hljs-symbol .hljs-string,
+ .diff .hljs-change,
+ .hljs-special,
+ .hljs-attr_selector,
+ .hljs-subst,
+ .hljs-cdata,
+ .clojure .hljs-title,
+ .css .hljs-pseudo,
+ .hljs-header {
+ color: #cb4b16;
+ }
+
+ /* Solarized Red */
+ .hljs-deletion,
+ .hljs-important {
+ color: #dc322f;
+ }
+
+ /* Solarized Violet */
+ .hljs-link_label {
+ color: #6c71c4;
+ }
+
+ .tex .hljs-formula {
+ background: #073642;
+ }
+}
diff --git a/app/assets/stylesheets/highlight/white.scss b/app/assets/stylesheets/highlight/white.scss
index df127a7c491..c06bed3c21e 100644
--- a/app/assets/stylesheets/highlight/white.scss
+++ b/app/assets/stylesheets/highlight/white.scss
@@ -1,72 +1,186 @@
-.white .highlight {
-
+.white {
background-color: #fff;
-
+
+ .line.hll {
+ background: #FFA;
+ }
+
+ .highlight{
+ border-left: 1px solid #eee;
+ }
+
pre {
background-color: #fff;
color: #333;
}
- .hll { display: block; background-color: $hover }
- .c { color: #888888; font-style: italic } /* Comment */
- .err { color: #a61717; background-color: #e3d2d2 } /* Error */
- .k { color: #000000; font-weight: bold } /* Keyword */
- .cm { color: #888888 } /* Comment.Multiline */
- .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
- .c1 { color: #888888 } /* Comment.Single */
- .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
- .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
- .ge { font-style: italic } /* Generic.Emph */
- .gr { color: #aa0000 } /* Generic.Error */
- .gh { color: #303030 } /* Generic.Heading */
- .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
- .go { color: #888888 } /* Generic.Output */
- .gp { color: #555555 } /* Generic.Prompt */
- .gs { font-weight: bold } /* Generic.Strong */
- .gu { color: #606060 } /* Generic.Subheading */
- .gt { color: #aa0000 } /* Generic.Traceback */
- .kc{font-weight: bold;} /* Keyword.Constant */
- .kd{font-weight: bold;} /* Keyword.Declaration */
- .kn{font-weight: bold;} /* Keyword.Namespace */
- .kp{font-weight: bold;} /* Keyword.Pseudo */
- .kr{font-weight: bold;} /* Keyword.Reserved */
- .kt{color: #458;font-weight: bold;} /* Keyword.Type */
- .m { color: #0000DD; font-weight: bold } /* Literal.Number */
- .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
- .na{color: #008080;} /* Name.Attribute */
- .nb{color: #0086B3;} /* Name.Builtin */
- .nc{color: #458;font-weight: bold;} /* Name.Class */
- .no{color: #008080;} /* Name.Constant */
- .ni{color: #800080;}
- .ne{color: #900;font-weight: bold;} /* Name.Exception */
- .nf{color: #900;font-weight: bold;} /* Name.Function */
- .nn{color: #005;font-weight: bold;} /* Name.Namespace */
- .nt{color: #000080;} /* Name.Tag */
- .nv{color: #008080;} /* Name.Variable */
- .py { color: #336699; font-weight: bold } /* Name.Property */
- .ow { color: #008800 } /* Operator.Word */
- .w { color: #bbbbbb } /* Text.Whitespace */
- .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
- .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
- .mi {color: #099;} /* Literal.Number.Integer */
- .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
- .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
- .sc{color: #d14;} /* Literal.String.Char */
- .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
- .s2{color: #d14;} /* Literal.String.Double */
- .se{color: #d14;} /* Literal.String.Escape */
- .sh{color: #d14;} /* Literal.String.Heredoc */
- .si{color: #d14;} /* Literal.String.Interpol */
- .sx{color: #d14;} /* Literal.String.Other */
- .sr{color: #d14;} /* Literal.String.Regex */
- .s1{color: #d14;} /* Literal.String.Single */
- .ss{color: #d14;} /* Literal.String.Symbol */
- .bp { color: #003388 } /* Name.Builtin.Pseudo */
- .vc { color: #336699 } /* Name.Variable.Class */
- .vg { color: #dd7700 } /* Name.Variable.Global */
- .vi { color: #3333bb }
+ .hljs {
+ background: #FFF;
+ }
+
+ .line-numbers a {
+ color: #999;
+ }
+
+ .hljs {
+ display: block;
+ background: #fff; color: black;
+ }
+
+ .hljs-comment,
+ .hljs-template_comment,
+ .hljs-javadoc,
+ .hljs-comment * {
+ color: #006a00;
+ }
+
+ .hljs-keyword,
+ .hljs-literal,
+ .nginx .hljs-title {
+ color: #aa0d91;
+ }
+ .method,
+ .hljs-list .hljs-title,
+ .hljs-tag .hljs-title,
+ .setting .hljs-value,
+ .hljs-winutils,
+ .tex .hljs-command,
+ .http .hljs-title,
+ .hljs-request,
+ .hljs-status {
+ color: #008;
+ }
+
+ .hljs-envvar,
+ .tex .hljs-special {
+ color: #660;
+ }
+
+ .hljs-string {
+ color: #c41a16;
+ }
+ .hljs-tag .hljs-value,
+ .hljs-cdata,
+ .hljs-filter .hljs-argument,
+ .hljs-attr_selector,
+ .apache .hljs-cbracket,
+ .hljs-date,
+ .hljs-regexp {
+ color: #080;
+ }
+
+ .hljs-sub .hljs-identifier,
+ .hljs-pi,
+ .hljs-tag,
+ .hljs-tag .hljs-keyword,
+ .hljs-decorator,
+ .ini .hljs-title,
+ .hljs-shebang,
+ .hljs-prompt,
+ .hljs-hexcolor,
+ .hljs-rules .hljs-value,
+ .hljs-symbol,
+ .hljs-symbol .hljs-string,
+ .hljs-number,
+ .css .hljs-function,
+ .clojure .hljs-title,
+ .clojure .hljs-built_in,
+ .hljs-function .hljs-title,
+ .coffeescript .hljs-attribute {
+ color: #1c00cf;
+ }
+
+ .hljs-class .hljs-title,
+ .haskell .hljs-type,
+ .smalltalk .hljs-class,
+ .hljs-javadoctag,
+ .hljs-yardoctag,
+ .hljs-phpdoc,
+ .hljs-typename,
+ .hljs-tag .hljs-attribute,
+ .hljs-doctype,
+ .hljs-class .hljs-id,
+ .hljs-built_in,
+ .setting,
+ .hljs-params,
+ .clojure .hljs-attribute {
+ color: #5c2699;
+ }
+
+ .hljs-variable {
+ color: #3f6e74;
+ }
+ .css .hljs-tag,
+ .hljs-rules .hljs-property,
+ .hljs-pseudo,
+ .hljs-subst {
+ color: #000;
+ }
+
+ .css .hljs-class,
+ .css .hljs-id {
+ color: #9B703F;
+ }
+
+ .hljs-value .hljs-important {
+ color: #ff7700;
+ font-weight: bold;
+ }
+
+ .hljs-rules .hljs-keyword {
+ color: #C5AF75;
+ }
+
+ .hljs-annotation,
+ .apache .hljs-sqbracket,
+ .nginx .hljs-built_in {
+ color: #9B859D;
+ }
+
+ .hljs-preprocessor,
+ .hljs-preprocessor *,
+ .hljs-pragma {
+ color: #643820;
+ }
+
+ .tex .hljs-formula {
+ background-color: #EEE;
+ font-style: italic;
+ }
+
+ .diff .hljs-header,
+ .hljs-chunk {
+ color: #808080;
+ font-weight: bold;
+ }
+
+ .diff .hljs-change {
+ background-color: #BCCFF9;
+ }
+
+ .hljs-addition {
+ background-color: #BAEEBA;
+ }
+
+ .hljs-deletion {
+ background-color: #FFC8BD;
+ }
+
+ .hljs-comment .hljs-yardoctag {
+ font-weight: bold;
+ }
+
+ .method .hljs-id {
+ color: #000;
+ }
}
.shadow {
@include box-shadow(0 5px 15px #000);
}
+
+.wiki, .note-body {
+ .highlight {
+ border: 1px solid #DDD;
+ }
+}
diff --git a/app/assets/stylesheets/main/layout.scss b/app/assets/stylesheets/main/layout.scss
index a4d889f26dd..e28da65c01f 100644
--- a/app/assets/stylesheets/main/layout.scss
+++ b/app/assets/stylesheets/main/layout.scss
@@ -1,11 +1,11 @@
html {
overflow-y: scroll;
+
+ &.touch .tooltip { display: none !important; }
}
body {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- margin-bottom: 20px;
+ padding-bottom: 20px;
}
.container {
diff --git a/app/assets/stylesheets/main/mixins.scss b/app/assets/stylesheets/main/mixins.scss
index e637b645b55..4afe61d756c 100644
--- a/app/assets/stylesheets/main/mixins.scss
+++ b/app/assets/stylesheets/main/mixins.scss
@@ -106,12 +106,12 @@
h3 {
margin-top: 35px;
- font-size: 2em;
+ font-size: 1.5em;
}
h4 {
margin-top: 30px;
- font-size: 1.5em;
+ font-size: 1.2em;
}
blockquote p {
@@ -128,7 +128,7 @@
}
}
- code {
+ p > code {
font-size: inherit;
font-weight: inherit;
color: #555;
diff --git a/app/assets/stylesheets/main/variables.scss b/app/assets/stylesheets/main/variables.scss
index decc5f50469..4b5fa0979be 100644
--- a/app/assets/stylesheets/main/variables.scss
+++ b/app/assets/stylesheets/main/variables.scss
@@ -5,6 +5,7 @@ $primary_color: #2FA0BB;
$link_color: #3A89A3;
$style_color: #474D57;
$bg_style_color: #2299BB;
+$list-group-active-bg: $bg_style_color;
$hover: #D9EDF7;
/**
diff --git a/app/assets/stylesheets/sections/admin.scss b/app/assets/stylesheets/sections/admin.scss
index 8ad9bc732b2..a558633d112 100644
--- a/app/assets/stylesheets/sections/admin.scss
+++ b/app/assets/stylesheets/sections/admin.scss
@@ -2,7 +2,7 @@
* Admin area
*
*/
-.admin_dash {
+.admin-dashboard {
.data {
a {
h1 {
@@ -14,6 +14,10 @@
}
}
}
+
+ .str-truncated {
+ max-width: 60%;
+ }
}
.admin-filter form {
diff --git a/app/assets/stylesheets/sections/commits.scss b/app/assets/stylesheets/sections/commits.scss
index ff293bc4a00..f3355c8f1d6 100644
--- a/app/assets/stylesheets/sections/commits.scss
+++ b/app/assets/stylesheets/sections/commits.scss
@@ -10,331 +10,6 @@
}
}
-.file {
- border: 1px solid #CCC;
- margin-bottom: 1em;
-
- .header {
- @extend .clearfix;
- background: #DDD;
- border-bottom: 1px solid #CCC;
- padding: 5px 5px 5px 10px;
- color: #555;
-
- > span {
- font-family: $monospace_font;
- font-size: 14px;
- line-height: 2;
- }
-
- .view-file {
- font-weight: bold;
- float: right;
- background-color: #EEE;
- }
-
- .commit-short-id {
- font-family: $monospace_font;
- font-size: smaller;
- }
-
- .file-mode {
- font-family: $monospace_font;
- }
- }
- .content {
- overflow: auto;
- overflow-y: hidden;
- background: #FFF;
- color: #333;
- font-size: 12px;
- .old {
- span.idiff {
- background-color: #FAA;
- }
- }
- .new {
- span.idiff {
- background-color: #AFA;
- }
- }
-
- table {
- width: 100%;
- font-family: $monospace_font;
- border: none;
- margin: 0px;
- padding: 0px;
- td {
- line-height: 18px;
- font-size: 12px;
- }
- }
- .old_line, .new_line, .diff_line {
- margin: 0px;
- padding: 0px;
- border: none;
- background: #EEE;
- color: #666;
- padding: 0px 5px;
- border-right: 1px solid #ccc;
- text-align: right;
- min-width: 35px;
- max-width: 50px;
- width: 35px;
- @include user-select(none);
- a {
- float: left;
- width: 35px;
- font-weight: normal;
- color: #666;
- &:hover {
- text-decoration: underline;
- }
- }
- &.new {
- background: #CFD;
- }
- &.old {
- background: #FDD;
- }
- }
- .diff_line {
- padding: 0;
- }
- .line_holder {
- &.old .old_line,
- &.old .new_line {
- background: #FCC;
- border-color: #E7BABA;
- }
- &.new .old_line,
- &.new .new_line {
- background: #CFC;
- border-color: #B9ECB9;
- }
- }
- .line_content {
- display: block;
- white-space: pre;
- height: 18px;
- margin: 0px;
- padding: 0px 0.5em;
- border: none;
- &.new {
- background: #CFD;
- }
- &.old {
- background: #FDD;
- }
- &.matched {
- color: #ccc;
- background: #fafafa;
- }
- &.parallel {
- display: table-cell;
- overflow: hidden;
- width: 50%;
- }
- }
- }
- .image {
- background: #ddd;
- text-align: center;
- padding: 30px;
- .wrap{
- display: inline-block;
- }
-
- .frame {
- display: inline-block;
- background-color: #fff;
- line-height: 0;
- img{
- border: 1px solid #FFF;
- background: url('trans_bg.gif');
- }
- &.deleted {
- border: 1px solid $deleted;
- }
-
- &.added {
- border: 1px solid $added;
- }
- }
- .image-info{
- font-size: 12px;
- margin: 5px 0 0 0;
- color: grey;
- }
-
- .view.swipe{
- position: relative;
-
- .swipe-frame{
- display: block;
- margin: auto;
- position: relative;
- }
- .swipe-wrap{
- overflow: hidden;
- border-left: 1px solid #999;
- position: absolute;
- display: block;
- top: 13px;
- right: 7px;
- }
- .frame{
- top: 0;
- right: 0;
- position: absolute;
- &.deleted{
- margin: 0;
- display: block;
- top: 13px;
- right: 7px;
- }
- }
- .swipe-bar{
- display: block;
- height: 100%;
- width: 15px;
- z-index: 100;
- position: absolute;
- cursor: pointer;
- &:hover{
- .top-handle{
- background-position: -15px 3px;
- }
- .bottom-handle{
- background-position: -15px -11px;
- }
- };
- .top-handle{
- display: block;
- height: 14px;
- width: 15px;
- position: absolute;
- top: 0px;
- background: url('swipemode_sprites.gif') 0 3px no-repeat;
- }
- .bottom-handle{
- display: block;
- height: 14px;
- width: 15px;
- position: absolute;
- bottom: 0px;
- background: url('swipemode_sprites.gif') 0 -11px no-repeat;
- }
- }
- } //.view.swipe
- .view.onion-skin{
- .onion-skin-frame{
- display: block;
- margin: auto;
- position: relative;
- }
- .frame.added, .frame.deleted {
- position: absolute;
- display: block;
- top: 0px;
- left: 0px;
- }
- .controls{
- display: block;
- height: 14px;
- width: 300px;
- z-index: 100;
- position: absolute;
- bottom: 0px;
- left: 50%;
- margin-left: -150px;
-
- .drag-track{
- display: block;
- position: absolute;
- left: 12px;
- height: 10px;
- width: 276px;
- background: url('onion_skin_sprites.gif') -4px -20px repeat-x;
- }
-
- .dragger {
- display: block;
- position: absolute;
- left: 0px;
- top: 0px;
- height: 14px;
- width: 14px;
- background: url('onion_skin_sprites.gif') 0px -34px repeat-x;
- cursor: pointer;
- }
-
- .transparent {
- display: block;
- position: absolute;
- top: 2px;
- right: 0px;
- height: 10px;
- width: 10px;
- background: url('onion_skin_sprites.gif') -2px 0px no-repeat;
- }
-
- .opaque {
- display: block;
- position: absolute;
- top: 2px;
- left: 0px;
- height: 10px;
- width: 10px;
- background: url('onion_skin_sprites.gif') -2px -10px no-repeat;
- }
- }
- } //.view.onion-skin
- }
- .view-modes{
-
- padding: 10px;
- text-align: center;
-
- background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
- background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
- background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
- background-image: -ms-linear-gradient(#eee 6.6%, #dfdfdf);
- background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
-
- ul, li{
- list-style: none;
- margin: 0;
- padding: 0;
- display: inline-block;
- }
-
- li{
- color: grey;
- border-left: 1px solid #c1c1c1;
- padding: 0 12px 0 16px;
- cursor: pointer;
- &:first-child{
- border-left: none;
- }
- &:hover{
- text-decoration: underline;
- }
- &.active{
- &:hover{
- text-decoration: none;
- }
- cursor: default;
- color: #333;
- }
- &.disabled{
- display: none;
- }
- }
- }
-}
-
/** COMMIT BLOCK **/
.commit-title{
display: block;
@@ -493,6 +168,25 @@ li.commit {
text-decoration: underline;
}
}
+
+ .text-expander {
+ background: #eee;
+ color: #555;
+ padding: 0 5px;
+ cursor: pointer;
+ margin-left: 4px;
+ &:hover {
+ background-color: #ddd;
+ }
+ }
+ }
+
+ .commit-row-description {
+ font-size: 14px;
+ border-left: 1px solid #e5e5e5;
+ padding: 0 15px 0 7px;
+ margin: 5px 0 10px 5px;
+ display: none;
}
.commit-row-info {
diff --git a/app/assets/stylesheets/sections/dashboard.scss b/app/assets/stylesheets/sections/dashboard.scss
index 1fd82c84fc9..6fc394e2e2b 100644
--- a/app/assets/stylesheets/sections/dashboard.scss
+++ b/app/assets/stylesheets/sections/dashboard.scss
@@ -41,7 +41,7 @@
.dash-sidebar-tabs {
margin-bottom: 2px;
border: none;
- margin: 0;
+ margin: 0 !important;
li {
&.active {
diff --git a/app/assets/stylesheets/sections/diff.scss b/app/assets/stylesheets/sections/diff.scss
new file mode 100644
index 00000000000..74d144dfb06
--- /dev/null
+++ b/app/assets/stylesheets/sections/diff.scss
@@ -0,0 +1,329 @@
+.diff-file {
+ border: 1px solid #CCC;
+ margin-bottom: 1em;
+
+ .diff-header {
+ @extend .clearfix;
+ background: #DDD;
+ border-bottom: 1px solid #CCC;
+ padding: 5px 5px 5px 10px;
+ color: #555;
+
+ > span {
+ font-family: $monospace_font;
+ font-size: 14px;
+ line-height: 2;
+ }
+
+ .diff-btn-group {
+ float: right;
+
+ .btn {
+ background-color: #EEE;
+ color: #666;
+ font-weight: bolder;
+ }
+ }
+
+ .commit-short-id {
+ font-family: $monospace_font;
+ font-size: smaller;
+ }
+
+ .file-mode {
+ font-family: $monospace_font;
+ }
+ }
+ .diff-content {
+ overflow: auto;
+ overflow-y: hidden;
+ background: #FFF;
+ color: #333;
+ font-size: 12px;
+ .old {
+ span.idiff {
+ background-color: #FAA;
+ }
+ }
+ .new {
+ span.idiff {
+ background-color: #AFA;
+ }
+ }
+
+ table {
+ width: 100%;
+ font-family: $monospace_font;
+ border: none;
+ margin: 0px;
+ padding: 0px;
+ td {
+ line-height: 18px;
+ font-size: 12px;
+ }
+ }
+ .old_line, .new_line, .diff_line {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ background: #EEE;
+ color: #666;
+ padding: 0px 5px;
+ border-right: 1px solid #ccc;
+ text-align: right;
+ min-width: 35px;
+ max-width: 50px;
+ width: 35px;
+ @include user-select(none);
+ a {
+ float: left;
+ width: 35px;
+ font-weight: normal;
+ color: #666;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ &.new {
+ background: #CFD;
+ }
+ &.old {
+ background: #FDD;
+ }
+ }
+ .diff_line {
+ padding: 0;
+ }
+ .line_holder {
+ &.old .old_line,
+ &.old .new_line {
+ background: #FCC;
+ border-color: #E7BABA;
+ }
+ &.new .old_line,
+ &.new .new_line {
+ background: #CFC;
+ border-color: #B9ECB9;
+ }
+ }
+ .line_content {
+ display: block;
+ white-space: pre;
+ height: 18px;
+ margin: 0px;
+ padding: 0px 0.5em;
+ border: none;
+ &.new {
+ background: #CFD;
+ }
+ &.old {
+ background: #FDD;
+ }
+ &.matched {
+ color: #ccc;
+ background: #fafafa;
+ }
+ &.parallel {
+ display: table-cell;
+ overflow: hidden;
+ width: 50%;
+ }
+ }
+ }
+ .image {
+ background: #ddd;
+ text-align: center;
+ padding: 30px;
+ .wrap{
+ display: inline-block;
+ }
+
+ .frame {
+ display: inline-block;
+ background-color: #fff;
+ line-height: 0;
+ img{
+ border: 1px solid #FFF;
+ background: url('trans_bg.gif');
+ max-width: 100%;
+ }
+ &.deleted {
+ border: 1px solid $deleted;
+ }
+
+ &.added {
+ border: 1px solid $added;
+ }
+ }
+ .image-info{
+ font-size: 12px;
+ margin: 5px 0 0 0;
+ color: grey;
+ }
+
+ .view.swipe{
+ position: relative;
+
+ .swipe-frame{
+ display: block;
+ margin: auto;
+ position: relative;
+ }
+ .swipe-wrap{
+ overflow: hidden;
+ border-left: 1px solid #999;
+ position: absolute;
+ display: block;
+ top: 13px;
+ right: 7px;
+ }
+ .frame{
+ top: 0;
+ right: 0;
+ position: absolute;
+ &.deleted{
+ margin: 0;
+ display: block;
+ top: 13px;
+ right: 7px;
+ }
+ }
+ .swipe-bar{
+ display: block;
+ height: 100%;
+ width: 15px;
+ z-index: 100;
+ position: absolute;
+ cursor: pointer;
+ &:hover{
+ .top-handle{
+ background-position: -15px 3px;
+ }
+ .bottom-handle{
+ background-position: -15px -11px;
+ }
+ };
+ .top-handle{
+ display: block;
+ height: 14px;
+ width: 15px;
+ position: absolute;
+ top: 0px;
+ background: url('swipemode_sprites.gif') 0 3px no-repeat;
+ }
+ .bottom-handle{
+ display: block;
+ height: 14px;
+ width: 15px;
+ position: absolute;
+ bottom: 0px;
+ background: url('swipemode_sprites.gif') 0 -11px no-repeat;
+ }
+ }
+ } //.view.swipe
+ .view.onion-skin{
+ .onion-skin-frame{
+ display: block;
+ margin: auto;
+ position: relative;
+ }
+ .frame.added, .frame.deleted {
+ position: absolute;
+ display: block;
+ top: 0px;
+ left: 0px;
+ }
+ .controls{
+ display: block;
+ height: 14px;
+ width: 300px;
+ z-index: 100;
+ position: absolute;
+ bottom: 0px;
+ left: 50%;
+ margin-left: -150px;
+
+ .drag-track{
+ display: block;
+ position: absolute;
+ left: 12px;
+ height: 10px;
+ width: 276px;
+ background: url('onion_skin_sprites.gif') -4px -20px repeat-x;
+ }
+
+ .dragger {
+ display: block;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ height: 14px;
+ width: 14px;
+ background: url('onion_skin_sprites.gif') 0px -34px repeat-x;
+ cursor: pointer;
+ }
+
+ .transparent {
+ display: block;
+ position: absolute;
+ top: 2px;
+ right: 0px;
+ height: 10px;
+ width: 10px;
+ background: url('onion_skin_sprites.gif') -2px 0px no-repeat;
+ }
+
+ .opaque {
+ display: block;
+ position: absolute;
+ top: 2px;
+ left: 0px;
+ height: 10px;
+ width: 10px;
+ background: url('onion_skin_sprites.gif') -2px -10px no-repeat;
+ }
+ }
+ } //.view.onion-skin
+ }
+ .view-modes{
+
+ padding: 10px;
+ text-align: center;
+
+ background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
+ background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
+ background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
+ background-image: -ms-linear-gradient(#eee 6.6%, #dfdfdf);
+ background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
+
+ ul, li{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: inline-block;
+ }
+
+ li{
+ color: grey;
+ border-left: 1px solid #c1c1c1;
+ padding: 0 12px 0 16px;
+ cursor: pointer;
+ &:first-child{
+ border-left: none;
+ }
+ &:hover{
+ text-decoration: underline;
+ }
+ &.active{
+ &:hover{
+ text-decoration: none;
+ }
+ cursor: default;
+ color: #333;
+ }
+ &.disabled{
+ display: none;
+ }
+ }
+ }
+}
diff --git a/app/assets/stylesheets/sections/events.scss b/app/assets/stylesheets/sections/events.scss
index a576fefdea1..6ef12b20a5a 100644
--- a/app/assets/stylesheets/sections/events.scss
+++ b/app/assets/stylesheets/sections/events.scss
@@ -37,8 +37,8 @@
&.event-inline {
.avatar {
- width: 16px;
- height: 16px;
+ position: relative;
+ top: -2px;
}
}
@@ -113,6 +113,7 @@
&.commit {
background: transparent;
padding: 3px;
+ padding-left: 0;
border: none;
color: #666;
.commit-row-title {
@@ -122,6 +123,7 @@
&.commits-stat {
display: block;
padding: 3px;
+ padding-left: 0;
&:hover {
background: none;
diff --git a/app/assets/stylesheets/sections/groups.scss b/app/assets/stylesheets/sections/groups.scss
new file mode 100644
index 00000000000..60ec79acadb
--- /dev/null
+++ b/app/assets/stylesheets/sections/groups.scss
@@ -0,0 +1,9 @@
+.new-group-member-holder {
+ margin-top: 50px;
+ background: #f9f9f9;
+ padding-top: 20px;
+}
+
+.member-search-form {
+ float: left;
+}
diff --git a/app/assets/stylesheets/sections/header.scss b/app/assets/stylesheets/sections/header.scss
index b0dd0d08356..68873327845 100644
--- a/app/assets/stylesheets/sections/header.scss
+++ b/app/assets/stylesheets/sections/header.scss
@@ -19,7 +19,7 @@ header {
line-height: 32px;
padding: 6px 10px;
- &:hover {
+ &:hover, &:focus, &:active {
background: none;
}
}
@@ -29,6 +29,64 @@ header {
float: right;
margin-right: 0;
}
+
+ .navbar-toggle {
+ color: $style_color;
+ margin: 0 -15px 0 0;
+ padding: 10px;
+ border-radius: 0;
+
+ button i { font-size: 22px; }
+
+ &.collapsed { background-color: transparent !important;}
+
+ &:hover {
+ background-color: #EEE;
+ }
+ }
+ }
+
+ .turbolink-spinner {
+ font-size: 20px;
+ margin-right: 10px;
+ }
+
+ @media (max-width: $screen-xs-max) {
+ border-width: 0;
+ font-size: 18px;
+
+ .app_logo { margin-left: -15px; }
+ .title {
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: top;
+ white-space: nowrap;
+ max-width: 70%;
+ }
+
+ .navbar-collapse {
+ padding-right: 0;
+ padding-left: 0;
+ }
+
+ .navbar-nav {
+ margin: 5px 0;
+
+ .visible-xs, .visable-sm {
+ display: table-cell !important;
+ }
+ }
+
+ li {
+ display: table-cell;
+ width: 1%;
+
+ a {
+ text-align: center;
+ font-size: 18px !important;
+ }
+ }
}
}
@@ -50,7 +108,7 @@ header {
h1 {
margin: 0;
- background: url('logo-black.png') no-repeat center center;
+ background: image-url('logo-black.png') no-repeat center center;
background-size: 32px;
float: left;
height: 46px;
@@ -69,7 +127,7 @@ header {
* Project / Area name
*
*/
- .project_name {
+ .title {
position: relative;
float: left;
margin: 0;
@@ -128,11 +186,14 @@ header {
background: #708090;
border-bottom: 1px solid #AAA;
+ .navbar-toggle { color: #fff; }
+
.nav > li > a {
color: #AAA;
text-shadow: 0 1px 0 #444;
- &:hover {
+ &:hover, &:focus, &:active {
+ background: none;
color: #FFF;
}
}
@@ -160,18 +221,18 @@ header {
.app_logo {
a {
h1 {
- background: url('logo-white.png') no-repeat center center;
+ background: image-url('logo-white.png') no-repeat center center;
background-size: 32px;
color: #fff;
text-shadow: 0 1px 1px #444;
}
}
}
- .project_name {
+ .title {
a {
- color: #BBB;
+ color: #FFF;
&:hover {
- color: #FFF;
+ text-decoration: underline;
}
}
color: #fff;
diff --git a/app/assets/stylesheets/sections/issues.scss b/app/assets/stylesheets/sections/issues.scss
index 81d945a9b3c..d4f8c8108ab 100644
--- a/app/assets/stylesheets/sections/issues.scss
+++ b/app/assets/stylesheets/sections/issues.scss
@@ -14,8 +14,8 @@
.issue-check {
float: left;
- padding: 8px 0;
padding-right: 8px;
+ margin-bottom: 10px;
min-width: 15px;
}
@@ -38,13 +38,21 @@
}
}
-input.check_all_issues {
+.check-all-holder {
+ height: 32px;
float: left;
- padding: 0;
- margin: 0;
- margin-right: 10px;
- position: relative;
- top: 13px;
+ margin-right: 12px;
+ padding: 6px 10px;
+ border: 1px solid #ccc;
+ @include border-radius(4px);
+
+
+ input.check_all_issues {
+ padding: 0;
+ margin: 0;
+ position: relative;
+ top: 3px;
+ }
}
.issues_content {
@@ -57,23 +65,6 @@ input.check_all_issues {
}
}
-.btn.close_issue {
- color: #B94A48;
- font-weight: bold;
- @include shade;
- &:hover {
- color: #B94A48;
- }
-}
-.btn.reopen_issue {
- color: #468847;
- font-weight: bold;
- @include shade;
- &:hover {
- color: #468847;
- }
-}
-
@media (min-width: 800px) { .issues_filters select { width: 160px; } }
@media (min-width: 1200px) { .issues_filters select { width: 220px; } }
@@ -93,6 +84,13 @@ input.check_all_issues {
.update_selected_issues {
margin-left: 4px;
}
+
+ .select2-container .select2-choice {
+ height: 32px;
+ line-height: 28px;
+ color: #444 !important;
+ font-weight: 500;
+ }
}
}
@@ -127,3 +125,21 @@ input.check_all_issues {
form.edit-issue {
margin: 0;
}
+
+.merge-request,
+.issue {
+ &.today {
+ background: #EFE;
+ border-color: #CEC;
+ }
+
+ &.closed {
+ background: #F5f5f5;
+ border-color: #E5E5E5;
+ }
+
+ &.merged {
+ background: #F5f5f5;
+ border-color: #E5E5E5;
+ }
+}
diff --git a/app/assets/stylesheets/sections/login.scss b/app/assets/stylesheets/sections/login.scss
index 186294424a2..a78a9cd4879 100644
--- a/app/assets/stylesheets/sections/login.scss
+++ b/app/assets/stylesheets/sections/login.scss
@@ -6,11 +6,10 @@
}
.login-box{
- width: 304px;
+ max-width: 304px;
position: relative;
@include border-radius(5px);
margin: auto;
- padding: 20px;
background: white;
}
@@ -23,7 +22,7 @@
background-color: #f1f1f1;
font-size: 16px;
padding: 14px 10px;
- width: 280px;
+ width: 100%;
height: auto;
&.top {
diff --git a/app/assets/stylesheets/sections/merge_requests.scss b/app/assets/stylesheets/sections/merge_requests.scss
index d3462d6aaa7..5341f411e54 100644
--- a/app/assets/stylesheets/sections/merge_requests.scss
+++ b/app/assets/stylesheets/sections/merge_requests.scss
@@ -31,10 +31,10 @@
.mr_source_commit,
.mr_target_commit {
+ margin-top: 10px;
.commit {
margin: 0;
- padding: 0;
- padding: 5px 0;
+ padding: 2px 0;
list-style: none;
&:hover {
background: none;
@@ -90,15 +90,8 @@
padding-top: 15px;
}
-.merge-request-branches {
- .commit-row-message {
- font-weight: normal !important;
- }
-
- .select2-container .select2-single {
- span {
- font-weight: bold;
- color: #555;
- }
- }
+// hide mr close link for inline diff comment form
+.diff-file .close-mr-link,
+.diff-file .reopen-mr-link {
+ display: none;
}
diff --git a/app/assets/stylesheets/sections/nav.scss b/app/assets/stylesheets/sections/nav.scss
index f706854b4fe..88f16a21596 100644
--- a/app/assets/stylesheets/sections/nav.scss
+++ b/app/assets/stylesheets/sections/nav.scss
@@ -35,9 +35,8 @@
width: 1%;
&.active {
a {
- color: $style_color;
- font-weight: bolder;
-
+ color: #333;
+ font-weight: bold;
&:after {
content: '';
display: block;
@@ -46,7 +45,7 @@
left: 50%;
width: 0;
height: 0;
- border-color: transparent transparent #777 transparent;
+ border-color: transparent transparent #333 transparent;
border-style: solid;
border-width: 6px;
margin-left: -6px;
@@ -56,7 +55,20 @@
&:hover {
a {
- color: $style_color;
+ color: $link_color;
+ &:after {
+ content: '';
+ display: block;
+ position: relative;
+ bottom: 8px;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border-color: transparent transparent #29b transparent;
+ border-style: solid;
+ border-width: 6px;
+ margin-left: -6px;
+ }
}
}
@@ -73,7 +85,7 @@
a {
display: block;
text-align: center;
- font-weight: normal;
+ font-weight: 500;
height: 38px;
line-height: 34px;
color: #777;
@@ -83,4 +95,38 @@
padding-top: 2px;
}
}
+
+ @media (max-width: $screen-xs-max) {
+ font-size: 18px;
+ margin: 0;
+
+ max-height: none;
+
+ &, .container {
+ padding: 0;
+ border-top: 0;
+ }
+
+ ul {
+ height: auto;
+
+ li {
+ display: list-item;
+ width: auto;
+ padding: 5px 0;
+
+ &.active {
+ background-color: $primary_color;
+
+ a {
+ color: #fff;
+ font-weight: normal;
+ text-shadow: none;
+
+ &:after { display: none; }
+ }
+ }
+ }
+ }
+ }
}
diff --git a/app/assets/stylesheets/sections/notes.scss b/app/assets/stylesheets/sections/notes.scss
index 1ae0e161aa2..8a38cd5a939 100644
--- a/app/assets/stylesheets/sections/notes.scss
+++ b/app/assets/stylesheets/sections/notes.scss
@@ -47,13 +47,13 @@ ul.notes {
.discussion-body {
margin-left: 50px;
- .file,
+ .diff-file,
.discussion-hidden,
.notes {
@extend .borders;
background-color: #F9F9F9;
}
- .file .notes {
+ .diff-file .notes {
/* reset */
background: inherit;
border: none;
@@ -87,15 +87,10 @@ ul.notes {
}
.attachment {
font-size: 14px;
- margin-top: -20px;
}
.note-body {
@include md-typography;
margin-left: 45px;
-
- .highlight {
- @include border-radius(4px);
- }
}
.note-header {
padding-bottom: 5px;
@@ -118,7 +113,7 @@ ul.notes {
}
}
-.file .notes_holder {
+.diff-file .notes_holder {
font-size: 13px;
line-height: 18px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@@ -188,7 +183,7 @@ ul.notes {
}
}
}
-.file .note .note-actions {
+.diff-file .note .note-actions {
right: 0;
top: 0;
}
@@ -199,7 +194,7 @@ ul.notes {
* Line note button on the side of diffs
*/
-.file tr.line_holder {
+.diff-file tr.line_holder {
.add-diff-note {
background: url("diff_note_add.png") no-repeat left 0;
height: 22px;
@@ -239,22 +234,25 @@ ul.notes {
.reply-btn {
@extend .btn-primary;
}
-.file .content tr.line_holder:hover {
- &> td.line_content {
- background: $hover !important;
- border-color: darken($hover, 10%) !important;
+.diff-file .diff-content {
+ tr.line_holder:hover {
+ &> td.line_content {
+ background: $hover !important;
+ border-color: darken($hover, 10%) !important;
+ }
+ &> td.new_line,
+ &> td.old_line {
+ background: darken($hover, 4%) !important;
+ border-color: darken($hover, 10%) !important;
+ }
}
- &> td.new_line,
- &> td.old_line {
- background: darken($hover, 4%) !important;
- border-color: darken($hover, 10%) !important;
+
+ tr.line_holder:hover > td .line_note_link {
+ opacity: 1.0;
+ filter: alpha(opacity=100);
}
}
-.file .content tr.line_holder:hover > td .line_note_link {
- opacity: 1.0;
- filter: alpha(opacity=100);
-}
-.file,
+.diff-file,
.discussion {
.new_note {
margin: 0;
@@ -292,7 +290,7 @@ ul.notes {
box-shadow: none;
font-size: 14px;
height: 80px;
- width: 98.6%;
+ width: 100%;
}
}
}
@@ -306,6 +304,7 @@ ul.notes {
@extend .col-md-4;
@extend .thumbnail;
margin-left: 45px;
+ float: none;
}
@@ -341,7 +340,7 @@ ul.notes {
box-shadow: none;
font-size: 14px;
height: 80px;
- width: 98.6%;
+ width: 100%;
}
.form-actions {
diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss
index 3a3bf7cdf2a..7a696c21e47 100644
--- a/app/assets/stylesheets/sections/profile.scss
+++ b/app/assets/stylesheets/sections/profile.scss
@@ -105,3 +105,23 @@
}
}
}
+
+.profile-groups-avatars {
+ margin: 0 5px 10px 0;
+
+ img {
+ width: 50px;
+ height: 50px;
+ }
+}
+
+.global-notifications-form .level-title {
+ font-size: 15px;
+ color: #333;
+ font-weight: bold;
+}
+
+.notification-icon-holder {
+ width: 20px;
+ float: left;
+}
diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss
index 178364835ae..5757858a1ce 100644
--- a/app/assets/stylesheets/sections/projects.scss
+++ b/app/assets/stylesheets/sections/projects.scss
@@ -123,14 +123,9 @@
}
.save-project-loader {
- img {
- margin-top: 50px;
- margin-bottom: 50px;
- }
- h3 {
- @extend .page-title;
- }
-
+ margin-top: 50px;
+ margin-bottom: 50px;
+ color: #555;
}
ul.nav.nav-projects-tabs {
diff --git a/app/assets/stylesheets/sections/tree.scss b/app/assets/stylesheets/sections/tree.scss
index dfdcbb59b6b..55a5819b55a 100644
--- a/app/assets/stylesheets/sections/tree.scss
+++ b/app/assets/stylesheets/sections/tree.scss
@@ -127,9 +127,27 @@
border-top: 1px dashed #CCC;
padding-top: 10px;
- h4 {
+ .readme-file-title {
font-size: 14px;
margin-bottom: 20px;
color: #777;
}
}
+
+.blob-commit-info {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ margin-bottom: 10px;
+
+ .commit {
+ .commit-row-title {
+ font-size: 13px;
+
+ .commit-row-message {
+ font-weight: normal;
+ color: #555;
+ }
+ }
+ }
+}
diff --git a/app/assets/stylesheets/themes/ui_color.scss b/app/assets/stylesheets/themes/ui_color.scss
index 7d9cab215c8..edac4290e74 100644
--- a/app/assets/stylesheets/themes/ui_color.scss
+++ b/app/assets/stylesheets/themes/ui_color.scss
@@ -18,7 +18,7 @@
.navbar-inner {
background: #547;
border-bottom: 1px solid #435;
- .app_logo {
+ .app_logo, .navbar-toggle {
&:hover {
background-color: #435;
}
@@ -36,4 +36,8 @@
}
}
}
+
+ .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
+ background: #769;
+ }
}
diff --git a/app/assets/stylesheets/themes/ui_gray.scss b/app/assets/stylesheets/themes/ui_gray.scss
index 41c08c840e2..959febad6fe 100644
--- a/app/assets/stylesheets/themes/ui_gray.scss
+++ b/app/assets/stylesheets/themes/ui_gray.scss
@@ -18,7 +18,7 @@
.navbar-inner {
background: #373737;
border-bottom: 1px solid #272727;
- .app_logo {
+ .app_logo, .navbar-toggle {
&:hover {
background-color: #272727;
}
diff --git a/app/assets/stylesheets/themes/ui_mars.scss b/app/assets/stylesheets/themes/ui_mars.scss
index aba3e0ca827..9af5adbf10a 100644
--- a/app/assets/stylesheets/themes/ui_mars.scss
+++ b/app/assets/stylesheets/themes/ui_mars.scss
@@ -18,7 +18,7 @@
.navbar-inner {
background: #474D57;
border-bottom: 1px solid #373D47;
- .app_logo {
+ .app_logo, .navbar-toggle {
&:hover {
background-color: #373D47;
}
diff --git a/app/assets/stylesheets/themes/ui_modern.scss b/app/assets/stylesheets/themes/ui_modern.scss
index 015a4bbf0c3..b0827deb1ac 100644
--- a/app/assets/stylesheets/themes/ui_modern.scss
+++ b/app/assets/stylesheets/themes/ui_modern.scss
@@ -18,7 +18,7 @@
.navbar-inner {
background: #345;
border-bottom: 1px solid #234;
- .app_logo {
+ .app_logo, .navbar-toggle {
&:hover {
background-color: #234;
}
diff --git a/app/contexts/commit_load_context.rb b/app/contexts/commit_load_context.rb
deleted file mode 100644
index 0c684976b64..00000000000
--- a/app/contexts/commit_load_context.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-class CommitLoadContext < BaseContext
- def execute
- result = {
- commit: nil,
- suppress_diff: false,
- line_notes: [],
- notes_count: 0,
- note: nil,
- status: :ok
- }
-
- commit = project.repository.commit(params[:id])
-
- if commit
- line_notes = project.notes.for_commit_id(commit.id).inline
-
- result[:commit] = commit
- result[:note] = project.build_commit_note(commit)
- result[:line_notes] = line_notes
- result[:notes_count] = project.notes.for_commit_id(commit.id).count
- result[:branches] = project.repository.branch_names_contains(commit.id)
-
- begin
- result[:suppress_diff] = true if commit.diff_suppress? && !params[:force_show_diff]
- result[:force_suppress_diff] = commit.diff_force_suppress?
- rescue Grit::Git::GitTimeout
- result[:suppress_diff] = true
- result[:status] = :huge_commit
- end
- end
-
- result
- end
-end
diff --git a/app/contexts/filter_context.rb b/app/contexts/filter_context.rb
deleted file mode 100644
index fb0d42cf87d..00000000000
--- a/app/contexts/filter_context.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-class FilterContext
- attr_accessor :klass, :current_user, :params
-
- def initialize(klass, current_user, params)
- @klass = klass
- @current_user = current_user
- @params = params
- end
-
- def execute
- items = by_scope
- items = by_state(items)
- items = by_project(items)
- items = by_search(items)
- end
-
- private
-
- def by_scope
- table_name = klass.table_name
-
- case params[:scope]
- when 'authored' then
- current_user.send(table_name)
- when 'all' then
- klass.of_projects(current_user.authorized_projects.pluck(:id))
- else
- current_user.send("assigned_#{table_name}")
- end
- end
-
- def by_state(items)
- case params[:status]
- when 'closed'
- items.closed
- when 'all'
- items
- else
- items.opened
- end
- end
-
- def by_project(items)
- if params[:project_id].present?
- items = items.of_projects(params[:project_id])
- end
-
- items
- end
-
- def by_search(items)
- if params[:search].present?
- items = items.search(params[:search])
- end
-
- items
- end
-end
diff --git a/app/contexts/issues/list_context.rb b/app/contexts/issues/list_context.rb
deleted file mode 100644
index b256fd4c732..00000000000
--- a/app/contexts/issues/list_context.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-module Issues
- class ListContext < BaseContext
- attr_accessor :issues
-
- def execute
- @issues = @project.issues
-
- @issues = case params[:state]
- when 'all' then @issues
- when 'closed' then @issues.closed
- else @issues.opened
- end
-
- @issues = case params[:scope]
- when 'assigned-to-me' then @issues.assigned_to(current_user)
- when 'created-by-me' then @issues.authored(current_user)
- else @issues
- end
-
- @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
- @issues = @issues.includes(:author, :project)
-
- # Filter by specific assignee_id (or lack thereof)?
- if params[:assignee_id].present?
- @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
- end
-
- # Filter by specific milestone_id (or lack thereof)?
- if params[:milestone_id].present?
- @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
- end
-
- # Sort by :sort param
- @issues = sort(@issues, params[:sort])
-
- @issues
- end
-
- private
-
- def sort(issues, condition)
- case condition
- when 'newest' then issues.except(:order).order('created_at DESC')
- when 'oldest' then issues.except(:order).order('created_at ASC')
- when 'recently_updated' then issues.except(:order).order('updated_at DESC')
- when 'last_updated' then issues.except(:order).order('updated_at ASC')
- when 'milestone_due_soon' then issues.except(:order).joins(:milestone).order("milestones.due_date ASC")
- when 'milestone_due_later' then issues.except(:order).joins(:milestone).order("milestones.due_date DESC")
- else issues
- end
- end
- end
-end
diff --git a/app/contexts/merge_requests_load_context.rb b/app/contexts/merge_requests_load_context.rb
deleted file mode 100644
index c3408db6e11..00000000000
--- a/app/contexts/merge_requests_load_context.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# Build collection of Merge Requests
-# based on filtering passed via params for @project
-class MergeRequestsLoadContext < BaseContext
- def execute
- merge_requests = @project.merge_requests
-
- merge_requests = case params[:state]
- when 'all' then merge_requests
- when 'closed' then merge_requests.closed
- else merge_requests.opened
- end
-
- merge_requests = case params[:scope]
- when 'assigned-to-me' then merge_requests.assigned_to(current_user)
- when 'created-by-me' then merge_requests.authored(current_user)
- else merge_requests
- end
-
-
- merge_requests = merge_requests.page(params[:page]).per(20)
- merge_requests = merge_requests.includes(:author, :source_project, :target_project).order("created_at desc")
-
- # Filter by specific assignee_id (or lack thereof)?
- if params[:assignee_id].present?
- merge_requests = merge_requests.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
- end
-
- # Filter by specific milestone_id (or lack thereof)?
- if params[:milestone_id].present?
- merge_requests = merge_requests.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
- end
-
- merge_requests
- end
-end
diff --git a/app/contexts/notes/load_context.rb b/app/contexts/notes/load_context.rb
deleted file mode 100644
index 234e9ac3cdd..00000000000
--- a/app/contexts/notes/load_context.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-module Notes
- class LoadContext < BaseContext
- def execute
- target_type = params[:target_type]
- target_id = params[:target_id]
-
-
- @notes = case target_type
- when "commit"
- project.notes.for_commit_id(target_id).not_inline.fresh
- when "issue"
- project.issues.find(target_id).notes.inc_author.fresh
- when "merge_request"
- project.merge_requests.find(target_id).mr_and_commit_notes.inc_author.fresh
- when "snippet"
- project.snippets.find(target_id).notes.fresh
- end
- end
- end
-end
diff --git a/app/contexts/test_hook_context.rb b/app/contexts/test_hook_context.rb
deleted file mode 100644
index 63eda6c7d06..00000000000
--- a/app/contexts/test_hook_context.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class TestHookContext < BaseContext
- def execute
- hook = project.hooks.find(params[:id])
- data = GitPushService.new.sample_data(project, current_user)
- hook.execute(data)
- end
-end
diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 89b395786b3..4bb3cf07da0 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -52,6 +52,6 @@ class Admin::GroupsController < Admin::ApplicationController
private
def group
- @group = Group.find_by_path(params[:id])
+ @group = Group.find_by(path: params[:id])
end
end
diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb
index 7e3e29f59fb..13a7bdcf34a 100644
--- a/app/controllers/admin/projects_controller.rb
+++ b/app/controllers/admin/projects_controller.rb
@@ -5,7 +5,7 @@ class Admin::ProjectsController < Admin::ApplicationController
def index
owner_id = params[:owner_id]
- user = User.find_by_id(owner_id)
+ user = User.find_by(id: owner_id)
@projects = user ? user.owned_projects : Project.all
@projects = @projects.where("visibility_level IN (?)", params[:visibility_levels]) if params[:visibility_levels].present?
@@ -19,7 +19,7 @@ class Admin::ProjectsController < Admin::ApplicationController
end
def transfer
- result = ::Projects::TransferContext.new(@project, current_user, project: params).execute(:admin)
+ result = ::Projects::TransferService.new(@project, current_user, project: params).execute(:admin)
if result
redirect_to [:admin, @project]
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index 2f981627137..5b06af79d5a 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -68,7 +68,9 @@ class Admin::UsersController < Admin::ApplicationController
params[:user].delete(:password_confirmation)
end
- user.admin = (admin && admin.to_i > 0)
+ if admin.present?
+ user.admin = !admin.to_i.zero?
+ end
respond_to do |format|
if user.update_attributes(params[:user], as: :admin)
@@ -100,6 +102,6 @@ class Admin::UsersController < Admin::ApplicationController
protected
def user
- @user ||= User.find_by_username!(params[:id])
+ @user ||= User.find_by!(username: params[:id])
end
end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index b6501eacea3..9ed46c23942 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -135,12 +135,12 @@ class ApplicationController < ActionController::Base
end
end
- def render_404
- render file: Rails.root.join("public", "404"), layout: false, status: "404"
+ def render_403
+ head :forbidden
end
- def render_403
- render file: Rails.root.join("public", "403"), layout: false, status: "403"
+ def render_404
+ render file: Rails.root.join("public", "404"), layout: false, status: "404"
end
def require_non_empty_project
@@ -154,7 +154,6 @@ class ApplicationController < ActionController::Base
end
def dev_tools
- Rack::MiniProfiler.authorize_request
end
def default_headers
@@ -171,6 +170,7 @@ class ApplicationController < ActionController::Base
gon.api_token = current_user.private_token if current_user
gon.gravatar_url = request.ssl? || Gitlab.config.gitlab.https ? Gitlab.config.gravatar.ssl_url : Gitlab.config.gravatar.plain_url
gon.relative_url_root = Gitlab.config.gitlab.relative_url_root
+ gon.gravatar_enabled = Gitlab.config.gravatar.enabled
end
def check_password_expiration
@@ -207,7 +207,11 @@ class ApplicationController < ActionController::Base
end
def configure_permitted_parameters
- devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email, :password) }
+ devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email, :password, :login, :remember_me) }
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :name, :password, :password_confirmation) }
end
+
+ def hexdigest(string)
+ Digest::SHA1.hexdigest string
+ end
end
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index 27955c62488..a74e97ac253 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -3,6 +3,8 @@ class DashboardController < ApplicationController
before_filter :load_projects, except: [:projects]
before_filter :event_filter, only: :show
+ before_filter :default_filter, only: [:issues, :merge_requests]
+
def show
# Fetch only 30 projects.
@@ -39,7 +41,7 @@ class DashboardController < ApplicationController
current_user.authorized_projects
end
- @projects = @projects.where(namespace_id: Group.find_by_name(params[:group])) if params[:group].present?
+ @projects = @projects.where(namespace_id: Group.find_by(name: params[:group])) if params[:group].present?
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
@projects = @projects.includes(:namespace)
@projects = @projects.tagged_with(params[:label]) if params[:label].present?
@@ -51,14 +53,15 @@ class DashboardController < ApplicationController
end
def merge_requests
- @merge_requests = FilterContext.new(MergeRequest, current_user, params).execute
- @merge_requests = @merge_requests.recent.page(params[:page]).per(20)
+ @merge_requests = MergeRequestsFinder.new.execute(current_user, params)
+ @merge_requests = @merge_requests.page(params[:page]).per(20)
+ @merge_requests = @merge_requests.preload(:author, :target_project)
end
def issues
- @issues = FilterContext.new(Issue, current_user, params).execute
- @issues = @issues.recent.page(params[:page]).per(20)
- @issues = @issues.includes(:author, :project)
+ @issues = IssuesFinder.new.execute(current_user, params)
+ @issues = @issues.page(params[:page]).per(20)
+ @issues = @issues.preload(:author, :project)
respond_to do |format|
format.html
@@ -71,4 +74,10 @@ class DashboardController < ApplicationController
def load_projects
@projects = current_user.authorized_projects.sorted_by_activity.non_archived
end
+
+ def default_filter
+ params[:scope] = 'assigned-to-me' if params[:scope].blank?
+ params[:state] = 'opened' if params[:state].blank?
+ params[:authorized_only] = true
+ end
end
diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb
deleted file mode 100644
index a0c8a000fc7..00000000000
--- a/app/controllers/errors_controller.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ErrorsController < ApplicationController
-end
diff --git a/app/controllers/groups/avatars_controller.rb b/app/controllers/groups/avatars_controller.rb
new file mode 100644
index 00000000000..38071410f40
--- /dev/null
+++ b/app/controllers/groups/avatars_controller.rb
@@ -0,0 +1,12 @@
+class Groups::AvatarsController < ApplicationController
+ layout "profile"
+
+ def destroy
+ @group = Group.find_by(path: params[:group_id])
+ @group.remove_avatar!
+
+ @group.save
+
+ redirect_to edit_group_path(@group)
+ end
+end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 5e8efe35a46..ebddf36de97 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -1,4 +1,5 @@
class GroupsController < ApplicationController
+ skip_before_filter :authenticate_user!, only: [:show, :issues, :members, :merge_requests]
respond_to :html
before_filter :group, except: [:new, :create]
@@ -10,6 +11,8 @@ class GroupsController < ApplicationController
# Load group projects
before_filter :projects, except: [:new, :create]
+ before_filter :default_filter, only: [:issues, :merge_requests]
+
layout :determine_layout
before_filter :set_title, only: [:new, :create]
@@ -34,7 +37,7 @@ class GroupsController < ApplicationController
@events = Event.in_projects(project_ids)
@events = event_filter.apply_filter(@events)
@events = @events.limit(20).offset(params[:offset] || 0)
- @last_push = current_user.recent_push
+ @last_push = current_user.recent_push if current_user
respond_to do |format|
format.html
@@ -43,19 +46,16 @@ class GroupsController < ApplicationController
end
end
- # Get authored or assigned open merge requests
def merge_requests
- @merge_requests = FilterContext.new(MergeRequest, current_user, params).execute
- @merge_requests = @merge_requests.of_group(@group)
- @merge_requests = @merge_requests.recent.page(params[:page]).per(20)
+ @merge_requests = MergeRequestsFinder.new.execute(current_user, params)
+ @merge_requests = @merge_requests.page(params[:page]).per(20)
+ @merge_requests = @merge_requests.preload(:author, :target_project)
end
- # Get only assigned issues
def issues
- @issues = FilterContext.new(Issue, current_user, params).execute
- @issues = @issues.of_group(@group)
- @issues = @issues.recent.page(params[:page]).per(20)
- @issues = @issues.includes(:author, :project)
+ @issues = IssuesFinder.new.execute(current_user, params)
+ @issues = @issues.page(params[:page]).per(20)
+ @issues = @issues.preload(:author, :project)
respond_to do |format|
format.html
@@ -65,7 +65,14 @@ class GroupsController < ApplicationController
def members
@project = group.projects.find(params[:project_id]) if params[:project_id]
- @members = group.users_groups.order('group_access DESC')
+ @members = group.users_groups
+
+ if params[:search].present?
+ users = group.users.search(params[:search])
+ @members = @members.where(user_id: users)
+ end
+
+ @members = @members.order('group_access DESC').page(params[:page]).per(50)
@users_group = UsersGroup.new
end
@@ -89,21 +96,25 @@ class GroupsController < ApplicationController
protected
def group
- @group ||= Group.find_by_path(params[:id])
+ @group ||= Group.find_by(path: params[:id])
end
def projects
- @projects ||= current_user.authorized_projects.where(namespace_id: group.id).sorted_by_activity
+ @projects ||= ProjectsFinder.new.execute(current_user, group: group)
end
def project_ids
- projects.map(&:id)
+ projects.pluck(:id)
end
# Dont allow unauthorized access to group
def authorize_read_group!
unless @group and (projects.present? or can?(current_user, :read_group, @group))
- return render_404
+ if current_user.nil?
+ return authenticate_user!
+ else
+ return render_404
+ end
end
end
@@ -126,8 +137,22 @@ class GroupsController < ApplicationController
def determine_layout
if [:new, :create].include?(action_name.to_sym)
'navless'
- else
+ elsif current_user
'group'
+ else
+ 'public_group'
+ end
+ end
+
+ def default_filter
+ if params[:scope].blank?
+ if current_user
+ params[:scope] = 'assigned-to-me'
+ else
+ params[:scope] = 'all'
+ end
end
+ params[:state] = 'opened' if params[:state].blank?
+ params[:group_id] = @group.id
end
end
diff --git a/app/controllers/profiles/emails_controller.rb b/app/controllers/profiles/emails_controller.rb
new file mode 100644
index 00000000000..9996b67a8a4
--- /dev/null
+++ b/app/controllers/profiles/emails_controller.rb
@@ -0,0 +1,26 @@
+class Profiles::EmailsController < ApplicationController
+ layout "profile"
+
+ def index
+ @primary = current_user.email
+ @emails = current_user.emails
+ end
+
+ def create
+ @email = current_user.emails.new(params[:email])
+
+ flash[:alert] = @email.errors.full_messages.first unless @email.save
+
+ redirect_to profile_emails_url
+ end
+
+ def destroy
+ @email = current_user.emails.find(params[:id])
+ @email.destroy
+
+ respond_to do |format|
+ format.html { redirect_to profile_emails_url }
+ format.js { render nothing: true }
+ end
+ end
+end
diff --git a/app/controllers/profiles/groups_controller.rb b/app/controllers/profiles/groups_controller.rb
index 378ff6bcf34..9a4d088651e 100644
--- a/app/controllers/profiles/groups_controller.rb
+++ b/app/controllers/profiles/groups_controller.rb
@@ -7,18 +7,17 @@ class Profiles::GroupsController < ApplicationController
def leave
@users_group = group.users_groups.where(user_id: current_user.id).first
-
- if group.last_owner?(current_user)
- redirect_to(profile_groups_path, alert: "You can't leave group. You must add at least one more owner to it.")
- else
+ if can?(current_user, :destroy, @users_group)
@users_group.destroy
redirect_to(profile_groups_path, info: "You left #{group.name} group.")
+ else
+ return render_403
end
end
private
def group
- @group ||= Group.find_by_path(params[:id])
+ @group ||= Group.find_by(path: params[:id])
end
end
diff --git a/app/controllers/profiles/keys_controller.rb b/app/controllers/profiles/keys_controller.rb
index 541319e8d0f..b4f14e649e2 100644
--- a/app/controllers/profiles/keys_controller.rb
+++ b/app/controllers/profiles/keys_controller.rb
@@ -1,5 +1,6 @@
class Profiles::KeysController < ApplicationController
layout "profile"
+ skip_before_filter :authenticate_user!, only: [:get_keys]
def index
@keys = current_user.keys.order('id DESC')
@@ -32,4 +33,24 @@ class Profiles::KeysController < ApplicationController
format.js { render nothing: true }
end
end
+
+ # Get all keys of a user(params[:username]) in a text format
+ # Helpful for sysadmins to put in respective servers
+ def get_keys
+ if params[:username].present?
+ begin
+ user = User.find_by_username(params[:username])
+ if user.present?
+ render text: user.all_ssh_keys.join("\n")
+ else
+ render_404 and return
+ end
+ rescue => e
+ render text: e.message
+ end
+ else
+ render_404 and return
+ end
+ end
+
end
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index fc9807e3c47..a1a8bed09f4 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -6,6 +6,7 @@ class Projects::BlobController < Projects::ApplicationController
before_filter :authorize_read_project!
before_filter :authorize_code_access!
before_filter :require_non_empty_project
+ before_filter :authorize_push!, only: [:destroy]
before_filter :blob
@@ -13,7 +14,7 @@ class Projects::BlobController < Projects::ApplicationController
end
def destroy
- result = Files::DeleteContext.new(@project, current_user, params, @ref, @path).execute
+ result = Files::DeleteService.new(@project, current_user, params, @ref, @path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
diff --git a/app/controllers/projects/commit_controller.rb b/app/controllers/projects/commit_controller.rb
index 65b8a7283a7..c56df65dcba 100644
--- a/app/controllers/projects/commit_controller.rb
+++ b/app/controllers/projects/commit_controller.rb
@@ -6,34 +6,35 @@ class Projects::CommitController < Projects::ApplicationController
before_filter :authorize_read_project!
before_filter :authorize_code_access!
before_filter :require_non_empty_project
+ before_filter :commit
def show
- result = CommitLoadContext.new(project, current_user, params).execute
+ return git_not_found! unless @commit
- @commit = result[:commit]
+ @line_notes = project.notes.for_commit_id(commit.id).inline
+ @branches = project.repository.branch_names_contains(commit.id)
- if @commit.nil?
- git_not_found!
- return
+ begin
+ @suppress_diff = true if commit.diff_suppress? && !params[:force_show_diff]
+ @force_suppress_diff = commit.diff_force_suppress?
+ rescue Grit::Git::GitTimeout
+ @suppress_diff = true
+ @status = :huge_commit
end
- @suppress_diff = result[:suppress_diff]
- @force_suppress_diff = result[:force_suppress_diff]
-
- @note = result[:note]
- @line_notes = result[:line_notes]
- @branches = result[:branches]
- @notes_count = result[:notes_count]
+ @note = project.build_commit_note(commit)
+ @notes_count = project.notes.for_commit_id(commit.id).count
@notes = project.notes.for_commit_id(@commit.id).not_inline.fresh
@noteable = @commit
-
@comments_allowed = @reply_allowed = true
- @comments_target = { noteable_type: 'Commit',
- commit_id: @commit.id }
+ @comments_target = {
+ noteable_type: 'Commit',
+ commit_id: @commit.id
+ }
respond_to do |format|
format.html do
- if result[:status] == :huge_commit
+ if @status == :huge_commit
render "huge_commit" and return
end
end
@@ -42,4 +43,8 @@ class Projects::CommitController < Projects::ApplicationController
format.patch { render text: @commit.to_patch }
end
end
+
+ def commit
+ @commit ||= project.repository.commit(params[:id])
+ end
end
diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb
index b7531e2cefb..234b6058ff0 100644
--- a/app/controllers/projects/compare_controller.rb
+++ b/app/controllers/projects/compare_controller.rb
@@ -8,13 +8,14 @@ class Projects::CompareController < Projects::ApplicationController
end
def show
- compare = Gitlab::Git::Compare.new(@repository.raw_repository, params[:from], params[:to])
+ compare = Gitlab::Git::Compare.new(@repository.raw_repository, params[:from], params[:to], MergeRequestDiff::COMMITS_SAFE_SIZE)
@commits = compare.commits
@commit = compare.commit
@diffs = compare.diffs
@refs_are_same = compare.same
@line_notes = []
+ @timeout = compare.timeout
diff_line_count = Commit::diff_line_count(@diffs)
@suppress_diff = Commit::diff_suppress?(@diffs, diff_line_count) && !params[:force_show_diff]
diff --git a/app/controllers/projects/edit_tree_controller.rb b/app/controllers/projects/edit_tree_controller.rb
index 3921273620c..ff5206b6fa1 100644
--- a/app/controllers/projects/edit_tree_controller.rb
+++ b/app/controllers/projects/edit_tree_controller.rb
@@ -1,17 +1,25 @@
class Projects::EditTreeController < Projects::BaseTreeController
before_filter :require_branch_head
before_filter :blob
+ before_filter :authorize_push!
+ before_filter :from_merge_request
+ before_filter :after_edit_path
def show
@last_commit = Gitlab::Git::Commit.last_for_path(@repository, @ref, @path).sha
end
def update
- result = Files::UpdateContext.new(@project, current_user, params, @ref, @path).execute
+ result = Files::UpdateService.new(@project, current_user, params, @ref, @path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
- redirect_to project_blob_path(@project, @id)
+
+ if from_merge_request
+ from_merge_request.reload_code
+ end
+
+ redirect_to after_edit_path
else
flash[:alert] = result[:error]
render :show
@@ -23,4 +31,19 @@ class Projects::EditTreeController < Projects::BaseTreeController
def blob
@blob ||= @repository.blob_at(@commit.id, @path)
end
+
+ def after_edit_path
+ @after_edit_path ||=
+ if from_merge_request
+ diffs_project_merge_request_path(from_merge_request.target_project, from_merge_request) +
+ "#file-path-#{hexdigest(@path)}"
+ else
+ project_blob_path(@project, @id)
+ end
+ end
+
+ def from_merge_request
+ # If blob edit was initiated from merge request page
+ @from_merge_request ||= MergeRequest.find_by(id: params[:from_merge_request_id])
+ end
end
diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb
index 314d87df034..a863b318324 100644
--- a/app/controllers/projects/hooks_controller.rb
+++ b/app/controllers/projects/hooks_controller.rb
@@ -24,15 +24,20 @@ class Projects::HooksController < Projects::ApplicationController
end
def test
- TestHookContext.new(project, current_user, params).execute
+ TestHookService.new.execute(hook, current_user)
redirect_to :back
end
def destroy
- @hook = @project.hooks.find(params[:id])
- @hook.destroy
+ hook.destroy
redirect_to project_hooks_path(@project)
end
+
+ private
+
+ def hook
+ @hook ||= @project.hooks.find(params[:id])
+ end
end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index c58ac71277e..9d97c820f38 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -11,6 +11,9 @@ class Projects::IssuesController < Projects::ApplicationController
# Allow modify issue
before_filter :authorize_modify_issue!, only: [:edit, :update]
+ # Allow issues bulk update
+ before_filter :authorize_admin_issues!, only: [:bulk_update]
+
respond_to :html
def index
@@ -25,7 +28,7 @@ class Projects::IssuesController < Projects::ApplicationController
@milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero?
sort_param = params[:sort] || 'newest'
@sort = sort_param.humanize unless sort_param.empty?
-
+ @assignees = User.where(id: @project.issues.pluck(:assignee_id))
respond_to do |format|
format.html
@@ -89,7 +92,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
def bulk_update
- result = Issues::BulkUpdateContext.new(project, current_user, params).execute
+ result = Issues::BulkUpdateService.new(project, current_user, params).execute
redirect_to :back, notice: "#{result[:count]} issues updated"
end
@@ -97,7 +100,7 @@ class Projects::IssuesController < Projects::ApplicationController
def issue
@issue ||= begin
- @project.issues.find_by_iid!(params[:id])
+ @project.issues.find_by!(iid: params[:id])
rescue ActiveRecord::RecordNotFound
redirect_old
end
@@ -107,8 +110,8 @@ class Projects::IssuesController < Projects::ApplicationController
return render_404 unless can?(current_user, :modify_issue, @issue)
end
- def authorize_admin_issue!
- return render_404 unless can?(current_user, :admin_issue, @issue)
+ def authorize_admin_issues!
+ return render_404 unless can?(current_user, :admin_issue, @project)
end
def module_enabled
@@ -116,7 +119,9 @@ class Projects::IssuesController < Projects::ApplicationController
end
def issues_filtered
- @issues = Issues::ListContext.new(project, current_user, params).execute
+ params[:scope] = 'all' if params[:scope].blank?
+ params[:state] = 'opened' if params[:state].blank?
+ @issues = IssuesFinder.new.execute(current_user, params.merge(project_id: @project.id))
end
# Since iids are implemented only in 6.1
@@ -125,7 +130,7 @@ class Projects::IssuesController < Projects::ApplicationController
# To prevent 404 errors we provide a redirect to correct iids until 7.0 release
#
def redirect_old
- issue = @project.issues.find_by_id(params[:id])
+ issue = @project.issues.find_by(id: params[:id])
if issue
redirect_to project_issue_path(@project, issue)
diff --git a/app/controllers/projects/labels_controller.rb b/app/controllers/projects/labels_controller.rb
index 65f9e2b9d57..0166ca9ff00 100644
--- a/app/controllers/projects/labels_controller.rb
+++ b/app/controllers/projects/labels_controller.rb
@@ -13,7 +13,7 @@ class Projects::LabelsController < Projects::ApplicationController
def generate
Gitlab::IssuesLabels.generate(@project)
- redirect_to project_labels_path(@project)
+ redirect_to project_issues_path(@project)
end
protected
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index bba08bdd782..38e567f3b13 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -17,10 +17,18 @@ class Projects::MergeRequestsController < Projects::ApplicationController
before_filter :authorize_modify_merge_request!, only: [:close, :edit, :update, :sort]
def index
- @merge_requests = MergeRequestsLoadContext.new(project, current_user, params).execute
+ params[:sort] ||= 'newest'
+ params[:scope] = 'all' if params[:scope].blank?
+ params[:state] = 'opened' if params[:state].blank?
+
+ @merge_requests = MergeRequestsFinder.new.execute(current_user, params.merge(project_id: @project.id))
+ @merge_requests = @merge_requests.page(params[:page]).per(20)
+
+ @sort = params[:sort].humanize
assignee_id, milestone_id = params[:assignee_id], params[:milestone_id]
@assignee = @project.team.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero?
@milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero?
+ @assignees = User.where(id: @project.merge_requests.pluck(:assignee_id))
end
def show
@@ -52,8 +60,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def new
@merge_request = MergeRequest.new(params[:merge_request])
@merge_request.source_project = @project unless @merge_request.source_project
- @merge_request.target_project = @project unless @merge_request.target_project
+ @merge_request.target_project ||= (@project.forked_from_project || @project)
@target_branches = @merge_request.target_project.nil? ? [] : @merge_request.target_project.repository.branch_names
+
+ @merge_request.target_branch ||= @merge_request.target_project.default_branch
+
@source_project = @merge_request.source_project
@merge_request
end
@@ -69,7 +80,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@merge_request.author = current_user
@target_branches ||= []
if @merge_request.save
- @merge_request.reload_code
redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.'
else
@source_project = @merge_request.source_project
@@ -100,10 +110,14 @@ class Projects::MergeRequestsController < Projects::ApplicationController
params[:merge_request].delete(:target_project_id)
if @merge_request.update_attributes(params[:merge_request].merge(author_id_of_changes: current_user.id))
- @merge_request.reload_code
- @merge_request.mark_as_unchecked
@merge_request.reset_events_cache
- redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully updated.'
+
+ respond_to do |format|
+ format.js
+ format.html do
+ redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully updated.'
+ end
+ end
else
render "edit"
end
@@ -121,9 +135,9 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def automerge
return access_denied! unless allowed_to_merge?
- if @merge_request.opened? && @merge_request.can_be_merged?
+ if @merge_request.open? && @merge_request.can_be_merged?
@merge_request.should_remove_source_branch = params[:should_remove_source_branch]
- @merge_request.automerge!(current_user)
+ @merge_request.automerge!(current_user, params[:merge_commit_message])
@status = true
else
@status = false
@@ -145,10 +159,14 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@target_project = selected_target_project
@target_branches = @target_project.repository.branch_names
@target_branches
+
+ respond_to do |format|
+ format.js
+ end
end
def ci_status
- status = project.gitlab_ci_service.commit_status(merge_request.last_commit.sha)
+ status = @merge_request.source_project.gitlab_ci_service.commit_status(merge_request.last_commit.sha)
response = {status: status}
render json: response
@@ -157,11 +175,15 @@ class Projects::MergeRequestsController < Projects::ApplicationController
protected
def selected_target_project
- ((@project.id.to_s == params[:target_project_id]) || @project.forked_project_link.nil?) ? @project : @project.forked_project_link.forked_from_project
+ if @project.id.to_s == params[:target_project_id] || @project.forked_project_link.nil?
+ @project
+ else
+ @project.forked_project_link.forked_from_project
+ end
end
def merge_request
- @merge_request ||= @project.merge_requests.find_by_iid!(params[:id])
+ @merge_request ||= @project.merge_requests.find_by!(iid: params[:id])
end
def closes_issues
@@ -206,8 +228,9 @@ class Projects::MergeRequestsController < Projects::ApplicationController
# or from cache if already merged
@commits = @merge_request.commits
+ @merge_request_diff = @merge_request.merge_request_diff
@allowed_to_merge = allowed_to_merge?
- @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge
+ @show_merge_controls = @merge_request.open? && @commits.any? && @allowed_to_merge
end
def allowed_to_merge?
diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb
index ecb1fc1d566..aea92a19f34 100644
--- a/app/controllers/projects/milestones_controller.rb
+++ b/app/controllers/projects/milestones_controller.rb
@@ -76,7 +76,7 @@ class Projects::MilestonesController < Projects::ApplicationController
protected
def milestone
- @milestone ||= @project.milestones.find_by_iid!(params[:id])
+ @milestone ||= @project.milestones.find_by!(iid: params[:id])
end
def authorize_admin_milestone!
diff --git a/app/controllers/projects/new_tree_controller.rb b/app/controllers/projects/new_tree_controller.rb
index 933a0cb876e..3a51a78ef6f 100644
--- a/app/controllers/projects/new_tree_controller.rb
+++ b/app/controllers/projects/new_tree_controller.rb
@@ -1,12 +1,13 @@
class Projects::NewTreeController < Projects::BaseTreeController
before_filter :require_branch_head
+ before_filter :authorize_push!
def show
end
def update
file_path = File.join(@path, File.basename(params[:file_name]))
- result = Files::CreateContext.new(@project, current_user, params, @ref, file_path).execute
+ result = Files::CreateService.new(@project, current_user, params, @ref, file_path).execute
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb
index 261841f1ea2..85d042a89b5 100644
--- a/app/controllers/projects/notes_controller.rb
+++ b/app/controllers/projects/notes_controller.rb
@@ -5,7 +5,7 @@ class Projects::NotesController < Projects::ApplicationController
before_filter :authorize_admin_note!, only: [:update, :destroy]
def index
- @notes = Notes::LoadContext.new(project, current_user, params).execute
+ @notes = NotesFinder.new.execute(project, current_user, params)
notes_json = { notes: [] }
@@ -20,7 +20,7 @@ class Projects::NotesController < Projects::ApplicationController
end
def create
- @note = Notes::CreateContext.new(project, current_user, params).execute
+ @note = Notes::CreateService.new(project, current_user, params).execute
respond_to do |format|
format.json { render_note_json(@note) }
diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb
index 18ace028b0c..a6b7ae3f127 100644
--- a/app/controllers/projects/raw_controller.rb
+++ b/app/controllers/projects/raw_controller.rb
@@ -11,11 +11,7 @@ class Projects::RawController < Projects::ApplicationController
@blob = @repository.blob_at(@commit.id, @path)
if @blob
- type = if @blob.mime_type =~ /html|javascript/
- 'text/plain; charset=utf-8'
- else
- @blob.mime_type
- end
+ type = get_blob_type
headers['X-Content-Type-Options'] = 'nosniff'
@@ -29,5 +25,17 @@ class Projects::RawController < Projects::ApplicationController
not_found!
end
end
+
+ private
+
+ def get_blob_type
+ if @blob.mime_type =~ /html|javascript/
+ 'text/plain; charset=utf-8'
+ elsif @blob.name =~ /(?:msi|exe|rar|r0\d|7z|7zip|zip)$/
+ 'application/octet-stream'
+ else
+ @blob.mime_type
+ end
+ end
end
diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb
index 16621c0371e..7b8026cff9f 100644
--- a/app/controllers/projects/refs_controller.rb
+++ b/app/controllers/projects/refs_controller.rb
@@ -34,7 +34,7 @@ class Projects::RefsController < Projects::ApplicationController
contents = tree.entries
@logs = contents.map do |content|
file = params[:path] ? File.join(params[:path], content.name) : content.name
- last_commit = @repo.commits(@commit.id, file, 1).last
+ last_commit = @repo.last_commit_for_path(@commit.id, file)
{
file_name: content.name,
commit: last_commit
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb
index 9dbb0d81888..818c5d971e9 100644
--- a/app/controllers/projects/tags_controller.rb
+++ b/app/controllers/projects/tags_controller.rb
@@ -8,7 +8,7 @@ class Projects::TagsController < Projects::ApplicationController
before_filter :authorize_admin_project!, only: [:destroy]
def index
- @tags = Kaminari.paginate_array(@repository.tags).page(params[:page]).per(30)
+ @tags = Kaminari.paginate_array(@repository.tags.reverse).page(params[:page]).per(30)
end
def create
diff --git a/app/controllers/projects/team_members_controller.rb b/app/controllers/projects/team_members_controller.rb
index 2c40b3c75f2..44068878cd1 100644
--- a/app/controllers/projects/team_members_controller.rb
+++ b/app/controllers/projects/team_members_controller.rb
@@ -26,7 +26,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
end
def update
- @user_project_relation = project.users_projects.find_by_user_id(member)
+ @user_project_relation = project.users_projects.find_by(user_id: member)
@user_project_relation.update_attributes(params[:team_member])
unless @user_project_relation.valid?
@@ -36,7 +36,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
end
def destroy
- @user_project_relation = project.users_projects.find_by_user_id(member)
+ @user_project_relation = project.users_projects.find_by(user_id: member)
@user_project_relation.destroy
respond_to do |format|
@@ -46,7 +46,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
end
def leave
- project.users_projects.find_by_user_id(current_user).destroy
+ project.users_projects.find_by(user_id: current_user).destroy
respond_to do |format|
format.html { redirect_to :back }
@@ -65,6 +65,6 @@ class Projects::TeamMembersController < Projects::ApplicationController
protected
def member
- @member ||= User.find_by_username(params[:id])
+ @member ||= User.find_by(username: params[:id])
end
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index e1c55e7d913..6ec109b9145 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -20,7 +20,7 @@ class ProjectsController < ApplicationController
end
def create
- @project = ::Projects::CreateContext.new(current_user, params[:project]).execute
+ @project = ::Projects::CreateService.new(current_user, params[:project]).execute
respond_to do |format|
flash[:notice] = 'Project was successfully created.' if @project.saved?
@@ -36,7 +36,7 @@ class ProjectsController < ApplicationController
end
def update
- status = ::Projects::UpdateContext.new(@project, current_user, params).execute
+ status = ::Projects::UpdateService.new(@project, current_user, params).execute
respond_to do |format|
if status
@@ -51,7 +51,7 @@ class ProjectsController < ApplicationController
end
def transfer
- ::Projects::TransferContext.new(project, current_user, params).execute
+ ::Projects::TransferService.new(project, current_user, params).execute
end
def show
@@ -89,7 +89,7 @@ class ProjectsController < ApplicationController
end
def fork
- @forked_project = ::Projects::ForkContext.new(project, current_user).execute
+ @forked_project = ::Projects::ForkService.new(project, current_user).execute
respond_to do |format|
format.html do
diff --git a/app/controllers/public/projects_controller.rb b/app/controllers/public/projects_controller.rb
index d7297161c22..d6238f79547 100644
--- a/app/controllers/public/projects_controller.rb
+++ b/app/controllers/public/projects_controller.rb
@@ -6,7 +6,7 @@ class Public::ProjectsController < ApplicationController
layout 'public'
def index
- @projects = Project.public_or_internal_only(current_user)
+ @projects = Project.publicish(current_user)
@projects = @projects.search(params[:search]) if params[:search].present?
@projects = @projects.sort(@sort = params[:sort])
@projects = @projects.includes(:namespace).page(params[:page]).per(20)
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index ba8f08c5b82..c1648d6c387 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,13 +1,23 @@
class SearchController < ApplicationController
+ include SearchHelper
+
def show
- @project = Project.find_by_id(params[:project_id]) if params[:project_id].present?
- @group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
+ @project = Project.find_by(id: params[:project_id]) if params[:project_id].present?
+ @group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
if @project
return access_denied! unless can?(current_user, :download_code, @project)
- @search_results = Search::ProjectContext.new(@project, current_user, params).execute
+ @search_results = Search::ProjectService.new(@project, current_user, params).execute
else
- @search_results = Search::GlobalContext.new(current_user, params).execute
+ @search_results = Search::GlobalService.new(current_user, params).execute
end
end
+
+ def autocomplete
+ term = params[:term]
+ @project = Project.find(params[:project_id]) if params[:project_id].present?
+ @ref = params[:project_ref] if params[:project_ref].present?
+
+ render json: search_autocomplete_opts(term).to_json
+ end
end
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index b91f68aab5e..e54a968326f 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -18,7 +18,7 @@ class SnippetsController < ApplicationController
end
def user_index
- @user = User.find_by_username(params[:username])
+ @user = User.find_by(username: params[:username])
@snippets = @user.snippets.fresh.non_expired
if @user == current_user
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 4947c33f959..9461174b950 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,11 +1,23 @@
class UsersController < ApplicationController
- layout 'navless'
+ skip_before_filter :authenticate_user!, only: [:show]
+ layout :determine_layout
def show
@user = User.find_by_username!(params[:username])
- @projects = @user.authorized_projects.where('projects.id in (?)', current_user.authorized_projects.map(&:id))
- @events = @user.recent_events.where(project_id: @projects.map(&:id)).limit(20)
-
+ @projects = @user.authorized_projects.accessible_to(current_user)
+ if !current_user && @projects.empty?
+ return authenticate_user!
+ end
+ @groups = @user.groups.accessible_to(current_user)
+ @events = @user.recent_events.where(project_id: @projects.pluck(:id)).limit(20)
@title = @user.name
end
+
+ def determine_layout
+ if current_user
+ 'navless'
+ else
+ 'public_users'
+ end
+ end
end
diff --git a/app/controllers/users_groups_controller.rb b/app/controllers/users_groups_controller.rb
index 749da1e1413..b9bdc189522 100644
--- a/app/controllers/users_groups_controller.rb
+++ b/app/controllers/users_groups_controller.rb
@@ -19,18 +19,21 @@ class UsersGroupsController < ApplicationController
def destroy
@users_group = @group.users_groups.find(params[:id])
- @users_group.destroy
-
- respond_to do |format|
- format.html { redirect_to members_group_path(@group), notice: 'User was successfully removed from group.' }
- format.js { render nothing: true }
+ if can?(current_user, :destroy, @users_group) # May fail if last owner.
+ @users_group.destroy
+ respond_to do |format|
+ format.html { redirect_to members_group_path(@group), notice: 'User was successfully removed from group.' }
+ format.js { render nothing: true }
+ end
+ else
+ return render_403
end
end
protected
def group
- @group ||= Group.find_by_path(params[:group_id])
+ @group ||= Group.find_by(path: params[:group_id])
end
def authorize_admin_group!
diff --git a/app/finders/README.md b/app/finders/README.md
new file mode 100644
index 00000000000..47823c51efb
--- /dev/null
+++ b/app/finders/README.md
@@ -0,0 +1,22 @@
+# Finders
+
+This type of classes responsible for collectiong items based on different conditions.
+To prevent lookup methods in models like this:
+
+```ruby
+class Project
+ def issues_for_user_filtered_by(user, filter)
+ # A lot of logic not related to project model itself
+ end
+end
+
+issues = project.issues_for_user_filtered_by(user, params)
+```
+
+Better use this:
+
+```ruby
+issues = IssuesFinder.new.execute(project, user, filter)
+```
+
+It will help keep models thiner
diff --git a/app/finders/base_finder.rb b/app/finders/base_finder.rb
new file mode 100644
index 00000000000..d20716fb170
--- /dev/null
+++ b/app/finders/base_finder.rb
@@ -0,0 +1,137 @@
+# BaseFinder
+#
+# Used to filter Issues and MergeRequests collections by set of params
+#
+# Arguments:
+# klass - actual class like Issue or MergeRequest
+# current_user - which user use
+# params:
+# scope: 'created-by-me' or 'assigned-to-me' or 'all'
+# state: 'open' or 'closed' or 'all'
+# group_id: integer
+# project_id: integer
+# milestone_id: integer
+# assignee_id: integer
+# search: string
+# label_name: string
+# sort: string
+#
+class BaseFinder
+ attr_accessor :current_user, :params
+
+ def execute(current_user, params)
+ @current_user = current_user
+ @params = params
+
+ items = init_collection
+ items = by_scope(items)
+ items = by_state(items)
+ items = by_group(items)
+ items = by_project(items)
+ items = by_search(items)
+ items = by_milestone(items)
+ items = by_assignee(items)
+ items = by_label(items)
+ items = sort(items)
+ end
+
+ private
+
+ def init_collection
+ table_name = klass.table_name
+
+ if project
+ if project.public? || (current_user && current_user.can?(:read_project, project))
+ project.send(table_name)
+ else
+ []
+ end
+ elsif current_user && params[:authorized_only].presence
+ klass.of_projects(current_user.authorized_projects)
+ else
+ klass.of_projects(Project.accessible_to(current_user))
+ end
+ end
+
+ def by_scope(items)
+ case params[:scope]
+ when 'created-by-me', 'authored' then
+ items.where(author_id: current_user.id)
+ when 'all' then
+ items
+ when 'assigned-to-me' then
+ items.where(assignee_id: current_user.id)
+ else
+ raise 'You must specify default scope'
+ end
+ end
+
+ def by_state(items)
+ case params[:state]
+ when 'closed'
+ items.closed
+ when 'all'
+ items
+ when 'opened'
+ items.opened
+ else
+ raise 'You must specify default state'
+ end
+ end
+
+ def by_group(items)
+ if params[:group_id].present?
+ items = items.of_group(Group.find(params[:group_id]))
+ end
+
+ items
+ end
+
+ def by_project(items)
+ if params[:project_id].present?
+ items = items.of_projects(params[:project_id])
+ end
+
+ items
+ end
+
+ def by_search(items)
+ if params[:search].present?
+ items = items.search(params[:search])
+ end
+
+ items
+ end
+
+ def sort(items)
+ items.sort(params[:sort])
+ end
+
+ def by_milestone(items)
+ if params[:milestone_id].present?
+ items = items.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
+ end
+
+ items
+ end
+
+ def by_assignee(items)
+ if params[:assignee_id].present?
+ items = items.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
+ end
+
+ items
+ end
+
+ def by_label(items)
+ if params[:label_name].present?
+ items = items.tagged_with(params[:label_name])
+ end
+
+ items
+ end
+
+ def project
+ Project.where(id: params[:project_id]).first if params[:project_id].present?
+ end
+end
diff --git a/app/finders/issues_finder.rb b/app/finders/issues_finder.rb
new file mode 100644
index 00000000000..8e0c606249e
--- /dev/null
+++ b/app/finders/issues_finder.rb
@@ -0,0 +1,22 @@
+# Finders::Issues class
+#
+# Used to filter Issues collections by set of params
+#
+# Arguments:
+# current_user - which user use
+# params:
+# scope: 'created-by-me' or 'assigned-to-me' or 'all'
+# state: 'open' or 'closed' or 'all'
+# group_id: integer
+# project_id: integer
+# milestone_id: integer
+# assignee_id: integer
+# search: string
+# label_name: string
+# sort: string
+#
+class IssuesFinder < BaseFinder
+ def klass
+ Issue
+ end
+end
diff --git a/app/finders/merge_requests_finder.rb b/app/finders/merge_requests_finder.rb
new file mode 100644
index 00000000000..3727149c8fb
--- /dev/null
+++ b/app/finders/merge_requests_finder.rb
@@ -0,0 +1,22 @@
+# Finders::MergeRequest class
+#
+# Used to filter MergeRequests collections by set of params
+#
+# Arguments:
+# current_user - which user use
+# params:
+# scope: 'created-by-me' or 'assigned-to-me' or 'all'
+# state: 'open' or 'closed' or 'all'
+# group_id: integer
+# project_id: integer
+# milestone_id: integer
+# assignee_id: integer
+# search: string
+# label_name: string
+# sort: string
+#
+class MergeRequestsFinder < BaseFinder
+ def klass
+ MergeRequest
+ end
+end
diff --git a/app/finders/notes_finder.rb b/app/finders/notes_finder.rb
new file mode 100644
index 00000000000..384316e14b7
--- /dev/null
+++ b/app/finders/notes_finder.rb
@@ -0,0 +1,17 @@
+class NotesFinder
+ def execute(project, current_user, params)
+ target_type = params[:target_type]
+ target_id = params[:target_id]
+
+ case target_type
+ when "commit"
+ project.notes.for_commit_id(target_id).not_inline.fresh
+ when "issue"
+ project.issues.find(target_id).notes.inc_author.fresh
+ when "merge_request"
+ project.merge_requests.find(target_id).mr_and_commit_notes.inc_author.fresh
+ when "snippet"
+ project.snippets.find(target_id).notes.fresh
+ end
+ end
+end
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb
new file mode 100644
index 00000000000..bfaba758788
--- /dev/null
+++ b/app/finders/projects_finder.rb
@@ -0,0 +1,63 @@
+class ProjectsFinder
+ def execute(current_user, options)
+ group = options[:group]
+
+ if group
+ group_projects(current_user, group)
+ else
+ all_projects(current_user)
+ end
+ end
+
+ private
+
+ def group_projects(current_user, group)
+ if current_user
+ if group.users.include?(current_user)
+ # User is group member
+ #
+ # Return ALL group projects
+ group.projects
+ else
+ projects_members = UsersProject.where(
+ project_id: group.projects,
+ user_id: current_user
+ )
+
+ if projects_members.any?
+ # User is a project member
+ #
+ # Return only:
+ # public projects
+ # internal projects
+ # joined projects
+ #
+ group.projects.where(
+ "projects.id IN (?) OR projects.visibility_level IN (?)",
+ projects_members.pluck(:project_id),
+ Project.public_and_internal_levels
+ )
+ else
+ # User has no access to group or group projects
+ #
+ # Return only:
+ # public projects
+ # internal projects
+ #
+ group.projects.public_and_internal_only
+ end
+ end
+ else
+ # Not authenticated
+ #
+ # Return only:
+ # public projects
+ group.projects.public_only
+ end
+ end
+
+ def all_projects
+ # TODO: implement
+ raise 'Not implemented yet'
+ end
+end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 0db43fa1809..4e7d01acd2a 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -49,8 +49,17 @@ module ApplicationHelper
args.any? { |v| v.to_s.downcase == action_name }
end
+ def group_icon(group_path)
+ group = Group.find_by(path: group_path)
+ if group && group.avatar.present?
+ group.avatar.url
+ else
+ '/assets/no_group_avatar.png'
+ end
+ end
+
def avatar_icon(user_email = '', size = nil)
- user = User.find_by_email(user_email)
+ user = User.find_by(email: user_email)
if user && user.avatar.present?
user.avatar.url
else
@@ -153,15 +162,6 @@ module ApplicationHelper
alias_method :url_to_image, :image_url
- def users_select_tag(id, opts = {})
- css_class = "ajax-users-select "
- css_class << "multiselect " if opts[:multiple]
- css_class << (opts[:class] || '')
- value = opts[:selected] || ''
-
- hidden_field_tag(id, value, class: css_class)
- end
-
def body_data_page
path = controller.controller_path.split('/')
namespace = path.first if path.second
@@ -203,8 +203,14 @@ module ApplicationHelper
def highlight_js(&block)
string = capture(&block)
- content_tag :div, class: user_color_scheme_class do
- Pygments::Lexer[:js].highlight(string).html_safe
+ content_tag :div, class: "highlighted-data #{user_color_scheme_class}" do
+ content_tag :div, class: 'highlight' do
+ content_tag :pre do
+ content_tag :code do
+ string.html_safe
+ end
+ end
+ end
end
end
@@ -221,4 +227,10 @@ module ApplicationHelper
def render_markup(file_name, file_content)
GitHub::Markup.render(file_name, file_content).html_safe
end
+
+ def spinner(text = nil)
+ content_tag :div, class: 'loading hide' do
+ content_tag(:i, nil, class: 'icon-spinner icon-spin') + text
+ end
+ end
end
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 663369e4584..5e5f3f77a21 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -122,17 +122,18 @@ module CommitsHelper
def commit_person_link(commit, options = {})
source_name = commit.send "#{options[:source]}_name".to_sym
source_email = commit.send "#{options[:source]}_email".to_sym
+
+ user = User.find_for_commit(source_email, source_name)
+ person_name = user.nil? ? source_name : user.name
+ person_email = user.nil? ? source_email : user.email
+
text = if options[:avatar]
- avatar = image_tag(avatar_icon(source_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]}", width: options[:size], alt: "")
- %Q{#{avatar} <span class="commit-#{options[:source]}-name">#{source_name}</span>}
+ avatar = image_tag(avatar_icon(person_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]}", width: options[:size], alt: "")
+ %Q{#{avatar} <span class="commit-#{options[:source]}-name">#{person_name}</span>}
else
- source_name
+ person_name
end
- # Prefer email match over name match
- user = User.where(email: source_email).first
- user ||= User.where(name: source_name).first
-
options = {
class: "commit-#{options[:source]}-link has_tooltip",
data: { :'original-title' => sanitize(source_email) }
diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb
index 7f86a833cb0..d5712ab3374 100644
--- a/app/helpers/dashboard_helper.rb
+++ b/app/helpers/dashboard_helper.rb
@@ -1,7 +1,7 @@
module DashboardHelper
def filter_path(entity, options={})
exist_opts = {
- status: params[:status],
+ state: params[:state],
scope: params[:scope],
project_id: params[:project_id],
}
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index 8894a01eaea..6cad5e4658e 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -28,14 +28,16 @@ module GitlabMarkdownHelper
link_to(gfm_body.html_safe, url, html_options)
end
- def markdown(text)
- unless @markdown
- gitlab_renderer = Redcarpet::Render::GitlabHTML.new(self,
- # see https://github.com/vmg/redcarpet#darling-i-packed-you-a-couple-renderers-for-lunch-
- filter_html: true,
- with_toc_data: true,
- hard_wrap: true,
- safe_links_only: true)
+ def markdown(text, options={})
+ unless (@markdown and options == @options)
+ @options = options
+ gitlab_renderer = Redcarpet::Render::GitlabHTML.new(self, {
+ # see https://github.com/vmg/redcarpet#darling-i-packed-you-a-couple-renderers-for-lunch-
+ filter_html: true,
+ with_toc_data: true,
+ hard_wrap: true,
+ safe_links_only: true
+ }.merge(options))
@markdown = Redcarpet::Markdown.new(gitlab_renderer,
# see https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
no_intra_emphasis: true,
@@ -47,7 +49,6 @@ module GitlabMarkdownHelper
space_after_headers: true,
superscript: true)
end
-
@markdown.render(text).html_safe
end
@@ -69,10 +70,17 @@ module GitlabMarkdownHelper
project_path_with_namespace = project.path_with_namespace
paths = extract_paths(text)
paths.each do |file_path|
- new_path = rebuild_path(project_path_with_namespace, file_path, requested_path, ref)
- # Replacing old string with a new one with brackets ]() to prevent replacing occurence of a word
- # e.g. If we have a markdown like [test](test) this will replace ](test) and not the word test
- text.gsub!("](#{file_path})", "](/#{new_path})")
+ original_file_path = extract(file_path)
+ new_path = rebuild_path(project_path_with_namespace, original_file_path, requested_path, ref)
+ if reference_path?(file_path)
+ # Replacing old string with a new one that contains updated path
+ # eg. [some document]: document.md will be replaced with [some document] /namespace/project/master/blob/document.md
+ text.gsub!(file_path, file_path.gsub(original_file_path, "/#{new_path}"))
+ else
+ # Replacing old string with a new one with brackets ]() to prevent replacing occurence of a word
+ # e.g. If we have a markdown like [test](test) this will replace ](test) and not the word test
+ text.gsub!("](#{file_path})", "](/#{new_path})")
+ end
end
text
end
@@ -83,9 +91,11 @@ module GitlabMarkdownHelper
select_relative(paths)
end
- # Split the markdown text to each line and find all paths, this will match anything with - ]("some_text")
+ # Split the markdown text to each line and find all paths, this will match anything with - ]("some_text") and [some text]: file.md
def pick_out_paths(markdown_text)
- markdown_text.split("\n").map { |text| text.scan(/\]\(([^(]+)\)/) }
+ inline_paths = markdown_text.split("\n").map { |text| text.scan(/\]\(([^(]+)\)/) }
+ reference_paths = markdown_text.split("\n").map { |text| text.scan(/\[.*\]:.*/) }
+ inline_paths + reference_paths
end
# Removes any empty result produced by not matching the regexp
@@ -93,23 +103,35 @@ module GitlabMarkdownHelper
paths.reject{|l| l.empty? }.flatten
end
+ # If a path is a reference style link we need to omit ]:
+ def extract(path)
+ path.split("]: ").last
+ end
+
# Reject any path that contains ignored protocol
# eg. reject "https://gitlab.org} but accept "doc/api/README.md"
def select_relative(paths)
paths.reject{|path| ignored_protocols.map{|protocol| path.include?(protocol)}.any?}
end
+ # Check whether a path is a reference-style link
+ def reference_path?(path)
+ path.include?("]: ")
+ end
+
def ignored_protocols
["http://","https://", "ftp://", "mailto:"]
end
def rebuild_path(path_with_namespace, path, requested_path, ref)
+ path.gsub!(/(#.*)/, "")
+ id = $1 || ""
file_path = relative_file_path(path, requested_path)
[
path_with_namespace,
path_with_ref(file_path, ref),
file_path
- ].compact.join("/")
+ ].compact.join("/").gsub(/\/*$/, '') + id
end
# Checks if the path exists in the repo
@@ -134,6 +156,7 @@ module GitlabMarkdownHelper
# If we are at doc/api and the README.md shown in below the tree view
# this takes the rquest path(doc/api) and adds users.md so the path looks like doc/api/users.md
def build_nested_path(path, request_path)
+ return request_path if path == ""
return path unless request_path
if local_path(request_path) == "tree"
base = request_path.split("/").push(path)
@@ -146,19 +169,28 @@ module GitlabMarkdownHelper
end
def file_exists?(path)
- return false if path.nil? || path.empty?
- File.exists?(path_on_fs(path))
+ return false if path.nil?
+ return @repository.blob_at(current_sha, path).present? || @repository.tree(current_sha, path).entries.any?
end
# Check if the path is pointing to a directory(tree) or a file(blob)
# eg. doc/api is directory and doc/README.md is file
def local_path(path)
- File.directory?(path_on_fs(path)) ? "tree" : "blob"
+ return "tree" if @repository.tree(current_sha, path).entries.any?
+ return "raw" if @repository.blob_at(current_sha, path).image?
+ return "blob"
end
- # Path to the file in the satellites repository on the filesystem
- def path_on_fs(path)
- [@path_to_satellite, path].join("/")
+ def current_ref
+ @commit.nil? ? "master" : @commit.id
+ end
+
+ def current_sha
+ if @commit
+ @commit.id
+ else
+ @repository.head_commit.sha
+ end
end
# We will assume that if no ref exists we can point to master
diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb
index 7c09273d53e..cfc9a572cac 100644
--- a/app/helpers/groups_helper.rb
+++ b/app/helpers/groups_helper.rb
@@ -1,6 +1,18 @@
module GroupsHelper
def remove_user_from_group_message(group, user)
- "You are going to remove #{user.name} from #{group.name} Group. Are you sure?"
+ "Are you sure you want to remove \"#{user.name}\" from \"#{group.name}\"?"
+ end
+
+ def leave_group_message(group)
+ "Are you sure you want to leave \"#{group}\" group?"
+ end
+
+ def should_user_see_group_roles?(user, group)
+ if user
+ user.is_admin? || group.members.exists?(user_id: user.id)
+ else
+ false
+ end
end
def group_head_title
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index cdba6ce84dc..95f0eff58b1 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -70,11 +70,11 @@ module IssuesHelper
end
def bulk_update_milestone_options
- options_for_select(["None (backlog)", nil]) + options_from_collection_for_select(project_active_milestones, "id", "title", params[:milestone_id])
+ options_for_select(["None (backlog)"]) + options_from_collection_for_select(project_active_milestones, "id", "title", params[:milestone_id])
end
def bulk_update_assignee_options
- options_for_select(["None (unassigned)", nil]) + options_from_collection_for_select(@project.team.members, "id", "name", params[:assignee_id])
+ options_for_select(["None (unassigned)"]) + options_from_collection_for_select(@project.team.members, "id", "name", params[:assignee_id])
end
def assignee_options object
@@ -84,4 +84,16 @@ module IssuesHelper
def milestone_options object
options_from_collection_for_select(@project.milestones.active, 'id', 'title', object.milestone_id)
end
+
+ def issue_box_class(item)
+ if item.respond_to?(:expired?) && item.expired?
+ 'issue-box-expired'
+ elsif item.respond_to?(:merged?) && item.merged?
+ 'issue-box-merged'
+ elsif item.closed?
+ 'issue-box-closed'
+ else
+ 'issue-box-open'
+ end
+ end
end
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index 5e3f82fe9ce..1381b0220d6 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -1,8 +1,9 @@
module MergeRequestsHelper
def new_mr_path_from_push_event(event)
+ target_project = event.project.forked_from_project || event.project
new_project_merge_request_path(
event.project,
- new_mr_from_push_event(event, event.project)
+ new_mr_from_push_event(event, target_project)
)
end
diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb
index 695147cd6db..7ae104b8fd1 100644
--- a/app/helpers/notes_helper.rb
+++ b/app/helpers/notes_helper.rb
@@ -17,7 +17,7 @@ module NotesHelper
def link_to_merge_request_diff_line_note(note)
if note.for_merge_request_diff_line? and note.diff
- link_to "#{note.diff_file_name}:L#{note.diff_new_line}", diffs_project_merge_request_path(note.project, note.noteable_id, anchor: note.line_code)
+ link_to "#{note.diff_file_name}:L#{note.diff_new_line}", diffs_project_merge_request_path(note.project, note.noteable, anchor: note.line_code)
end
end
diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb
index ae3402b2617..b2399bb6db1 100644
--- a/app/helpers/notifications_helper.rb
+++ b/app/helpers/notifications_helper.rb
@@ -1,11 +1,11 @@
module NotificationsHelper
def notification_icon(notification)
if notification.disabled?
- content_tag :i, nil, class: 'icon-circle cred'
+ content_tag :i, nil, class: 'icon-volume-off cred'
elsif notification.participating?
- content_tag :i, nil, class: 'icon-circle cblue'
+ content_tag :i, nil, class: 'icon-volume-down cblue'
elsif notification.watch?
- content_tag :i, nil, class: 'icon-circle cgreen'
+ content_tag :i, nil, class: 'icon-volume-up cgreen'
else
content_tag :i, nil, class: 'icon-circle-blank cblue'
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index a6a507360bd..e943045e414 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -64,6 +64,31 @@ module ProjectsHelper
project_nav_tabs.include? name
end
+ def selected_label?(label_name)
+ params[:label_name].to_s.split(',').include?(label_name)
+ end
+
+ def labels_filter_path(label_name)
+ label_name =
+ if selected_label?(label_name)
+ params[:label_name].split(',').reject { |l| l == label_name }.join(',')
+ elsif params[:label_name].present?
+ "#{params[:label_name]},#{label_name}"
+ else
+ label_name
+ end
+
+ project_filter_path(label_name: label_name)
+ end
+
+ def label_filter_class(label_name)
+ if selected_label?(label_name)
+ 'label-filter-item active'
+ else
+ 'label-filter-item light'
+ end
+ end
+
def project_filter_path(options={})
exist_opts = {
state: params[:state],
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index f24156e4d85..d7f3da7e537 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -1,16 +1,21 @@
module SearchHelper
- def search_autocomplete_source
+ def search_autocomplete_opts(term)
return unless current_user
+
+ resources_results = [
+ groups_autocomplete(term),
+ projects_autocomplete(term)
+ ].flatten
+
+ generic_results = project_autocomplete + default_autocomplete + help_autocomplete
+ generic_results.select! { |result| result[:label] =~ Regexp.new(term, "i") }
+
[
- groups_autocomplete,
- projects_autocomplete,
- public_projects_autocomplete,
- default_autocomplete,
- project_autocomplete,
- help_autocomplete
+ resources_results,
+ generic_results
].flatten.uniq do |item|
item[:label]
- end.to_json
+ end
end
private
@@ -43,7 +48,7 @@ module SearchHelper
# Autocomplete results for the current project, if it's defined
def project_autocomplete
if @project && @project.repository.exists? && @project.repository.root_ref
- prefix = simple_sanitize(@project.name_with_namespace)
+ prefix = search_result_sanitize(@project.name_with_namespace)
ref = @ref || @project.repository.root_ref
[
@@ -65,23 +70,26 @@ module SearchHelper
end
# Autocomplete results for the current user's groups
- def groups_autocomplete
- current_user.authorized_groups.map do |group|
- { label: "group: #{simple_sanitize(group.name)}", url: group_path(group) }
+ def groups_autocomplete(term, limit = 5)
+ current_user.authorized_groups.search(term).limit(limit).map do |group|
+ {
+ label: "group: #{search_result_sanitize(group.name)}",
+ url: group_path(group)
+ }
end
end
# Autocomplete results for the current user's projects
- def projects_autocomplete
- current_user.authorized_projects.non_archived.map do |p|
- { label: "project: #{simple_sanitize(p.name_with_namespace)}", url: project_path(p) }
+ def projects_autocomplete(term, limit = 5)
+ Project.accessible_to(current_user).search_by_title(term).non_archived.limit(limit).map do |p|
+ {
+ label: "project: #{search_result_sanitize(p.name_with_namespace)}",
+ url: project_path(p)
+ }
end
end
- # Autocomplete results for the current user's projects
- def public_projects_autocomplete
- Project.public_or_internal_only(current_user).non_archived.map do |p|
- { label: "project: #{simple_sanitize(p.name_with_namespace)}", url: project_path(p) }
- end
+ def search_result_sanitize(str)
+ Sanitize.clean(str)
end
end
diff --git a/app/helpers/selects_helper.rb b/app/helpers/selects_helper.rb
new file mode 100644
index 00000000000..a1fe4488ae9
--- /dev/null
+++ b/app/helpers/selects_helper.rb
@@ -0,0 +1,20 @@
+module SelectsHelper
+ def users_select_tag(id, opts = {})
+ css_class = "ajax-users-select "
+ css_class << "multiselect " if opts[:multiple]
+ css_class << (opts[:class] || '')
+ value = opts[:selected] || ''
+
+ hidden_field_tag(id, value, class: css_class)
+ end
+
+ def project_users_select_tag(id, opts = {})
+ css_class = "ajax-project-users-select "
+ css_class << "multiselect " if opts[:multiple]
+ css_class << (opts[:class] || '')
+ value = opts[:selected] || ''
+ placeholder = opts[:placeholder] || 'Select user'
+
+ hidden_field_tag(id, value, class: css_class, 'data-placeholder' => placeholder)
+ end
+end
diff --git a/app/helpers/submodule_helper.rb b/app/helpers/submodule_helper.rb
new file mode 100644
index 00000000000..56f6e4d9cc1
--- /dev/null
+++ b/app/helpers/submodule_helper.rb
@@ -0,0 +1,43 @@
+module SubmoduleHelper
+ include Gitlab::ShellAdapter
+
+ # links to files listing for submodule if submodule is a project on this server
+ def submodule_links(submodule_item)
+ url = @repository.submodule_url_for(@ref, submodule_item.path)
+
+ return url, nil unless url =~ /([^\/:]+\/[^\/]+\.git)\Z/
+
+ project = $1
+ project.chomp!('.git')
+
+ if self_url?(url, project)
+ return project_path(project), project_tree_path(project, submodule_item.id)
+ elsif github_dot_com_url?(url)
+ standard_links('github.com', project, submodule_item.id)
+ elsif gitlab_dot_com_url?(url)
+ standard_links('gitlab.com', project, submodule_item.id)
+ else
+ return url, nil
+ end
+ end
+
+ protected
+
+ def github_dot_com_url?(url)
+ url =~ /github\.com[\/:][^\/]+\/[^\/]+\Z/
+ end
+
+ def gitlab_dot_com_url?(url)
+ url =~ /gitlab\.com[\/:][^\/]+\/[^\/]+\Z/
+ end
+
+ def self_url?(url, project)
+ return true if url == [ Gitlab.config.gitlab.url, '/', project, '.git' ].join('')
+ url == gitlab_shell.url_to_repo(project)
+ end
+
+ def standard_links(host, project, commit)
+ base = [ 'https://', host, '/', project ].join('')
+ return base, [ base, '/tree/', commit ].join('')
+ end
+end
diff --git a/app/mailers/emails/issues.rb b/app/mailers/emails/issues.rb
index 5abdf99529c..3adb47dc5b1 100644
--- a/app/mailers/emails/issues.rb
+++ b/app/mailers/emails/issues.rb
@@ -3,22 +3,27 @@ module Emails
def new_issue_email(recipient_id, issue_id)
@issue = Issue.find(issue_id)
@project = @issue.project
- mail(to: recipient(recipient_id), subject: subject("New issue ##{@issue.iid}", @issue.title))
+ mail(from: sender(@issue.author_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@issue.title} (##{@issue.iid})"))
end
- def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id)
+ def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id, updated_by_user_id)
@issue = Issue.find(issue_id)
- @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+ @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
@project = @issue.project
- mail(to: recipient(recipient_id), subject: subject("Changed issue ##{@issue.iid}", @issue.title))
+ mail(from: sender(updated_by_user_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@issue.title} (##{@issue.iid})"))
end
def closed_issue_email(recipient_id, issue_id, updated_by_user_id)
@issue = Issue.find issue_id
@project = @issue.project
@updated_by = User.find updated_by_user_id
- mail(to: recipient(recipient_id),
- subject: subject("Closed issue ##{@issue.iid}", @issue.title))
+ mail(from: sender(updated_by_user_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@issue.title} (##{@issue.iid})"))
end
def issue_status_changed_email(recipient_id, issue_id, status, updated_by_user_id)
@@ -26,8 +31,9 @@ module Emails
@issue_status = status
@project = @issue.project
@updated_by = User.find updated_by_user_id
- mail(to: recipient(recipient_id),
- subject: subject("Changed issue ##{@issue.iid}", @issue.title))
+ mail(from: sender(updated_by_user_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@issue.title} (##{@issue.iid})"))
end
end
end
diff --git a/app/mailers/emails/merge_requests.rb b/app/mailers/emails/merge_requests.rb
index 25b8bf755e2..0845e14edc7 100644
--- a/app/mailers/emails/merge_requests.rb
+++ b/app/mailers/emails/merge_requests.rb
@@ -3,27 +3,35 @@ module Emails
def new_merge_request_email(recipient_id, merge_request_id)
@merge_request = MergeRequest.find(merge_request_id)
@project = @merge_request.project
- mail(to: recipient(recipient_id), subject: subject("New merge request ##{@merge_request.iid}", @merge_request.title))
+ mail(from: sender(@merge_request.author_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
end
- def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id)
+ def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id, updated_by_user_id)
@merge_request = MergeRequest.find(merge_request_id)
- @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+ @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
@project = @merge_request.project
- mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title))
+ mail(from: sender(updated_by_user_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
end
def closed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id)
@merge_request = MergeRequest.find(merge_request_id)
@updated_by = User.find updated_by_user_id
@project = @merge_request.project
- mail(to: recipient(recipient_id), subject: subject("Closed merge request ##{@merge_request.iid}", @merge_request.title))
+ mail(from: sender(updated_by_user_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
end
def merged_merge_request_email(recipient_id, merge_request_id)
@merge_request = MergeRequest.find(merge_request_id)
@project = @merge_request.project
- mail(to: recipient(recipient_id), subject: subject("Accepted merge request ##{@merge_request.iid}", @merge_request.title))
+ mail(from: sender(@merge_request.author_id_of_changes),
+ to: recipient(recipient_id),
+ subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
end
end
@@ -57,7 +65,7 @@ module Emails
# >> subject('Lorem ipsum', 'Dolor sit amet')
# => "GitLab Merge Request | Lorem ipsum | Dolor sit amet"
def subject(*extra)
- subject = "GitLab Merge Request |"
+ subject = "Merge Request | "
if @merge_request.for_fork?
subject << "#{@merge_request.source_project.name_with_namespace}:#{merge_request.source_branch} >> #{@merge_request.target_project.name_with_namespace}:#{merge_request.target_branch}"
else
diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb
index e967cf6dc73..00b127da429 100644
--- a/app/mailers/emails/notes.rb
+++ b/app/mailers/emails/notes.rb
@@ -4,27 +4,35 @@ module Emails
@note = Note.find(note_id)
@commit = @note.noteable
@project = @note.project
- mail(to: recipient(recipient_id), subject: subject("Note for commit #{@commit.short_id}", @commit.title))
+ mail(from: sender(@note.author_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@commit.title} (#{@commit.short_id})"))
end
def note_issue_email(recipient_id, note_id)
@note = Note.find(note_id)
@issue = @note.noteable
@project = @note.project
- mail(to: recipient(recipient_id), subject: subject("Note for issue ##{@issue.iid}"))
+ mail(from: sender(@note.author_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@issue.title} (##{@issue.iid})"))
end
def note_merge_request_email(recipient_id, note_id)
@note = Note.find(note_id)
@merge_request = @note.noteable
@project = @note.project
- mail(to: recipient(recipient_id), subject: subject("Note for merge request ##{@merge_request.iid}"))
+ mail(from: sender(@note.author_id),
+ to: recipient(recipient_id),
+ subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
end
def note_wall_email(recipient_id, note_id)
@note = Note.find(note_id)
@project = @note.project
- mail(to: recipient(recipient_id), subject: subject("Note on wall"))
+ mail(from: sender(@note.author_id),
+ to: recipient(recipient_id),
+ subject: subject("Note on wall"))
end
end
end
diff --git a/app/mailers/emails/profile.rb b/app/mailers/emails/profile.rb
index bcd44f9476c..c91660a02b5 100644
--- a/app/mailers/emails/profile.rb
+++ b/app/mailers/emails/profile.rb
@@ -6,6 +6,12 @@ module Emails
mail(to: @user.email, subject: subject("Account was created for you"))
end
+ def new_email_email(email_id)
+ @email = Email.find(email_id)
+ @user = @email.user
+ mail(to: @user.email, subject: subject("Email was added to your account"))
+ end
+
def new_ssh_key_email(key_id)
@key = Key.find(key_id)
@user = @key.user
diff --git a/app/mailers/emails/projects.rb b/app/mailers/emails/projects.rb
index df21d7b5b02..46f24e9fb7c 100644
--- a/app/mailers/emails/projects.rb
+++ b/app/mailers/emails/projects.rb
@@ -17,11 +17,14 @@ module Emails
def repository_push_email(project_id, recipient, author_id, branch, compare)
@project = Project.find(project_id)
@author = User.find(author_id)
+ @compare = compare
@commits = Commit.decorate(compare.commits)
@diffs = compare.diffs
@branch = branch
- mail(to: recipient, subject: subject("New push to repository"))
+ mail(from: sender(author_id),
+ to: recipient,
+ subject: subject("New push to repository"))
end
end
end
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index aec4c57cba8..554f53cf148 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -12,19 +12,36 @@ class Notify < ActionMailer::Base
default_url_options[:host] = Gitlab.config.gitlab.host
default_url_options[:protocol] = Gitlab.config.gitlab.protocol
- default_url_options[:port] = Gitlab.config.gitlab.port if Gitlab.config.gitlab_on_non_standard_port?
+ default_url_options[:port] = Gitlab.config.gitlab.port unless Gitlab.config.gitlab_on_standard_port?
default_url_options[:script_name] = Gitlab.config.gitlab.relative_url_root
- default from: Gitlab.config.gitlab.email_from
+ default from: Proc.new { default_sender_address.format }
default reply_to: "noreply@#{Gitlab.config.gitlab.host}"
- # Just send email with 3 seconds delay
+ # Just send email with 2 seconds delay
def self.delay
delay_for(2.seconds)
end
private
+ # The default email address to send emails from
+ def default_sender_address
+ address = Mail::Address.new(Gitlab.config.gitlab.email_from)
+ address.display_name = "GitLab"
+ address
+ end
+
+ # Return an email address that displays the name of the sender.
+ # Only the displayed name changes; the actual email address is always the same.
+ def sender(sender_id)
+ if sender = User.find(sender_id)
+ address = default_sender_address
+ address.display_name = sender.name
+ address.format
+ end
+ end
+
# Look up a User by their ID and return their email address
#
# recipient_id - User ID
@@ -43,21 +60,21 @@ class Notify < ActionMailer::Base
# Examples
#
# >> subject('Lorem ipsum')
- # => "GitLab | Lorem ipsum"
+ # => "Lorem ipsum"
#
# # Automatically inserts Project name when @project is set
# >> @project = Project.last
# => #<Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...>
# >> subject('Lorem ipsum')
- # => "GitLab | Ruby on Rails | Lorem ipsum "
+ # => "Ruby on Rails | Lorem ipsum "
#
# # Accepts multiple arguments
# >> subject('Lorem ipsum', 'Dolor sit amet')
- # => "GitLab | Lorem ipsum | Dolor sit amet"
+ # => "Lorem ipsum | Dolor sit amet"
def subject(*extra)
- subject = "GitLab"
- subject << (@project ? " | #{@project.name_with_namespace}" : "")
- subject << " | " + extra.join(' | ') if extra.present?
+ subject = ""
+ subject << "#{@project.name} | " if @project
+ subject << extra.join(' | ') if extra.present?
subject
end
end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index cf925141f2d..69ada753d02 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -14,6 +14,7 @@ class Ability
when "MergeRequest" then merge_request_abilities(user, subject)
when "Group" then group_abilities(user, subject)
when "Namespace" then namespace_abilities(user, subject)
+ when "UsersGroup" then users_group_abilities(user, subject)
else []
end.concat(global_abilities(user))
end
@@ -42,7 +43,19 @@ class Ability
:download_code
]
else
- []
+ group = if subject.kind_of?(Group)
+ subject
+ elsif subject.respond_to?(:group)
+ subject.group
+ else
+ nil
+ end
+
+ if group && group.has_projects_accessible_to?(nil)
+ [:read_group]
+ else
+ []
+ end
end
end
@@ -125,6 +138,8 @@ class Ability
project_report_rules + [
:write_merge_request,
:write_wiki,
+ :modify_issue,
+ :admin_issue,
:push_code
]
end
@@ -169,7 +184,7 @@ class Ability
def group_abilities user, group
rules = []
- if group.users.include?(user) || user.admin?
+ if user.admin? || group.users.include?(user) || ProjectsFinder.new.execute(user, group: group).any?
rules << :read_group
end
@@ -217,5 +232,19 @@ class Ability
end
end
end
+
+ def users_group_abilities(user, subject)
+ rules = []
+ target_user = subject.user
+ group = subject.group
+ can_manage = group_abilities(user, group).include?(:manage_group)
+ if can_manage && (user != target_user)
+ rules << :modify
+ end
+ if !group.last_owner?(user) && (can_manage || (user == target_user))
+ rules << :destroy
+ end
+ rules
+ end
end
end
diff --git a/app/models/commit.rb b/app/models/commit.rb
index dd1f9801878..c313aeb7572 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -16,29 +16,31 @@ class Commit
DIFF_HARD_LIMIT_FILES = 500
DIFF_HARD_LIMIT_LINES = 10000
- def self.decorate(commits)
- commits.map { |c| self.new(c) }
- end
+ class << self
+ def decorate(commits)
+ commits.map { |c| self.new(c) }
+ end
- # Calculate number of lines to render for diffs
- def self.diff_line_count(diffs)
- diffs.reduce(0){|sum, d| sum + d.diff.lines.count}
- end
+ # Calculate number of lines to render for diffs
+ def diff_line_count(diffs)
+ diffs.reduce(0){|sum, d| sum + d.diff.lines.count}
+ end
- def self.diff_suppress?(diffs, line_count = nil)
- # optimize - check file count first
- return true if diffs.size > DIFF_SAFE_FILES
+ def diff_suppress?(diffs, line_count = nil)
+ # optimize - check file count first
+ return true if diffs.size > DIFF_SAFE_FILES
- line_count ||= Commit::diff_line_count(diffs)
- line_count > DIFF_SAFE_LINES
- end
+ line_count ||= Commit::diff_line_count(diffs)
+ line_count > DIFF_SAFE_LINES
+ end
- def self.diff_force_suppress?(diffs, line_count = nil)
- # optimize - check file count first
- return true if diffs.size > DIFF_HARD_LIMIT_FILES
+ def diff_force_suppress?(diffs, line_count = nil)
+ # optimize - check file count first
+ return true if diffs.size > DIFF_HARD_LIMIT_FILES
- line_count ||= Commit::diff_line_count(diffs)
- line_count > DIFF_HARD_LIMIT_LINES
+ line_count ||= Commit::diff_line_count(diffs)
+ line_count > DIFF_HARD_LIMIT_LINES
+ end
end
attr_accessor :raw
@@ -97,14 +99,16 @@ class Commit
#
# cut off, ellipses (`&hellp;`) are prepended to the commit message.
def description
- description = safe_message
+ title_end = safe_message.index(/\n/)
+ @description ||= if (!title_end && safe_message.length > 100) || (title_end && title_end > 100)
+ "&hellip;".html_safe << safe_message[80..-1]
+ else
+ safe_message.split(/\n/, 2)[1].try(:chomp)
+ end
+ end
- title_end = description.index(/\n/)
- if (!title_end && description.length > 100) || (title_end && title_end > 100)
- "&hellip;".html_safe << description[80..-1]
- else
- description.split(/\n/, 2)[1].try(:chomp)
- end
+ def description?
+ description.present?
end
# Regular expression that identifies commit message clauses that trigger issue closing.
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 58bf621f91b..75989888bfa 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -23,7 +23,8 @@ module Issuable
scope :assigned, -> { where("assignee_id IS NOT NULL") }
scope :unassigned, -> { where("assignee_id IS NULL") }
scope :of_projects, ->(ids) { where(project_id: ids) }
-
+ scope :opened, -> { with_state(:opened, :reopened) }
+ scope :closed, -> { with_state(:closed) }
delegate :name,
:email,
@@ -45,6 +46,18 @@ module Issuable
def search(query)
where("title like :query", query: "%#{query}%")
end
+
+ def sort(method)
+ case method.to_s
+ when 'newest' then reorder("#{table_name}.created_at DESC")
+ when 'oldest' then reorder("#{table_name}.created_at ASC")
+ when 'recently_updated' then reorder("#{table_name}.updated_at DESC")
+ when 'last_updated' then reorder("#{table_name}.updated_at ASC")
+ when 'milestone_due_soon' then joins(:milestone).reorder("milestones.due_date ASC")
+ when 'milestone_due_later' then joins(:milestone).reorder("milestones.due_date DESC")
+ else reorder("#{table_name}.created_at DESC")
+ end
+ end
end
def today?
diff --git a/app/models/email.rb b/app/models/email.rb
new file mode 100644
index 00000000000..22e71e4f107
--- /dev/null
+++ b/app/models/email.rb
@@ -0,0 +1,33 @@
+# == Schema Information
+#
+# Table name: emails
+#
+# id :integer not null, primary key
+# user_id :integer not null
+# email :string not null
+# created_at :datetime not null
+class Email < ActiveRecord::Base
+ attr_accessible :email, :user_id
+
+ #
+ # Relations
+ #
+ belongs_to :user
+
+ #
+ # Validations
+ #
+ validates :user_id, presence: true
+ validates :email, presence: true, email: { strict_mode: true }, uniqueness: true
+ validate :unique_email, if: ->(email) { email.email_changed? }
+
+ before_validation :cleanup_email
+
+ def cleanup_email
+ self.email = self.email.downcase.strip
+ end
+
+ def unique_email
+ self.errors.add(:email, 'has already been taken') if User.exists?(email: self.email)
+ end
+end \ No newline at end of file
diff --git a/app/models/event.rb b/app/models/event.rb
index ddb863c1be2..d43d6eb682f 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -56,11 +56,13 @@ class Event < ActiveRecord::Base
end
def create_ref_event(project, user, ref, action = 'add', prefix = 'refs/heads')
+ commit = project.repository.commit(ref.target)
+
if action.to_s == 'add'
before = '00000000'
- after = ref.commit.id
+ after = commit.id
else
- before = ref.commit.id
+ before = commit.id
after = '00000000'
end
diff --git a/app/models/gollum_wiki.rb b/app/models/gollum_wiki.rb
index 7ebaaff61cb..613a7110d12 100644
--- a/app/models/gollum_wiki.rb
+++ b/app/models/gollum_wiki.rb
@@ -1,4 +1,5 @@
class GollumWiki
+ include Gitlab::ShellAdapter
MARKUPS = {
"Markdown" => :markdown,
@@ -113,10 +114,6 @@ class GollumWiki
"#{@user.username} #{action} page: #{title}"
end
- def gitlab_shell
- @gitlab_shell ||= Gitlab::Shell.new
- end
-
def path_to_repo
@path_to_repo ||= File.join(Gitlab.config.gitlab_shell.repos_path, "#{path_with_namespace}.git")
end
diff --git a/app/models/group.rb b/app/models/group.rb
index 0b64d5b4f7f..0d4d5f4e836 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -12,10 +12,26 @@
# description :string(255) default(""), not null
#
+require 'carrierwave/orm/activerecord'
+require 'file_size_validator'
+
class Group < Namespace
has_many :users_groups, dependent: :destroy
has_many :users, through: :users_groups
+ attr_accessible :avatar
+
+ validate :avatar_type, if: ->(user) { user.avatar_changed? }
+ validates :avatar, file_size: { maximum: 100.kilobytes.to_i }
+
+ mount_uploader :avatar, AttachmentUploader
+
+ def self.accessible_to(user)
+ accessible_ids = Project.accessible_to(user).pluck(:namespace_id)
+ accessible_ids += user.groups.pluck(:id) if user
+ where(id: accessible_ids)
+ end
+
def human_name
name
end
@@ -50,4 +66,10 @@ class Group < Namespace
def members
users_groups
end
+
+ def avatar_type
+ unless self.avatar.image?
+ self.errors.add :avatar, "only images allowed"
+ end
+ end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 6580c5004af..a8dc6e5fd85 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -28,8 +28,6 @@ class Issue < ActiveRecord::Base
scope :of_group, ->(group) { where(project_id: group.project_ids) }
scope :of_user_team, ->(team) { where(project_id: team.project_ids, assignee_id: team.member_ids) }
- scope :opened, -> { with_state(:opened, :reopened) }
- scope :closed, -> { with_state(:closed) }
attr_accessible :title, :assignee_id, :position, :description,
:milestone_id, :label_list, :author_id_of_changes,
@@ -50,9 +48,7 @@ class Issue < ActiveRecord::Base
end
state :opened
-
state :reopened
-
state :closed
end
diff --git a/app/models/key.rb b/app/models/key.rb
index 79f7bbd2590..29a76f53f3d 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -53,7 +53,7 @@ class Key < ActiveRecord::Base
Tempfile.open('gitlab_key_file') do |file|
file.puts key
file.rewind
- cmd_output, cmd_status = popen("ssh-keygen -lf #{file.path}", '/tmp')
+ cmd_output, cmd_status = popen(%W(ssh-keygen -lf #{file.path}), '/tmp')
end
if cmd_status.zero?
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index e59aee8b445..4774cbcf3aa 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -31,6 +31,13 @@ class MergeRequest < ActiveRecord::Base
belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project"
belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project"
+ has_one :merge_request_diff, dependent: :destroy
+
+ after_create :create_merge_request_diff
+ after_update :update_merge_request_diff
+
+ delegate :commits, :diffs, :last_commit, :last_commit_short_sha, to: :merge_request_diff, prefix: nil
+
attr_accessible :title, :assignee_id, :source_project_id, :source_branch, :target_project_id, :target_branch, :milestone_id, :author_id_of_changes, :state_event, :description
attr_accessor :should_remove_source_branch
@@ -45,20 +52,26 @@ class MergeRequest < ActiveRecord::Base
end
event :merge do
- transition [:reopened, :opened] => :merged
+ transition [:reopened, :opened, :locked] => :merged
end
event :reopen do
transition closed: :reopened
end
- state :opened
+ event :lock do
+ transition [:reopened, :opened] => :locked
+ end
- state :reopened
+ event :unlock do
+ transition locked: :reopened
+ end
+ state :opened
+ state :reopened
state :closed
-
state :merged
+ state :locked
end
state_machine :merge_status, initial: :unchecked do
@@ -75,15 +88,10 @@ class MergeRequest < ActiveRecord::Base
end
state :unchecked
-
state :can_be_merged
-
state :cannot_be_merged
end
- serialize :st_commits
- serialize :st_diffs
-
validates :source_project, presence: true, unless: :allow_broken
validates :source_branch, presence: true
validates :target_project, presence: true
@@ -92,8 +100,6 @@ class MergeRequest < ActiveRecord::Base
scope :of_group, ->(group) { where("source_project_id in (:group_project_ids) OR target_project_id in (:group_project_ids)", group_project_ids: group.project_ids) }
scope :of_user_team, ->(team) { where("(source_project_id in (:team_project_ids) OR target_project_id in (:team_project_ids) AND assignee_id in (:team_member_ids))", team_project_ids: team.project_ids, team_member_ids: team.member_ids) }
- scope :opened, -> { with_state(:opened) }
- scope :closed, -> { with_state(:closed) }
scope :merged, -> { with_state(:merged) }
scope :by_branch, ->(branch_name) { where("(source_branch LIKE :branch) OR (target_branch LIKE :branch)", branch: branch_name) }
scope :cared, ->(user) { where('assignee_id = :user OR author_id = :user', user: user.id) }
@@ -105,7 +111,7 @@ class MergeRequest < ActiveRecord::Base
scope :closed, -> { with_states(:closed, :merged) }
def validate_branches
- if target_project==source_project && target_branch == source_branch
+ if target_project == source_project && target_branch == source_branch
errors.add :branch_conflict, "You can not use same project/branch for source and target"
end
@@ -119,9 +125,17 @@ class MergeRequest < ActiveRecord::Base
end
end
+ def update_merge_request_diff
+ if source_branch_changed? || target_branch_changed?
+ reload_code
+ mark_as_unchecked
+ end
+ end
+
def reload_code
- self.reloaded_commits
- self.reloaded_diffs
+ if merge_request_diff && opened?
+ merge_request_diff.reload_content
+ end
end
def check_if_can_be_merged
@@ -132,42 +146,6 @@ class MergeRequest < ActiveRecord::Base
end
end
- def diffs
- @diffs ||= (load_diffs(st_diffs) || [])
- end
-
- def reloaded_diffs
- if opened? && unmerged_diffs.any?
- self.st_diffs = dump_diffs(unmerged_diffs)
- self.save
- end
- end
-
- def broken_diffs?
- diffs == broken_diffs
- rescue
- true
- end
-
- def valid_diffs?
- !broken_diffs?
- end
-
- def unmerged_diffs
- diffs = if for_fork?
- Gitlab::Satellite::MergeAction.new(author, self).diffs_between_satellite
- else
- Gitlab::Git::Diff.between(target_project.repository, source_branch, target_branch)
- end
-
- diffs ||= []
- diffs
- end
-
- def last_commit
- commits.first
- end
-
def merge_event
self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::MERGED).last
end
@@ -176,56 +154,19 @@ class MergeRequest < ActiveRecord::Base
self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last
end
- def commits
- load_commits(st_commits || [])
+ def automerge!(current_user, commit_message = nil)
+ MergeRequests::AutoMergeService.new.execute(self, current_user, commit_message)
end
- def probably_merged?
- unmerged_commits.empty? &&
- commits.any? && opened?
- end
-
- def reloaded_commits
- if opened? && unmerged_commits.any?
- self.st_commits = dump_commits(unmerged_commits)
- save
-
- end
- commits
- end
-
- def unmerged_commits
- if for_fork?
- commits = Gitlab::Satellite::MergeAction.new(self.author, self).commits_between
- else
- commits = target_project.repository.commits_between(self.target_branch, self.source_branch)
- end
-
- if commits.present?
- commits = Commit.decorate(commits).
- sort_by(&:created_at).
- reverse
- end
- commits
- end
-
- def merge!(user_id)
- self.author_id_of_changes = user_id
- self.merge
- end
-
- def automerge!(current_user)
- if Gitlab::Satellite::MergeAction.new(current_user, self).merge! && self.unmerged_commits.empty?
- self.merge!(current_user.id)
- true
- end
- rescue
- mark_as_unmergeable
- false
+ def open?
+ opened? || reopened?
end
def mr_and_commit_notes
- commit_ids = commits.map(&:id)
+ # Fetch comments only from last 100 commits
+ commits_for_notes_limit = 100
+ commit_ids = commits.last(commits_for_notes_limit).map(&:id)
+
project.notes.where(
"(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND commit_id IN (:commit_ids))",
mr_id: id,
@@ -247,10 +188,6 @@ class MergeRequest < ActiveRecord::Base
Gitlab::Satellite::MergeAction.new(current_user, self).format_patch
end
- def last_commit_short_sha
- @last_commit_short_sha ||= last_commit.sha[0..10]
- end
-
def for_fork?
target_project != source_project
end
@@ -293,6 +230,14 @@ class MergeRequest < ActiveRecord::Base
end
end
+ def source_project_namespace
+ if source_project && source_project.namespace
+ source_project.namespace.path
+ else
+ "(removed)"
+ end
+ end
+
def source_branch_exists?
return false unless self.source_project
@@ -319,33 +264,32 @@ class MergeRequest < ActiveRecord::Base
update_all(updated_at: Time.now)
end
- private
-
- def dump_commits(commits)
- commits.map(&:to_hash)
+ def merge_commit_message
+ message = "Merge branch '#{source_branch}' into '#{target_branch}'"
+ message << "\n\n"
+ message << title.to_s
+ message << "\n\n"
+ message << description.to_s
+ message
end
- def load_commits(array)
- array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash)) }
- end
-
- def dump_diffs(diffs)
- if diffs == broken_diffs
- broken_diffs
- elsif diffs.respond_to?(:map)
- diffs.map(&:to_hash)
+ # Return array of possible target branches
+ # dependes on target project of MR
+ def target_branches
+ if target_project.nil?
+ []
+ else
+ target_project.repository.branch_names
end
end
- def load_diffs(raw)
- if raw == broken_diffs
- broken_diffs
- elsif raw.respond_to?(:map)
- raw.map { |hash| Gitlab::Git::Diff.new(hash) }
+ # Return array of possible source branches
+ # dependes on source project of MR
+ def source_branches
+ if source_project.nil?
+ []
+ else
+ source_project.repository.branch_names
end
end
-
- def broken_diffs
- [Gitlab::Git::Diff::BROKEN_DIFF]
- end
end
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
new file mode 100644
index 00000000000..99afffc1db0
--- /dev/null
+++ b/app/models/merge_request_diff.rb
@@ -0,0 +1,155 @@
+require Rails.root.join("app/models/commit")
+
+class MergeRequestDiff < ActiveRecord::Base
+ # Prevent store of diff
+ # if commits amount more then 200
+ COMMITS_SAFE_SIZE = 200
+
+ attr_reader :commits, :diffs
+
+ belongs_to :merge_request
+
+ attr_accessible :state, :st_commits, :st_diffs
+
+ delegate :target_branch, :source_branch, to: :merge_request, prefix: nil
+
+ state_machine :state, initial: :empty do
+ state :collected
+ state :timeout
+ state :overflow_commits_safe_size
+ state :overflow_diff_files_limit
+ state :overflow_diff_lines_limit
+ end
+
+ serialize :st_commits
+ serialize :st_diffs
+
+ after_create :reload_content
+
+ def reload_content
+ reload_commits
+ reload_diffs
+ end
+
+ def diffs
+ @diffs ||= (load_diffs(st_diffs) || [])
+ end
+
+ def commits
+ @commits ||= load_commits(st_commits || [])
+ end
+
+ def last_commit
+ commits.first
+ end
+
+ def last_commit_short_sha
+ @last_commit_short_sha ||= last_commit.sha[0..10]
+ end
+
+ private
+
+ def dump_commits(commits)
+ commits.map(&:to_hash)
+ end
+
+ def load_commits(array)
+ array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash)) }
+ end
+
+ def dump_diffs(diffs)
+ if diffs.respond_to?(:map)
+ diffs.map(&:to_hash)
+ end
+ end
+
+ def load_diffs(raw)
+ if raw.respond_to?(:map)
+ raw.map { |hash| Gitlab::Git::Diff.new(hash) }
+ end
+ end
+
+ # Collect array of Git::Commit objects
+ # between target and source branches
+ def unmerged_commits
+ commits = if merge_request.for_fork?
+ Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).commits_between
+ else
+ repository.commits_between(target_branch, source_branch)
+ end
+
+ if commits.present?
+ commits = Commit.decorate(commits).
+ sort_by(&:created_at).
+ reverse
+ end
+
+ commits
+ end
+
+ # Reload all commits related to current merge request from repo
+ # and save it as array of hashes in st_commits db field
+ def reload_commits
+ commit_objects = unmerged_commits
+
+ if commit_objects.present?
+ self.st_commits = dump_commits(commit_objects)
+ end
+
+ save
+ end
+
+ # Reload diffs between branches related to current merge request from repo
+ # and save it as array of hashes in st_diffs db field
+ def reload_diffs
+ new_diffs = []
+
+ if commits.size.zero?
+ self.state = :empty
+ elsif commits.size > COMMITS_SAFE_SIZE
+ self.state = :overflow_commits_safe_size
+ else
+ new_diffs = unmerged_diffs
+ end
+
+ if new_diffs.any?
+ if new_diffs.size > Commit::DIFF_HARD_LIMIT_FILES
+ self.state = :overflow_diff_files_limit
+ new_diffs = []
+ end
+
+ if new_diffs.sum { |diff| diff.diff.lines.count } > Commit::DIFF_HARD_LIMIT_LINES
+ self.state = :overflow_diff_lines_limit
+ new_diffs = []
+ end
+ end
+
+ if new_diffs.present?
+ new_diffs = dump_commits(new_diffs)
+ self.state = :collected
+ end
+
+ self.st_diffs = new_diffs
+ self.save
+ end
+
+ # Collect array of Git::Diff objects
+ # between target and source branches
+ def unmerged_diffs
+ diffs = if merge_request.for_fork?
+ Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite
+ else
+ Gitlab::Git::Diff.between(repository, source_branch, target_branch)
+ end
+
+ diffs ||= []
+ diffs
+ rescue Gitlab::Git::Diff::TimeoutError => ex
+ self.state = :timeout
+ diffs = []
+ end
+
+ def repository
+ merge_request.target_project.repository
+ end
+end
diff --git a/app/models/namespace.rb b/app/models/namespace.rb
index 8f837c72ff5..468c93bd426 100644
--- a/app/models/namespace.rb
+++ b/app/models/namespace.rb
@@ -10,6 +10,7 @@
# updated_at :datetime not null
# type :string(255)
# description :string(255) default(""), not null
+# avatar :string(255)
#
class Namespace < ActiveRecord::Base
@@ -26,7 +27,7 @@ class Namespace < ActiveRecord::Base
format: { with: Gitlab::Regex.name_regex,
message: "only letters, digits, spaces & '_' '-' '.' allowed." }
validates :description, length: { within: 0..255 }
- validates :path, uniqueness: true, presence: true, length: { within: 1..255 },
+ validates :path, uniqueness: { case_sensitive: false }, presence: true, length: { within: 1..255 },
exclusion: { in: Gitlab::Blacklist.path },
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
@@ -46,6 +47,14 @@ class Namespace < ActiveRecord::Base
def self.global_id
'GLN'
end
+
+ def projects_accessible_to(user)
+ projects.accessible_to(user)
+ end
+
+ def has_projects_accessible_to?(user)
+ projects_accessible_to(user).present?
+ end
def to_param
path
diff --git a/app/models/note.rb b/app/models/note.rb
index 67755f44148..48c03c9d587 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -72,14 +72,20 @@ class Note < ActiveRecord::Base
# +noteable+ was referenced from +mentioner+, by including GFM in either +mentioner+'s description or an associated Note.
# Create a system Note associated with +noteable+ with a GFM back-reference to +mentioner+.
def create_cross_reference_note(noteable, mentioner, author, project)
- create({
- noteable: noteable,
- commit_id: (noteable.sha if noteable.respond_to? :sha),
+ note_options = {
project: project,
author: author,
note: "_mentioned in #{mentioner.gfm_reference}_",
system: true
- }, without_protection: true)
+ }
+
+ if noteable.kind_of?(Commit)
+ note_options.merge!(noteable_type: 'Commit', commit_id: noteable.id)
+ else
+ note_options.merge!(noteable: noteable)
+ end
+
+ create(note_options, without_protection: true)
end
def create_assignee_change_note(noteable, project, author, assignee)
@@ -123,8 +129,8 @@ class Note < ActiveRecord::Base
def commit_author
@commit_author ||=
- project.users.find_by_email(noteable.author_email) ||
- project.users.find_by_name(noteable.author_name)
+ project.users.find_by(email: noteable.author_email) ||
+ project.users.find_by(name: noteable.author_name)
rescue
nil
end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index ff6a18d6a51..b0f8ed6a4ec 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -9,12 +9,23 @@ class Notification
attr_accessor :target
- def self.notification_levels
- [N_DISABLED, N_PARTICIPATING, N_WATCH]
- end
-
- def self.project_notification_levels
- [N_DISABLED, N_PARTICIPATING, N_WATCH, N_GLOBAL]
+ class << self
+ def notification_levels
+ [N_DISABLED, N_PARTICIPATING, N_WATCH]
+ end
+
+ def options_with_labels
+ {
+ disabled: N_DISABLED,
+ participating: N_PARTICIPATING,
+ watch: N_WATCH,
+ global: N_GLOBAL
+ }
+ end
+
+ def project_notification_levels
+ [N_DISABLED, N_PARTICIPATING, N_WATCH, N_GLOBAL]
+ end
end
def initialize(target)
@@ -36,4 +47,8 @@ class Notification
def global?
target.notification_level == N_GLOBAL
end
+
+ def level
+ target.notification_level
+ end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index a55f7a65b0b..47dc8a1fdb0 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -28,6 +28,9 @@ class Project < ActiveRecord::Base
include Gitlab::VisibilityLevel
extend Enumerize
+ default_value_for :imported, false
+ default_value_for :archived, false
+
ActsAsTaggableOn.strict_case_match = true
attr_accessible :name, :path, :description, :issues_tracker, :label_list,
@@ -53,6 +56,7 @@ class Project < ActiveRecord::Base
has_one :hipchat_service, dependent: :destroy
has_one :flowdock_service, dependent: :destroy
has_one :assembla_service, dependent: :destroy
+ has_one :gemnasium_service, dependent: :destroy
has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id"
has_one :forked_from_project, through: :forked_project_link
@@ -114,18 +118,35 @@ class Project < ActiveRecord::Base
scope :sorted_by_activity, -> { reorder("projects.last_activity_at DESC") }
scope :personal, ->(user) { where(namespace_id: user.namespace_id) }
scope :joined, ->(user) { where("namespace_id != ?", user.namespace_id) }
- scope :public_only, -> { where(visibility_level: PUBLIC) }
- scope :public_or_internal_only, ->(user) { where("visibility_level IN (:levels)", levels: user ? [ INTERNAL, PUBLIC ] : [ PUBLIC ]) }
+
+ scope :public_only, -> { where(visibility_level: Project::PUBLIC) }
+ scope :public_and_internal_only, -> { where(visibility_level: Project.public_and_internal_levels) }
scope :non_archived, -> { where(archived: false) }
enumerize :issues_tracker, in: (Gitlab.config.issues_tracker.keys).append(:gitlab), default: :gitlab
class << self
+ def public_and_internal_levels
+ [Project::PUBLIC, Project::INTERNAL]
+ end
+
def abandoned
where('projects.last_activity_at < ?', 6.months.ago)
end
+ def publicish(user)
+ visibility_levels = [Project::PUBLIC]
+ visibility_levels += [Project::INTERNAL] if user
+ where(visibility_level: visibility_levels)
+ end
+
+ def accessible_to(user)
+ accessible_ids = publicish(user).pluck(:id)
+ accessible_ids += user.authorized_projects.pluck(:id) if user
+ where(id: accessible_ids)
+ end
+
def with_push
includes(:events).where('events.action = ?', Event::PUSHED)
end
@@ -138,13 +159,17 @@ class Project < ActiveRecord::Base
joins(:namespace).where("projects.archived = ?", false).where("projects.name LIKE :query OR projects.path LIKE :query OR namespaces.name LIKE :query OR projects.description LIKE :query", query: "%#{query}%")
end
+ def search_by_title query
+ where("projects.archived = ?", false).where("LOWER(projects.name) LIKE :query", query: "%#{query.downcase}%")
+ end
+
def find_with_namespace(id)
if id.include?("/")
id = id.split("/")
- namespace = Namespace.find_by_path(id.first)
+ namespace = Namespace.find_by(path: id.first)
return nil unless namespace
- where(namespace_id: namespace.id).find_by_path(id.second)
+ where(namespace_id: namespace.id).find_by(path: id.second)
else
where(path: id, namespace_id: nil).last
end
@@ -201,6 +226,10 @@ class Project < ActiveRecord::Base
[Gitlab.config.gitlab.url, path_with_namespace].join("/")
end
+ def web_url_without_protocol
+ web_url.split("://")[1]
+ end
+
def build_commit_note(commit)
notes.new(commit_id: commit.id, noteable_type: "Commit")
end
@@ -248,7 +277,7 @@ class Project < ActiveRecord::Base
end
def available_services_names
- %w(gitlab_ci campfire hipchat pivotaltracker flowdock assembla emails_on_push)
+ %w(gitlab_ci campfire hipchat pivotaltracker flowdock assembla emails_on_push gemnasium)
end
def gitlab_ci?
@@ -270,9 +299,7 @@ class Project < ActiveRecord::Base
end
def send_move_instructions
- team.members.each do |user|
- Notify.delay.project_was_moved_email(self.id, user.id)
- end
+ NotificationService.new.project_was_moved(self)
end
def owner
@@ -290,7 +317,7 @@ class Project < ActiveRecord::Base
# Get Team Member record by user id
def team_member_by_id(user_id)
- users_projects.find_by_user_id(user_id)
+ users_projects.find_by(user_id: user_id)
end
def name_with_namespace
@@ -344,7 +371,7 @@ class Project < ActiveRecord::Base
# Close merge requests
mrs = self.merge_requests.opened.where(target_branch: branch_name).to_a
mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) }
- mrs.each { |merge_request| merge_request.merge!(user.id) }
+ mrs.each { |merge_request| MergeRequests::MergeService.new.execute(merge_request, user, nil) }
true
end
diff --git a/app/models/project_services/assembla_service.rb b/app/models/project_services/assembla_service.rb
index 66ecf394784..2a2c5172916 100644
--- a/app/models/project_services/assembla_service.rb
+++ b/app/models/project_services/assembla_service.rb
@@ -13,9 +13,12 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class AssemblaService < Service
+ attr_accessible :subdomain
+
include HTTParty
validates :token, presence: true, if: :activated?
@@ -34,12 +37,13 @@ class AssemblaService < Service
def fields
[
- { type: 'text', name: 'token', placeholder: '' }
+ { type: 'text', name: 'token', placeholder: '' },
+ { type: 'text', name: 'subdomain', placeholder: '' }
]
end
def execute(push)
- url = "https://atlas.assembla.com/spaces/ouposp/github_tool?secret_key=#{token}"
+ url = "https://atlas.assembla.com/spaces/#{subdomain}/github_tool?secret_key=#{token}"
AssemblaService.post(url, body: { payload: push }.to_json, headers: { 'Content-Type' => 'application/json' })
end
end
diff --git a/app/models/project_services/campfire_service.rb b/app/models/project_services/campfire_service.rb
index fb2a49fd586..f9247e054c7 100644
--- a/app/models/project_services/campfire_service.rb
+++ b/app/models/project_services/campfire_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class CampfireService < Service
diff --git a/app/models/project_services/emails_on_push_service.rb b/app/models/project_services/emails_on_push_service.rb
index 2a46eff7846..0a453166342 100644
--- a/app/models/project_services/emails_on_push_service.rb
+++ b/app/models/project_services/emails_on_push_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class EmailsOnPushService < Service
diff --git a/app/models/project_services/flowdock_service.rb b/app/models/project_services/flowdock_service.rb
index f72d9fa9015..2603a1f67a4 100644
--- a/app/models/project_services/flowdock_service.rb
+++ b/app/models/project_services/flowdock_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
require "flowdock-git-hook"
diff --git a/app/models/project_services/gemnasium_service.rb b/app/models/project_services/gemnasium_service.rb
new file mode 100644
index 00000000000..0b8e7bad353
--- /dev/null
+++ b/app/models/project_services/gemnasium_service.rb
@@ -0,0 +1,54 @@
+# == Schema Information
+#
+# Table name: services
+#
+# id :integer not null, primary key
+# type :string(255)
+# title :string(255)
+# token :string(255)
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# active :boolean default(FALSE), not null
+# project_url :string(255)
+# subdomain :string(255)
+# room :string(255)
+# api_key :string(255)
+#
+
+require "gemnasium/gitlab_service"
+
+class GemnasiumService < Service
+ validates :token, :api_key, presence: true, if: :activated?
+
+ def title
+ 'Gemnasium'
+ end
+
+ def description
+ 'Gemnasium monitors your project dependencies and alerts you about updates and security vulnerabilities.'
+ end
+
+ def to_param
+ 'gemnasium'
+ end
+
+ def fields
+ [
+ { type: 'text', name: 'api_key', placeholder: 'Your personal API KEY on gemnasium.com ' },
+ { type: 'text', name: 'token', placeholder: 'The project\'s slug on gemnasium.com' }
+ ]
+ end
+
+ def execute(push_data)
+ repo_path = File.join(Gitlab.config.gitlab_shell.repos_path, "#{project.path_with_namespace}.git")
+ Gemnasium::GitlabService.execute(
+ ref: push_data[:ref],
+ before: push_data[:before],
+ after: push_data[:after],
+ token: token,
+ api_key: api_key,
+ repo: repo_path
+ )
+ end
+end
diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb
index 7f5380a4551..017cd9eeaab 100644
--- a/app/models/project_services/gitlab_ci_service.rb
+++ b/app/models/project_services/gitlab_ci_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class GitlabCiService < Service
diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb
index ea2169fb168..3cee047a32a 100644
--- a/app/models/project_services/hipchat_service.rb
+++ b/app/models/project_services/hipchat_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class HipchatService < Service
@@ -40,7 +41,7 @@ class HipchatService < Service
end
def execute(push_data)
- gate[room].send('Gitlab', create_message(push_data))
+ gate[room].send('GitLab', create_message(push_data))
end
private
@@ -61,7 +62,7 @@ class HipchatService < Service
elsif after =~ /000000/
message << "removed branch #{ref} from <a href=\"#{project.web_url}\">#{project.name_with_namespace.gsub!(/\s/,'')}</a> \n"
else
- message << "#pushed to branch <a href=\"#{project.web_url}/commits/#{ref}\">#{ref}</a> "
+ message << "pushed to branch <a href=\"#{project.web_url}/commits/#{ref}\">#{ref}</a> "
message << "of <a href=\"#{project.web_url}\">#{project.name_with_namespace.gsub!(/\s/,'')}</a> "
message << "(<a href=\"#{project.web_url}/compare/#{before}...#{after}\">Compare changes</a>)"
for commit in push[:commits] do
diff --git a/app/models/project_services/pivotaltracker_service.rb b/app/models/project_services/pivotaltracker_service.rb
index c5b1b9ab8d3..877b9a77404 100644
--- a/app/models/project_services/pivotaltracker_service.rb
+++ b/app/models/project_services/pivotaltracker_service.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
class PivotaltrackerService < Service
diff --git a/app/models/project_team.rb b/app/models/project_team.rb
index 5630f280aea..eca13e56061 100644
--- a/app/models/project_team.rb
+++ b/app/models/project_team.rb
@@ -22,22 +22,22 @@ class ProjectTeam
end
def find(user_id)
- user = project.users.find_by_id(user_id)
+ user = project.users.find_by(id: user_id)
if group
- user ||= group.users.find_by_id(user_id)
+ user ||= group.users.find_by(id: user_id)
end
user
end
def find_tm(user_id)
- tm = project.users_projects.find_by_user_id(user_id)
+ tm = project.users_projects.find_by(user_id: user_id)
# If user is not in project members
# we should check for group membership
if group && !tm
- tm = group.users_groups.find_by_user_id(user_id)
+ tm = group.users_groups.find_by(user_id: user_id)
end
tm
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 1255b814533..35ec84f1651 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -57,7 +57,7 @@ class Repository
def recent_branches(limit = 20)
branches.sort do |a, b|
- b.commit.committed_date <=> a.commit.committed_date
+ commit(b.target).committed_date <=> commit(a.target).committed_date
end[0..limit]
end
@@ -134,6 +134,7 @@ class Repository
Rails.cache.delete(cache_key(:commit_count))
Rails.cache.delete(cache_key(:graph_log))
Rails.cache.delete(cache_key(:readme))
+ Rails.cache.delete(cache_key(:contribution_guide))
end
def graph_log
@@ -163,7 +164,55 @@ class Repository
def readme
Rails.cache.fetch(cache_key(:readme)) do
- Tree.new(self, self.root_ref).readme
+ tree(:head).readme
end
end
+
+ def contribution_guide
+ Rails.cache.fetch(cache_key(:contribution_guide)) do
+ tree(:head).contribution_guide
+ end
+ end
+
+ def head_commit
+ commit(self.root_ref)
+ end
+
+ def tree(sha = :head, path = nil)
+ if sha == :head
+ sha = head_commit.sha
+ end
+
+ Tree.new(self, sha, path)
+ end
+
+ def blob_at_branch(branch_name, path)
+ last_commit = commit(branch_name)
+
+ if last_commit
+ blob_at(last_commit.sha, path)
+ else
+ nil
+ end
+ end
+
+ # Returns url for submodule
+ #
+ # Ex.
+ # @repository.submodule_url_for('master', 'rack')
+ # # => git@localhost:rack.git
+ #
+ def submodule_url_for(ref, path)
+ if submodules(ref).any?
+ submodule = submodules(ref)[path]
+
+ if submodule
+ submodule['url']
+ end
+ end
+ end
+
+ def last_commit_for_path(sha, path)
+ commits(sha, path, 1).last
+ end
end
diff --git a/app/models/service.rb b/app/models/service.rb
index 540aaad1ce5..f7e440dcc81 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -13,12 +13,15 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
# To add new service you should build a class inherited from Service
# and implement a set of methods
class Service < ActiveRecord::Base
- attr_accessible :title, :token, :type, :active
+ default_value_for :active, false
+
+ attr_accessible :title, :token, :type, :active, :api_key
belongs_to :project
has_one :service_hook
diff --git a/app/models/tree.rb b/app/models/tree.rb
index ed06cb1a128..ac2183be44b 100644
--- a/app/models/tree.rb
+++ b/app/models/tree.rb
@@ -1,5 +1,5 @@
class Tree
- attr_accessor :entries, :readme
+ attr_accessor :entries, :readme, :contribution_guide
def initialize(repository, sha, path = '/')
path = '/' if path.blank?
@@ -10,6 +10,11 @@ class Tree
readme_path = path == '/' ? readme_tree.name : File.join(path, readme_tree.name)
@readme = Gitlab::Git::Blob.find(git_repo, sha, readme_path)
end
+
+ if contribution_tree = @entries.find(&:contributing?)
+ contribution_path = path == '/' ? contribution_tree.name : File.join(path, contribution_tree.name)
+ @contribution_guide = Gitlab::Git::Blob.find(git_repo, sha, contribution_path)
+ end
end
def trees
@@ -23,4 +28,8 @@ class Tree
def submodules
@entries.select(&:submodule?)
end
+
+ def sorted_entries
+ trees + blobs + submodules
+ end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index f2cd554f9c3..855fe58ffe8 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -41,7 +41,8 @@
# confirmed_at :datetime
# confirmation_sent_at :datetime
# unconfirmed_email :string(255)
-# hide_no_ssh_key :boolean default(FALSE), not null
+# hide_no_ssh_key :boolean default(FALSE)
+# website_url :string(255) default(""), not null
#
require 'carrierwave/orm/activerecord'
@@ -52,7 +53,7 @@ class User < ActiveRecord::Base
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :registerable
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username,
- :skype, :linkedin, :twitter, :color_scheme_id, :theme_id, :force_random_password,
+ :skype, :linkedin, :twitter, :website_url, :color_scheme_id, :theme_id, :force_random_password,
:extern_uid, :provider, :password_expires_at, :avatar, :hide_no_ssh_key,
as: [:default, :admin]
@@ -77,6 +78,7 @@ class User < ActiveRecord::Base
# Profile
has_many :keys, dependent: :destroy
+ has_many :emails, dependent: :destroy
# Groups
has_many :users_groups, dependent: :destroy
@@ -103,11 +105,11 @@ class User < ActiveRecord::Base
# Validations
#
validates :name, presence: true
- validates :email, presence: true, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/ }, uniqueness: true
+ validates :email, presence: true, email: {strict_mode: true}, uniqueness: true
validates :bio, length: { maximum: 255 }, allow_blank: true
validates :extern_uid, allow_blank: true, uniqueness: {scope: :provider}
validates :projects_limit, presence: true, numericality: {greater_than_or_equal_to: 0}
- validates :username, presence: true, uniqueness: true,
+ validates :username, presence: true, uniqueness: { case_sensitive: false },
exclusion: { in: Gitlab::Blacklist.path },
format: { with: Gitlab::Regex.username_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
@@ -115,6 +117,7 @@ class User < ActiveRecord::Base
validates :notification_level, inclusion: { in: Notification.notification_levels }, presence: true
validate :namespace_uniq, if: ->(user) { user.username_changed? }
validate :avatar_type, if: ->(user) { user.avatar_changed? }
+ validate :unique_email, if: ->(user) { user.email_changed? }
validates :avatar, file_size: { maximum: 100.kilobytes.to_i }
before_validation :generate_password, on: :create
@@ -182,6 +185,13 @@ class User < ActiveRecord::Base
where(conditions).first
end
end
+
+ def find_for_commit(email, name)
+ # Prefer email match over name match
+ User.where(email: email).first ||
+ User.joins(:emails).where(emails: { email: email }).first ||
+ User.where(name: name).first
+ end
def filter filter_name
case filter_name
@@ -238,7 +248,7 @@ class User < ActiveRecord::Base
def namespace_uniq
namespace_name = self.username
- if Namespace.find_by_path(namespace_name)
+ if Namespace.find_by(path: namespace_name)
self.errors.add :username, "already exist"
end
end
@@ -249,6 +259,10 @@ class User < ActiveRecord::Base
end
end
+ def unique_email
+ self.errors.add(:email, 'has already been taken') if Email.exists?(email: self.email)
+ end
+
# Groups user has access to
def authorized_groups
@authorized_groups ||= begin
@@ -382,7 +396,7 @@ class User < ActiveRecord::Base
end
def created_by
- User.find_by_id(created_by_id) if created_by_id
+ User.find_by(id: created_by_id) if created_by_id
end
def sanitize_attrs
@@ -424,4 +438,18 @@ class User < ActiveRecord::Base
order('id DESC').limit(1000).
update_all(updated_at: Time.now)
end
+
+ def full_website_url
+ return "http://#{website_url}" if website_url !~ /^https?:\/\//
+
+ website_url
+ end
+
+ def short_website_url
+ website_url.gsub(/https?:\/\//, '')
+ end
+
+ def all_ssh_keys
+ keys.map(&:key)
+ end
end
diff --git a/app/models/web_hook.rb b/app/models/web_hook.rb
index c0aa3734917..45a795391a2 100644
--- a/app/models/web_hook.rb
+++ b/app/models/web_hook.rb
@@ -17,6 +17,10 @@
class WebHook < ActiveRecord::Base
include HTTParty
+ default_value_for :push_events, true
+ default_value_for :issues_events, false
+ default_value_for :merge_requests_events, false
+
attr_accessible :url
# HTTParty timeout
@@ -28,7 +32,7 @@ class WebHook < ActiveRecord::Base
def execute(data)
parsed_url = URI.parse(url)
if parsed_url.userinfo.blank?
- WebHook.post(url, body: data.to_json, headers: { "Content-Type" => "application/json" })
+ WebHook.post(url, body: data.to_json, headers: { "Content-Type" => "application/json" }, verify: false)
else
post_url = url.gsub("#{parsed_url.userinfo}@", "")
auth = {
@@ -38,6 +42,7 @@ class WebHook < ActiveRecord::Base
WebHook.post(post_url,
body: data.to_json,
headers: {"Content-Type" => "application/json"},
+ verify: false,
basic_auth: auth)
end
end
diff --git a/app/observers/email_observer.rb b/app/observers/email_observer.rb
new file mode 100644
index 00000000000..026ad8b1d9a
--- /dev/null
+++ b/app/observers/email_observer.rb
@@ -0,0 +1,5 @@
+class EmailObserver < BaseObserver
+ def after_create(email)
+ notification.new_email(email)
+ end
+end
diff --git a/app/observers/merge_request_observer.rb b/app/observers/merge_request_observer.rb
index 0ac555fce7c..f2e2d16c943 100644
--- a/app/observers/merge_request_observer.rb
+++ b/app/observers/merge_request_observer.rb
@@ -18,27 +18,12 @@ class MergeRequestObserver < ActivityObserver
execute_hooks(merge_request)
end
- def after_merge(merge_request, transition)
- notification.merge_mr(merge_request)
- # Since MR can be merged via sidekiq
- # to prevent event duplication do this check
- return true if merge_request.merge_event
-
- Event.create(
- project: merge_request.target_project,
- target_id: merge_request.id,
- target_type: merge_request.class.name,
- action: Event::MERGED,
- author_id: merge_request.author_id_of_changes
- )
-
- execute_hooks(merge_request)
- end
-
def after_reopen(merge_request, transition)
create_event(merge_request, Event::REOPENED)
create_note(merge_request)
execute_hooks(merge_request)
+ merge_request.reload_code
+ merge_request.mark_as_unchecked
end
def after_update(merge_request)
diff --git a/app/observers/system_hook_observer.rb b/app/observers/system_hook_observer.rb
index 3a649fd590d..80de177b9a2 100644
--- a/app/observers/system_hook_observer.rb
+++ b/app/observers/system_hook_observer.rb
@@ -2,10 +2,16 @@ class SystemHookObserver < BaseObserver
observe :user, :project, :users_project
def after_create(model)
- SystemHooksService.execute_hooks_for(model, :create)
+ system_hook_service.execute_hooks_for(model, :create)
end
def after_destroy(model)
- SystemHooksService.execute_hooks_for(model, :destroy)
+ system_hook_service.execute_hooks_for(model, :destroy)
+ end
+
+ private
+
+ def system_hook_service
+ SystemHooksService.new
end
end
diff --git a/app/contexts/base_context.rb b/app/services/base_service.rb
index 6accd9b2457..610f0474872 100644
--- a/app/contexts/base_context.rb
+++ b/app/services/base_service.rb
@@ -1,4 +1,4 @@
-class BaseContext
+class BaseService
attr_accessor :project, :current_user, :params
def initialize(project, user, params)
diff --git a/app/contexts/files/base_context.rb b/app/services/files/base_service.rb
index 44f9826652c..f1765d38976 100644
--- a/app/contexts/files/base_context.rb
+++ b/app/services/files/base_service.rb
@@ -1,5 +1,5 @@
module Files
- class BaseContext < ::BaseContext
+ class BaseService < ::BaseService
attr_reader :ref, :path
def initialize(project, user, params, ref, path = nil)
diff --git a/app/contexts/files/create_context.rb b/app/services/files/create_service.rb
index b3d62a028c7..1998fb79e7d 100644
--- a/app/contexts/files/create_context.rb
+++ b/app/services/files/create_service.rb
@@ -1,7 +1,7 @@
-require_relative "base_context"
+require_relative "base_service"
module Files
- class CreateContext < BaseContext
+ class CreateService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
@@ -24,7 +24,7 @@ module Files
return error("Your changes could not be committed, because file name contains not allowed characters")
end
- blob = repository.blob_at(ref, file_path)
+ blob = repository.blob_at_branch(ref, file_path)
if blob
return error("Your changes could not be committed, because file with such name exists")
@@ -33,7 +33,8 @@ module Files
new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
created_successfully = new_file_action.commit!(
params[:content],
- params[:commit_message]
+ params[:commit_message],
+ params[:encoding]
)
if created_successfully
diff --git a/app/contexts/files/delete_context.rb b/app/services/files/delete_service.rb
index 39ff7c2a4b1..ff5dc6ef34c 100644
--- a/app/contexts/files/delete_context.rb
+++ b/app/services/files/delete_service.rb
@@ -1,7 +1,7 @@
-require_relative "base_context"
+require_relative "base_service"
module Files
- class DeleteContext < BaseContext
+ class DeleteService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
@@ -17,7 +17,7 @@ module Files
return error("You can only create files if you are on top of a branch")
end
- blob = repository.blob_at(ref, path)
+ blob = repository.blob_at_branch(ref, path)
unless blob
return error("You can only edit text files")
diff --git a/app/contexts/files/update_context.rb b/app/services/files/update_service.rb
index 556027a3256..c631f28749c 100644
--- a/app/contexts/files/update_context.rb
+++ b/app/services/files/update_service.rb
@@ -1,7 +1,7 @@
-require_relative "base_context"
+require_relative "base_service"
module Files
- class UpdateContext < BaseContext
+ class UpdateService < BaseService
def execute
allowed = if project.protected_branch?(ref)
can?(current_user, :push_code_to_protected_branches, project)
@@ -17,16 +17,17 @@ module Files
return error("You can only create files if you are on top of a branch")
end
- blob = repository.blob_at(ref, path)
+ blob = repository.blob_at_branch(ref, path)
unless blob
return error("You can only edit text files")
end
- new_file_action = Gitlab::Satellite::EditFileAction.new(current_user, project, ref, path)
- created_successfully = new_file_action.commit!(
+ edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, project, ref, path)
+ created_successfully = edit_file_action.commit!(
params[:content],
- params[:commit_message]
+ params[:commit_message],
+ params[:encoding]
)
if created_successfully
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index e54f88e42de..fcc03c3e4b8 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -188,8 +188,6 @@ class GitPushService
end
def commit_user commit
- User.where(email: commit.author_email).first ||
- User.where(name: commit.author_name).first ||
- user
+ User.find_for_commit(commit.author_email, commit.author_name) || user
end
end
diff --git a/app/contexts/issues/bulk_update_context.rb b/app/services/issues/bulk_update_service.rb
index ab38a4f8ab5..f72a346af6f 100644
--- a/app/contexts/issues/bulk_update_context.rb
+++ b/app/services/issues/bulk_update_service.rb
@@ -1,5 +1,5 @@
module Issues
- class BulkUpdateContext < BaseContext
+ class BulkUpdateService < BaseService
def execute
update_data = params[:update]
diff --git a/app/services/merge_requests/auto_merge_service.rb b/app/services/merge_requests/auto_merge_service.rb
new file mode 100644
index 00000000000..d60d61ed54a
--- /dev/null
+++ b/app/services/merge_requests/auto_merge_service.rb
@@ -0,0 +1,30 @@
+module MergeRequests
+ # AutoMergeService class
+ #
+ # Do git merge in satellite and in case of success
+ # mark merge request as merged and execute all hooks and notifications
+ # Called when you do merge via GitLab UI
+ class AutoMergeService < BaseMergeService
+ def execute(merge_request, current_user, commit_message)
+ merge_request.lock
+
+ if Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
+ merge_request.author_id_of_changes = current_user.id
+ merge_request.merge
+
+ notification.merge_mr(merge_request)
+ create_merge_event(merge_request)
+ execute_project_hooks(merge_request)
+
+ true
+ else
+ merge_request.unlock
+ false
+ end
+ rescue
+ merge_request.unlock if merge_request.locked?
+ merge_request.mark_as_unmergeable
+ false
+ end
+ end
+end
diff --git a/app/services/merge_requests/base_merge_service.rb b/app/services/merge_requests/base_merge_service.rb
new file mode 100644
index 00000000000..dbdb0063074
--- /dev/null
+++ b/app/services/merge_requests/base_merge_service.rb
@@ -0,0 +1,26 @@
+module MergeRequests
+ class BaseMergeService
+
+ private
+
+ def notification
+ NotificationService.new
+ end
+
+ def create_merge_event(merge_request)
+ Event.create(
+ project: merge_request.target_project,
+ target_id: merge_request.id,
+ target_type: merge_request.class.name,
+ action: Event::MERGED,
+ author_id: merge_request.author_id_of_changes
+ )
+ end
+
+ def execute_project_hooks(merge_request)
+ if merge_request.project
+ merge_request.project.execute_hooks(merge_request.to_hook_data, :merge_request_hooks)
+ end
+ end
+ end
+end
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb
new file mode 100644
index 00000000000..1d5af04cdbb
--- /dev/null
+++ b/app/services/merge_requests/merge_service.rb
@@ -0,0 +1,22 @@
+module MergeRequests
+ # MergeService class
+ #
+ # Mark existing merge request as merged
+ # and execute all hooks and notifications
+ # Called when you do merge via command line and push code
+ # to target branch
+ class MergeService < BaseMergeService
+ def execute(merge_request, current_user, commit_message)
+ merge_request.author_id_of_changes = current_user.id
+ merge_request.merge
+
+ notification.merge_mr(merge_request)
+ create_merge_event(merge_request)
+ execute_project_hooks(merge_request)
+
+ true
+ rescue
+ false
+ end
+ end
+end
diff --git a/app/contexts/notes/create_context.rb b/app/services/notes/create_service.rb
index 36ea76ff949..ff6dfb61139 100644
--- a/app/contexts/notes/create_context.rb
+++ b/app/services/notes/create_service.rb
@@ -1,8 +1,9 @@
module Notes
- class CreateContext < BaseContext
+ class CreateService < BaseService
def execute
note = project.notes.new(params[:note])
note.author = current_user
+ note.system = false
note.save
note
end
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index eb42cac3f83..5daf573630d 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -17,6 +17,13 @@ class NotificationService
end
end
+ # Always notify user about email added to profile
+ def new_email(email)
+ if email.user
+ mailer.new_email_email(email.id)
+ end
+ end
+
# When create an issue we should send next emails:
#
# * issue assignee if their notification level is not Disabled
@@ -157,6 +164,15 @@ class NotificationService
mailer.group_access_granted_email(users_group.id)
end
+ def project_was_moved(project)
+ recipients = project.team.members
+ recipients = reject_muted_users(recipients, project)
+
+ recipients.each do |recipient|
+ mailer.project_was_moved_email(project.id, recipient.id)
+ end
+ end
+
protected
# Get project users with WATCH notification level
@@ -186,10 +202,10 @@ class NotificationService
users.reject do |user|
next user.notification.disabled? unless project
- tm = project.users_projects.find_by_user_id(user.id)
+ tm = project.users_projects.find_by(user_id: user.id)
if !tm && project.group
- tm = project.group.users_groups.find_by_user_id(user.id)
+ tm = project.group.users_groups.find_by(user_id: user.id)
end
# reject users who globally disabled notification and has no membership
@@ -241,7 +257,7 @@ class NotificationService
recipients.delete(current_user)
recipients.each do |recipient|
- mailer.send(method, recipient.id, target.id, target.assignee_id_was)
+ mailer.send(method, recipient.id, target.id, target.assignee_id_was, current_user.id)
end
end
diff --git a/app/contexts/projects/create_context.rb b/app/services/projects/create_service.rb
index 2acb9fbfe14..ba131d8ffbe 100644
--- a/app/contexts/projects/create_context.rb
+++ b/app/services/projects/create_service.rb
@@ -1,5 +1,5 @@
module Projects
- class CreateContext < BaseContext
+ class CreateService < BaseService
def initialize(user, params)
@current_user, @params = user, params.dup
end
@@ -73,7 +73,7 @@ module Projects
end
def allowed_namespace?(user, namespace_id)
- namespace = Namespace.find_by_id(namespace_id)
+ namespace = Namespace.find_by(id: namespace_id)
current_user.can?(:manage_namespace, namespace)
end
end
diff --git a/app/contexts/projects/fork_context.rb b/app/services/projects/fork_service.rb
index fbc67220d5d..2f1c7b18aa0 100644
--- a/app/contexts/projects/fork_context.rb
+++ b/app/services/projects/fork_service.rb
@@ -1,5 +1,5 @@
module Projects
- class ForkContext < BaseContext
+ class ForkService < BaseService
include Gitlab::ShellAdapter
def initialize(project, user)
diff --git a/app/contexts/projects/transfer_context.rb b/app/services/projects/transfer_service.rb
index 3011984e3f8..f8e27f6f1c6 100644
--- a/app/contexts/projects/transfer_context.rb
+++ b/app/services/projects/transfer_service.rb
@@ -1,5 +1,5 @@
module Projects
- class TransferContext < BaseContext
+ class TransferService < BaseService
def execute(role = :default)
namespace_id = params[:project].delete(:namespace_id)
allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
diff --git a/app/contexts/projects/update_context.rb b/app/services/projects/update_service.rb
index 94de10de0f6..d9d371da5c4 100644
--- a/app/contexts/projects/update_context.rb
+++ b/app/services/projects/update_service.rb
@@ -1,5 +1,5 @@
module Projects
- class UpdateContext < BaseContext
+ class UpdateService < BaseService
def execute(role = :default)
params[:project].delete(:namespace_id)
# check that user is allowed to set specified visibility_level
diff --git a/app/contexts/search/global_context.rb b/app/services/search/global_service.rb
index 74e746018e6..09c7cb25dd5 100644
--- a/app/contexts/search/global_context.rb
+++ b/app/services/search/global_service.rb
@@ -1,5 +1,5 @@
module Search
- class GlobalContext
+ class GlobalService
attr_accessor :current_user, :params
def initialize(user, params)
@@ -11,12 +11,8 @@ module Search
query = Shellwords.shellescape(query) if query.present?
return result unless query.present?
- authorized_projects_ids = []
- authorized_projects_ids += current_user.authorized_projects.pluck(:id) if current_user
- authorized_projects_ids += Project.public_or_internal_only(current_user).pluck(:id)
-
- group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
- projects = Project.where(id: authorized_projects_ids)
+ group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
+ projects = Project.accessible_to(current_user)
projects = projects.where(namespace_id: group.id) if group
projects = projects.search(query)
project_ids = projects.pluck(:id)
diff --git a/app/contexts/search/project_context.rb b/app/services/search/project_service.rb
index 690652b2cdb..3ebaafc752c 100644
--- a/app/contexts/search/project_context.rb
+++ b/app/services/search/project_service.rb
@@ -1,5 +1,5 @@
module Search
- class ProjectContext
+ class ProjectService
attr_accessor :project, :current_user, :params
def initialize(project, user, params)
diff --git a/app/services/system_hooks_service.rb b/app/services/system_hooks_service.rb
index de4fa9b79e7..4969198b8c2 100644
--- a/app/services/system_hooks_service.rb
+++ b/app/services/system_hooks_service.rb
@@ -1,21 +1,21 @@
class SystemHooksService
- def self.execute_hooks_for(model, event)
+ def execute_hooks_for(model, event)
execute_hooks(build_event_data(model, event))
end
private
- def self.execute_hooks(data)
+ def execute_hooks(data)
SystemHook.all.each do |sh|
async_execute_hook sh, data
end
end
- def self.async_execute_hook(hook, data)
+ def async_execute_hook(hook, data)
Sidekiq::Client.enqueue(SystemHookWorker, hook.id, data)
end
- def self.build_event_data(model, event)
+ def build_event_data(model, event)
data = {
event_name: build_event_name(model, event),
created_at: model.created_at
@@ -51,7 +51,7 @@ class SystemHooksService
end
end
- def self.build_event_name(model, event)
+ def build_event_name(model, event)
case model
when UsersProject
return "user_add_to_team" if event == :create
diff --git a/app/services/test_hook_service.rb b/app/services/test_hook_service.rb
new file mode 100644
index 00000000000..17d86a7a274
--- /dev/null
+++ b/app/services/test_hook_service.rb
@@ -0,0 +1,6 @@
+class TestHookService
+ def execute(hook, current_user)
+ data = GitPushService.new.sample_data(hook.project, current_user)
+ hook.execute(data)
+ end
+end
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index dd663945ea9..bbd60bc6224 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -3,136 +3,137 @@
%p.light
You can manage projects, users and other GitLab data from here.
%hr
-.admin_dash.row
- .col-sm-4
- .light-well
- %h4 Projects
- .data
- = link_to admin_projects_path do
- %h1= Project.count
- %hr
- = link_to 'New Project', new_project_path, class: "btn btn-new"
- .col-sm-4
- .light-well
- %h4 Users
- .data
- = link_to admin_users_path do
- %h1= User.count
- %hr
- = link_to 'New User', new_admin_user_path, class: "btn btn-new"
- .col-sm-4
- .light-well
- %h4 Groups
- .data
- = link_to admin_groups_path do
- %h1= Group.count
- %hr
- = link_to 'New Group', new_admin_group_path, class: "btn btn-new"
+.admin-dashboard
+ .row
+ .col-sm-4
+ .light-well
+ %h4 Projects
+ .data
+ = link_to admin_projects_path do
+ %h1= Project.count
+ %hr
+ = link_to 'New Project', new_project_path, class: "btn btn-new"
+ .col-sm-4
+ .light-well
+ %h4 Users
+ .data
+ = link_to admin_users_path do
+ %h1= User.count
+ %hr
+ = link_to 'New User', new_admin_user_path, class: "btn btn-new"
+ .col-sm-4
+ .light-well
+ %h4 Groups
+ .data
+ = link_to admin_groups_path do
+ %h1= Group.count
+ %hr
+ = link_to 'New Group', new_admin_group_path, class: "btn btn-new"
-.row.prepend-top-10
- .col-md-4
- %h4 Latest projects
- %hr
- - @projects.each do |project|
+ .row.prepend-top-10
+ .col-md-4
+ %h4 Latest projects
+ %hr
+ - @projects.each do |project|
+ %p
+ = link_to project.name_with_namespace, [:admin, project], class: 'str-truncated'
+ %span.light.pull-right
+ #{time_ago_with_tooltip(project.created_at)}
+
+ .col-md-4
+ %h4 Latest users
+ %hr
+ - @users.each do |user|
+ %p
+ = link_to [:admin, user], class: 'str-truncated' do
+ = user.name
+ %span.light.pull-right
+ #{time_ago_with_tooltip(user.created_at)}
+
+ .col-md-4
+ %h4 Latest groups
+ %hr
+ - @groups.each do |group|
+ %p
+ = link_to [:admin, group], class: 'str-truncated' do
+ = group.name
+ %span.light.pull-right
+ #{time_ago_with_tooltip(group.created_at)}
+
+ %br
+ .row
+ .col-md-4
+ %h4 Stats
+ %hr
%p
- = link_to project.name_with_namespace, [:admin, project]
+ Forks
%span.light.pull-right
- #{time_ago_with_tooltip(project.created_at)}
-
- .col-md-4
- %h4 Latest users
- %hr
- - @users.each do |user|
+ = ForkedProjectLink.count
%p
- = link_to [:admin, user] do
- = user.name
+ Issues
%span.light.pull-right
- #{time_ago_with_tooltip(user.created_at)}
-
- .col-md-4
- %h4 Latest groups
- %hr
- - @groups.each do |group|
+ = Issue.count
%p
- = link_to [:admin, group] do
- = group.name
+ Merge Requests
%span.light.pull-right
- #{time_ago_with_tooltip(group.created_at)}
-
-%br
-.row
- .col-md-4
- %h4 Stats
- %hr
- %p
- Forks
- %span.light.pull-right
- = ForkedProjectLink.count
- %p
- Issues
- %span.light.pull-right
- = Issue.count
- %p
- Merge Requests
- %span.light.pull-right
- = MergeRequest.count
- %p
- Notes
- %span.light.pull-right
- = Note.count
- %p
- Snippets
- %span.light.pull-right
- = Snippet.count
- %p
- SSH Keys
- %span.light.pull-right
- = Key.count
- %p
- Milestones
- %span.light.pull-right
- = Milestone.count
- .col-md-4
- %h4
- Features
- %hr
- %p
- Sign up
- %span.light.pull-right
- = boolean_to_icon gitlab_config.signup_enabled
- %p
- LDAP
- %span.light.pull-right
- = boolean_to_icon Gitlab.config.ldap.enabled
- %p
- Gravatar
- %span.light.pull-right
- = boolean_to_icon Gitlab.config.gravatar.enabled
- %p
- OmniAuth
- %span.light.pull-right
- = boolean_to_icon Gitlab.config.omniauth.enabled
- .col-md-4
- %h4 Components
- %hr
- %p
- GitLab
- %span.pull-right
- = Gitlab::VERSION
- %p
- GitLab Shell
- %span.pull-right
- = Gitlab::Shell.new.version
- %p
- GitLab API
- %span.pull-right
- = API::API::version
- %p
- Ruby
- %span.pull-right
- #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
+ = MergeRequest.count
+ %p
+ Notes
+ %span.light.pull-right
+ = Note.count
+ %p
+ Snippets
+ %span.light.pull-right
+ = Snippet.count
+ %p
+ SSH Keys
+ %span.light.pull-right
+ = Key.count
+ %p
+ Milestones
+ %span.light.pull-right
+ = Milestone.count
+ .col-md-4
+ %h4
+ Features
+ %hr
+ %p
+ Sign up
+ %span.light.pull-right
+ = boolean_to_icon gitlab_config.signup_enabled
+ %p
+ LDAP
+ %span.light.pull-right
+ = boolean_to_icon Gitlab.config.ldap.enabled
+ %p
+ Gravatar
+ %span.light.pull-right
+ = boolean_to_icon Gitlab.config.gravatar.enabled
+ %p
+ OmniAuth
+ %span.light.pull-right
+ = boolean_to_icon Gitlab.config.omniauth.enabled
+ .col-md-4
+ %h4 Components
+ %hr
+ %p
+ GitLab
+ %span.pull-right
+ = Gitlab::VERSION
+ %p
+ GitLab Shell
+ %span.pull-right
+ = Gitlab::Shell.new.version
+ %p
+ GitLab API
+ %span.pull-right
+ = API::API::version
+ %p
+ Ruby
+ %span.pull-right
+ #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
- %p
- Rails
- %span.pull-right
- #{Rails::VERSION::STRING}
+ %p
+ Rails
+ %span.pull-right
+ #{Rails::VERSION::STRING}
diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml
index 7a373ee586c..9a0d5967927 100644
--- a/app/views/admin/groups/index.html.haml
+++ b/app/views/admin/groups/index.html.haml
@@ -1,11 +1,12 @@
%h3.page-title
Groups (#{@groups.total_count})
- %small
- allows you to keep projects organized.
- Use groups for uniting related projects.
-
= link_to 'New Group', new_admin_group_path, class: "btn btn-new pull-right"
-%br
+
+%p.light
+ Group allows you to keep projects organized.
+ Use groups for uniting related projects.
+
+%hr
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
.form-group
= text_field_tag :name, params[:name], class: "form-control input-mn-300"
@@ -23,24 +24,18 @@
%h4
= link_to [:admin, group] do
+ %i.icon-folder-close
= group.name
&rarr;
%span.monospace
- %i.icon-folder-close
%strong #{group.path}/
-
- .clearfix.light.append-bottom-10
- %span
- %b Members:
- %span.badge= group.members.size
- \|
- %span
- %b Projects:
- %span.badge= group.projects.count
-
.clearfix
%p
= truncate group.description, length: 150
+ .clearfix
+ %p.light
+ #{pluralize(group.members.size, 'member')}, #{pluralize(group.projects.count, 'project')}
+
= paginate @groups, theme: "gitlab"
diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml
index 940a539d5e1..5f19d21f106 100644
--- a/app/views/admin/projects/index.html.haml
+++ b/app/views/admin/projects/index.html.haml
@@ -53,5 +53,5 @@
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Destroy', [project], data: { confirm: remove_project_message(project) }, method: :delete, class: "btn btn-small btn-remove"
- if @projects.blank?
- %p.nothing_here_message 0 projects matches
+ .nothing-here-block 0 projects matches
= paginate @projects, theme: "gitlab"
diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml
index 98bf65bc420..881a043f36f 100644
--- a/app/views/admin/users/_form.html.haml
+++ b/app/views/admin/users/_form.html.haml
@@ -80,6 +80,9 @@
.form-group
= f.label :twitter, class: 'control-label'
.col-sm-10= f.text_field :twitter, class: 'form-control'
+ .form-group
+ = f.label :website_url, 'Website', class: 'control-label'
+ .col-sm-10= f.text_field :website_url, class: 'form-control'
.form-actions
- if @user.new_record?
diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml
index 1fa6fdfaff1..0b3934a712d 100644
--- a/app/views/admin/users/index.html.haml
+++ b/app/views/admin/users/index.html.haml
@@ -1,12 +1,6 @@
.row
.col-md-3
.admin-filter
- = form_tag admin_users_path, method: :get, class: 'form-inline' do
- .append-bottom-10
- .form-group
- = search_field_tag :name, params[:name], placeholder: 'Name, email or username', class: 'form-control'
- = button_tag type: 'submit', class: 'btn btn-primary' do
- %i.icon-search
%ul.nav.nav-pills.nav-stacked
%li{class: "#{'active' unless params[:filter]}"}
= link_to admin_users_path do
@@ -25,6 +19,12 @@
Without projects
%small.pull-right= User.without_projects.count
%hr
+ = form_tag admin_users_path, method: :get, class: 'form-inline' do
+ .form-group
+ = search_field_tag :name, params[:name], placeholder: 'Name, email or username', class: 'form-control'
+ = button_tag type: 'submit', class: 'btn btn-primary' do
+ %i.icon-search
+ %hr
= link_to 'Reset', admin_users_path, class: "btn btn-cancel"
.col-md-9
diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index bd276f22221..d66119e2712 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -7,7 +7,7 @@
%span.cred (Admin)
.pull-right
- = link_to edit_admin_user_path(@user), class: "btn grouped" do
+ = link_to edit_admin_user_path(@user), class: "btn btn-grouped" do
%i.icon-edit
Edit
%hr
@@ -78,7 +78,6 @@
- if @user.blocked?
.alert.alert-info
%h4 This user is blocked
- %br
%p Blocking user has the following effects:
%ul
%li User will not be able to login
@@ -86,11 +85,11 @@
%li User will be removed from joined projects and groups
%li Personal projects will be left
%li Owned groups will be left
+ %br
= link_to 'Unblock user', unblock_admin_user_path(@user), method: :put, class: "btn btn-new", data: { confirm: 'Are you sure?' }
- else
- .alert
+ .alert.alert-warning
%h4 Block this user
- %br
%p Blocking user has the following effects:
%ul
%li User will not be able to login
@@ -98,12 +97,12 @@
%li User will be removed from joined projects and groups
%li Personal projects will be left
%li Owned groups will be left
+ %br
= link_to 'Block user', block_admin_user_path(@user), data: { confirm: 'USER WILL BE BLOCKED! Are you sure?' }, method: :put, class: "btn btn-remove"
.alert.alert-danger
%h4
Remove user
- %br
%p Deleting a user has the following effects:
%ul
%li All user content like authored issues, snippets, comments will be removed
@@ -114,6 +113,7 @@
%li
Next groups with all content will be removed:
%strong #{@user.solo_owned_groups.map(&:name).join(', ')}
+ %br
= link_to 'Remove user', [:admin, @user], data: { confirm: "USER #{@user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "btn btn-remove"
.col-md-6
@@ -150,5 +150,3 @@
- if tm.respond_to? :project
= link_to project_team_member_path(project, @user), data: { confirm: remove_from_project_team_message(project, @user) }, remote: true, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from project' do
%i.icon-remove
-
-
diff --git a/app/views/dashboard/_activities.html.haml b/app/views/dashboard/_activities.html.haml
index 89117726317..fdf96dd6f56 100644
--- a/app/views/dashboard/_activities.html.haml
+++ b/app/views/dashboard/_activities.html.haml
@@ -4,5 +4,6 @@
- if @events.any?
.content_list
- else
- %p.nothing_here_message Projects activity will be displayed here
-.loading.hide
+ .nothing-here-block Projects activity will be displayed here
+
+= spinner
diff --git a/app/views/dashboard/_groups.html.haml b/app/views/dashboard/_groups.html.haml
index d6937ca4813..a6bc946bedc 100644
--- a/app/views/dashboard/_groups.html.haml
+++ b/app/views/dashboard/_groups.html.haml
@@ -10,10 +10,11 @@
- groups.each do |group|
%li.group-row
= link_to group_path(id: group.path), class: dom_class(group) do
+ = image_tag group_icon(group.path), class: "avatar s24"
%span.group-name.filter-title
= truncate(group.name, length: 35)
%span.arrow
%i.icon-angle-right
- if groups.blank?
%li
- %h3.nothing_here_message You have no groups yet.
+ .nothing-here-block You have no groups yet.
diff --git a/app/views/dashboard/_projects.html.haml b/app/views/dashboard/_projects.html.haml
index 8313cc07b5e..44c7a4b8c80 100644
--- a/app/views/dashboard/_projects.html.haml
+++ b/app/views/dashboard/_projects.html.haml
@@ -14,7 +14,7 @@
- if projects.blank?
%li
- %h3.nothing_here_message There are no projects here.
+ .nothing-here-block There are no projects here.
- if @projects_count > @projects_limit
%li.bottom
%span.light
diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml
index 19bd4e7bd54..af627588ad9 100644..100755
--- a/app/views/dashboard/issues.html.haml
+++ b/app/views/dashboard/issues.html.haml
@@ -3,7 +3,7 @@
%span.pull-right #{@issues.total_count} issues
%p.light
- List all issues from all project's you have access to.
+ List all issues from all projects you have access to.
%hr
.row
diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml
index b487a4d6666..550a93e178c 100644..100755
--- a/app/views/dashboard/merge_requests.html.haml
+++ b/app/views/dashboard/merge_requests.html.haml
@@ -4,7 +4,7 @@
%p.light
- List all merge requests from all project's you have access to.
+ List all merge requests from all projects you have access to.
%hr
.row
.col-md-3
diff --git a/app/views/dashboard/projects.html.haml b/app/views/dashboard/projects.html.haml
index 8feef97c732..e1c9a5941e9 100644
--- a/app/views/dashboard/projects.html.haml
+++ b/app/views/dashboard/projects.html.haml
@@ -67,7 +67,7 @@
- if @projects.blank?
%li
- %h3.nothing_here_message There are no projects here.
+ .nothing-here-block There are no projects here.
.bottom
= paginate @projects, theme: "gitlab"
diff --git a/app/views/dashboard/show.html.haml b/app/views/dashboard/show.html.haml
index c4018d4b6d8..e5b7fbf097e 100644
--- a/app/views/dashboard/show.html.haml
+++ b/app/views/dashboard/show.html.haml
@@ -2,7 +2,7 @@
.dashboard.row
.activities.col-md-8
= render 'activities'
- .side.col-md-4.hidden-sm
+ .side.col-md-4.hidden-sm.hidden-xs
= render 'sidebar'
- else
diff --git a/app/views/devise/confirmations/new.html.haml b/app/views/devise/confirmations/new.html.haml
index dd63a232fe2..bf634d9de60 100644..100755
--- a/app/views/devise/confirmations/new.html.haml
+++ b/app/views/devise/confirmations/new.html.haml
@@ -3,7 +3,8 @@
= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
.devise-errors
= devise_error_messages!
- = f.email_field :email, placeholder: 'Email', class: "form-control", required: true
+ .clearfix.append-bottom-20
+ = f.email_field :email, placeholder: 'Email', class: "form-control", required: true
.clearfix.append-bottom-10
= f.submit "Resend confirmation instructions", class: 'btn btn-success'
%hr
diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml
index a14ef2995c8..040821ca32a 100644..100755
--- a/app/views/devise/passwords/new.html.haml
+++ b/app/views/devise/passwords/new.html.haml
@@ -2,7 +2,8 @@
%h3.page-title Reset password
.devise-errors
= devise_error_messages!
- = f.email_field :email, placeholder: "Email", class: "form-control", required: true
+ .clearfix.append-bottom-20
+ = f.email_field :email, placeholder: "Email", class: "form-control", required: true
.clearfix.append-bottom-10
= f.submit "Reset password", class: "btn-primary btn"
%hr
diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml
index 938f61d2093..bb87d9ecb4a 100644
--- a/app/views/devise/sessions/new.html.haml
+++ b/app/views/devise/sessions/new.html.haml
@@ -1,7 +1,7 @@
.login-box
%h3.page-title Sign in
- if ldap_enabled?
- %ul.nav.nav-tabs.append-bottom-20
+ %ul.nav.nav-tabs
%li.active
= link_to 'LDAP', '#tab-ldap', 'data-toggle' => 'tab'
%li
diff --git a/app/views/groups/_filter.html.haml b/app/views/groups/_filter.html.haml
index 9fbc6c190cc..fe8c0669c0e 100644
--- a/app/views/groups/_filter.html.haml
+++ b/app/views/groups/_filter.html.haml
@@ -21,7 +21,7 @@
= project.name_with_namespace
%small.pull-right= entities_per_project(project, entity)
- if @projects.blank?
- %p.nothing_here_message This group has no projects yet
+ .nothing-here-block This group has no projects yet
%fieldset
%hr
diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml
index 5801139a9f2..3ab9276c541 100644
--- a/app/views/groups/_new_group_member.html.haml
+++ b/app/views/groups/_new_group_member.html.haml
@@ -1,15 +1,8 @@
= form_for @users_group, url: group_users_groups_path(@group), html: { class: 'form-horizontal users-group-form' } do |f|
- %h4.append-bottom-20
- New member(s) for
- %strong #{@group.name}
- group
-
- %p 1. Choose users you want in the group
.form-group
= f.label :user_ids, "People", class: 'control-label'
.col-sm-10= users_select_tag(:user_ids, multiple: true, class: 'input-large')
- %p 2. Set access level for them
.form-group
= f.label :group_access, "Group Access", class: 'control-label'
.col-sm-10= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select select2"
diff --git a/app/views/groups/_projects.html.haml b/app/views/groups/_projects.html.haml
index 029d6cb0efa..bd4e3156af0 100644
--- a/app/views/groups/_projects.html.haml
+++ b/app/views/groups/_projects.html.haml
@@ -8,7 +8,7 @@
New project
%ul.well-list
- if projects.blank?
- %p.nothing_here_message This groups has no projects yet
+ .nothing-here-block This groups has no projects yet
- projects.each do |project|
%li.project-row
= link_to project_path(project), class: dom_class(project) do
diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml
index 77734815b8a..9308bd8124e 100644
--- a/app/views/groups/edit.html.haml
+++ b/app/views/groups/edit.html.haml
@@ -4,13 +4,15 @@
%li.active
= link_to '#tab-edit', 'data-toggle' => 'tab' do
%i.icon-edit
- Edit Group
+ Group
%li
= link_to '#tab-projects', 'data-toggle' => 'tab' do
%i.icon-folder-close
Projects
%li
- = link_to 'Remove', '#tab-remove', 'data-toggle' => 'tab'
+ = link_to '#tab-remove', 'data-toggle' => 'tab' do
+ %i.icon-remove-sign
+ Remove
.col-md-10
.tab-content
@@ -20,7 +22,7 @@
%strong= @group.name
group settings:
%div.form-holder
- = form_for @group, html: { class: "form-horizontal" } do |f|
+ = form_for @group, html: { multipart: true, class: "form-horizontal" }, authenticity_token: true do |f|
- if @group.errors.any?
.alert.alert-danger
%span= @group.errors.full_messages.first
@@ -35,6 +37,26 @@
.col-sm-10
= f.text_area :description, maxlength: 250, class: "form-control js-gfm-input", rows: 4
+ .form-group
+ .col-sm-2
+ .col-sm-10
+ = image_tag group_icon(@group.to_param), alt: '', class: 'avatar s160'
+ %p.light
+ - if @group.avatar?
+ You can change your group avatar here
+ - else
+ You can upload an group avatar here
+ %a.choose-btn.btn.btn-small.js-choose-group-avatar-button
+ %i.icon-paper-clip
+ %span Choose File ...
+ &nbsp;
+ %span.file_name.js-avatar-filename File name...
+ = f.file_field :avatar, class: "js-group-avatar-input hidden"
+ .light The maximum file size allowed is 100KB.
+ - if @group.avatar?
+ %hr
+ = link_to 'Remove avatar', group_avatar_path(@group.to_param), data: { confirm: "Group avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-small remove-avatar"
+
.form-actions
= f.submit 'Save group', class: "btn btn-save"
@@ -58,7 +80,7 @@
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Remove', project, data: { confirm: remove_project_message(project)}, method: :delete, class: "btn btn-small btn-remove"
- if @group.projects.blank?
- %p.nothing_here_message This group has no projects yet
+ .nothing-here-block This group has no projects yet
.tab-pane#tab-remove
.ui-box.ui-box-danger
diff --git a/app/views/groups/issues.html.haml b/app/views/groups/issues.html.haml
index e24df310910..4b11d91dc98 100644
--- a/app/views/groups/issues.html.haml
+++ b/app/views/groups/issues.html.haml
@@ -5,7 +5,9 @@
%p.light
Only issues from
%strong #{@group.name}
- group are listed here. To see all issues you should visit #{link_to 'dashboard', issues_dashboard_path} page.
+ group are listed here.
+ - if current_user
+ To see all issues you should visit #{link_to 'dashboard', issues_dashboard_path} page.
%hr
.row
diff --git a/app/views/groups/members.html.haml b/app/views/groups/members.html.haml
index 124560e4786..0c972622f88 100644
--- a/app/views/groups/members.html.haml
+++ b/app/views/groups/members.html.haml
@@ -1,20 +1,41 @@
+- show_roles = should_user_see_group_roles?(current_user, @group)
%h3.page-title
Group members
-%p.light
- Members of group have access to all group projects.
- Read more about permissions
- %strong= link_to "here", help_permissions_path, class: "vlink"
+- if show_roles
+ %p.light
+ Members of group have access to all group projects.
+ Read more about permissions
+ %strong= link_to "here", help_permissions_path, class: "vlink"
%hr
-- can_manage_group = current_user.can? :manage_group, @group
-.ui-box
+
+.clearfix
+ = form_tag members_group_path(@group), method: :get, class: 'form-inline member-search-form' do
+ .form-group
+ = search_field_tag :search, params[:search], { placeholder: 'Find member by name', class: 'form-control search-text-input input-mn-300' }
+ = submit_tag 'Search', class: 'btn'
+
+ - if current_user && current_user.can?(:manage_group, @group)
+ .pull-right
+ = link_to '#', class: 'btn btn-new js-toggle-visibility-link' do
+ Add members
+ %i.icon-chevron-down
+
+ .js-toggle-visibility-container.hide.new-group-member-holder
+ = render "new_group_member"
+
+.ui-box.prepend-top-20
.title
%strong #{@group.name}
group members
%small
- (#{@members.count})
+ (#{@members.total_count})
%ul.well-list
- @members.each do |member|
- = render 'users_groups/users_group', member: member, show_controls: can_manage_group
-- if can_manage_group
- = render "new_group_member"
+ = render 'users_groups/users_group', member: member, show_roles: show_roles, show_controls: true
+= paginate @members, theme: 'gitlab'
+
+:coffeescript
+ $('form.member-search-form').on 'submit', (event) ->
+ event.preventDefault()
+ Turbolinks.visit @.action + '?' + $(@).serialize()
diff --git a/app/views/groups/merge_requests.html.haml b/app/views/groups/merge_requests.html.haml
index eaf85bbdbc8..209130ec444 100644
--- a/app/views/groups/merge_requests.html.haml
+++ b/app/views/groups/merge_requests.html.haml
@@ -5,7 +5,9 @@
%p.light
Only merge requests from
%strong #{@group.name}
- group are listed here. To see all merge requests you should visit #{link_to 'dashboard', merge_requests_dashboard_path} page.
+ group are listed here.
+ - if current_user
+ To see all merge requests you should visit #{link_to 'dashboard', merge_requests_dashboard_path} page.
%hr
.row
.col-md-3
diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml
index 5332d383c4c..0343670c203 100644
--- a/app/views/groups/show.html.haml
+++ b/app/views/groups/show.html.haml
@@ -1,27 +1,33 @@
.dashboard
.activities.col-md-8.hidden-sm
- = render "events/event_last_push", event: @last_push
- = link_to dashboard_path, class: 'btn btn-tiny' do
- &larr; To dashboard
- &nbsp;
+ - if current_user
+ = render "events/event_last_push", event: @last_push
+ = link_to dashboard_path, class: 'btn btn-tiny' do
+ &larr; To dashboard
+ &nbsp;
%span.cgray You will only see events from projects in this group
%hr
= render 'shared/event_filter'
- if @events.any?
.content_list
- else
- %p.nothing_here_message Project activity will be displayed here
- .loading.hide
+ .nothing-here-block Project activity will be displayed here
+ = spinner
.side.col-md-4
- - if @group.description.present?
- .description-block
- = @group.description
+ .light-well.append-bottom-20
+ = image_tag group_icon(@group.path), class: "avatar s90"
+ .clearfix.light
+ %h3.page-title
+ = @group.name
+ - if @group.description.present?
+ %p= @group.description
= render "projects", projects: @projects
- .prepend-top-20
- = link_to group_path(@group, { format: :atom, private_token: current_user.private_token }), title: "Feed" do
- %strong
- %i.icon-rss
- News Feed
+ - if current_user
+ .prepend-top-20
+ = link_to group_path(@group, { format: :atom, private_token: current_user.private_token }), title: "Feed" do
+ %strong
+ %i.icon-rss
+ News Feed
%hr
= render 'shared/promo'
diff --git a/app/views/help/_api_layout.html.haml b/app/views/help/_api_layout.html.haml
index c211b658410..af723f906d9 100644
--- a/app/views/help/_api_layout.html.haml
+++ b/app/views/help/_api_layout.html.haml
@@ -5,7 +5,7 @@
%i.icon-angle-left
Back to help
%ul.nav.nav-pills.nav-stacked
- - %w(README projects project_snippets repositories deploy_keys users groups session issues milestones merge_requests notes system_hooks).each do |file|
+ - %w(README projects project_snippets repositories repository_files commits deploy_keys users groups session issues milestones merge_requests notes system_hooks).each do |file|
%li{class: file == @category ? 'active' : nil}
= link_to file.titleize, help_api_file_path(file)
diff --git a/app/views/help/_layout.html.haml b/app/views/help/_layout.html.haml
index fc0ac277a48..201d63ca243 100644
--- a/app/views/help/_layout.html.haml
+++ b/app/views/help/_layout.html.haml
@@ -1,5 +1,5 @@
.row
- .col-md-3{:"data-spy" => 'affix'}
+ .col-md-3
%h3.page-title Help
%ul.nav.nav-pills.nav-stacked
- links = {:"Workflow" => help_workflow_path, :"SSH Keys" => help_ssh_path, :"GitLab Markdown" => help_markdown_path, :"Permissions" => help_permissions_path, :"API" => help_api_path, :"Web Hooks" => help_web_hooks_path, :"Rake Tasks" => help_raketasks_path, :"System Hooks" => help_system_hooks_path, :"Public Access" => help_public_access_path, :"Security" => help_security_path}
@@ -7,5 +7,6 @@
%li{class: current_page?(path) ? 'active' : nil}
= link_to title, path
- .col-md-9.pull-right
- = yield
+ .col-md-9
+ .wiki
+ = yield
diff --git a/app/views/help/index.html.haml b/app/views/help/index.html.haml
index f1cb723ebac..c82acd917d0 100644
--- a/app/views/help/index.html.haml
+++ b/app/views/help/index.html.haml
@@ -6,9 +6,15 @@
%p.slead
GitLab is open source software to collaborate on code.
%br
- Create projects and repositories, manage access and do code reviews.
+ Manage git repositories with fine grained access controls that keep your code secure.
%br
- Read more about GitLab at #{link_to "gitlab.org", "http://gitlab.org/", target: "_blank"}.
+ Perform code reviews and enhance collaboration with merge requests.
+ %br
+ Each project can also have an issue tracker and a wiki.
+ %br
+ Used by more than 50,000 organizations, GitLab is the most popular solution to manage git repositories on-premises.
+ %br
+ Read more about GitLab at #{link_to "www.gitlab.com", "https://www.gitlab.com/", target: "_blank"}.
.row
.col-md-4
diff --git a/app/views/help/permissions.html.haml b/app/views/help/permissions.html.haml
index 15e3bf3a135..5d3ee4526fe 100644
--- a/app/views/help/permissions.html.haml
+++ b/app/views/help/permissions.html.haml
@@ -1,212 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title Permissions
- %p.light Users have different abilities depending on the access level they have in particular group or project.
- %p.light If a user is both in a project group and in the project itself the highest permission level is used.
- %p.light If a user is a GitLab administrator they receive all permissions.
- %hr
+ %h3.page-title Permissions
- %h4 Project:
- %table.table
- %thead
- %tr
- %th Action
- %th Guest
- %th Reporter
- %th Developer
- %th Master
- %th Owner
- %tbody
- %tr
- %td Create new issue
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Leave comments
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Write on project wall
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Pull project code
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Download project
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Create code snippets
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Create new merge request
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Create new branches
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Push to non-protected branches
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Remove non-protected branches
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Add tags
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Write a wiki
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Add new team members
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Push to protected branches
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Remove protected branches
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Edit project
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Add Deploy Keys to project
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Configure Project Hooks
- %td
- %td
- %td
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Switch visibility level
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
- %tr
- %td Transfer project to another namespace
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
- %tr
- %td Remove project
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
-
- %h4 Group
- %table.table
- %thead
- %tr
- %th Action
- %th Guest
- %th Reporter
- %th Developer
- %th Master
- %th Owner
- %tbody
- %tr
- %td Browse group
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %td.permission-x &#10003;
- %tr
- %td Edit group
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
- %tr
- %td Create project in group
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
- %tr
- %td Manage group members
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
- %tr
- %td Remove group
- %td
- %td
- %td
- %td
- %td.permission-x &#10003;
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "permissions", "permissions.md"))
diff --git a/app/views/help/public_access.html.haml b/app/views/help/public_access.html.haml
index ba2df8c3553..d1ec3f5d5c1 100644
--- a/app/views/help/public_access.html.haml
+++ b/app/views/help/public_access.html.haml
@@ -1,46 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title Public Access
+ %h3.page-title Public Access
- %p.slead
- GitLab allows you to open selected projects to be accessed
- %strong publicly
- or
- %strong internally
- \.
- %br
- Projects with either of these visibility levels will be listed in the #{link_to "public access directory", public_root_path}.
- %br
- Internal projects will only be available to authenticated users.
-
- .clearfix
- .dashboard-intro-icon
- = public_icon
- %h4
- Public projects
- %p
- Public project can be cloned
- %strong without any
- authentication.
- %br
- It will also be listed on the #{link_to "public access directory", public_root_path}.
- %br
- %strong Any logged in user
- will have #{link_to "Guest", help_permissions_path} permissions on the repository.
-
- .clearfix
- .dashboard-intro-icon
- = internal_icon
- %h4
- Internal projects
- %p
- Internal project can be cloned by any logged in user.
- %br
- It will also be listed on the #{link_to "public access directory", public_root_path} for logged in users.
- %br
- Any logged in user will have #{link_to "Guest", help_permissions_path} permissions on the repository.
-
- %h4 How to change project visibility
- %ol
- %li Go to your project dashboard
- %li Click on the "Edit" tab
- %li Change "Visibility Level"
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "public_access", "public_access.md"))
diff --git a/app/views/help/ssh.html.haml b/app/views/help/ssh.html.haml
index 773e490ef80..8ae1ed1ab6e 100644
--- a/app/views/help/ssh.html.haml
+++ b/app/views/help/ssh.html.haml
@@ -1,17 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title SSH Keys
+ %h3.page-title SSH Keys
- %p.slead
- SSH key allows you to establish a secure connection between your computer and GitLab
-
- %p.slead
- To generate a new SSH key just open your terminal and use code below. Press enter to accept the defaults when generating the key.
-
- %pre.dark
- ssh-keygen -t rsa -C "#{current_user.email}"
-
- %p.slead
- Next just use code below to dump your public key and add to GitLab SSH Keys
-
- %pre.dark
- cat ~/.ssh/id_rsa.pub
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "ssh", "ssh.md"))
diff --git a/app/views/help/system_hooks.html.haml b/app/views/help/system_hooks.html.haml
index 3e401a6e19f..e24f566121d 100644
--- a/app/views/help/system_hooks.html.haml
+++ b/app/views/help/system_hooks.html.haml
@@ -1,11 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title System hooks
+ %h3.page-title System hooks
- %p.slead
- Your GitLab instance can perform HTTP POST requests on the following events: create_project, delete_project, create_user, delete_user, change_team_member.
- %br
- %br
- System Hooks can be used, e.g. for logging or changing information in a LDAP server.
- %br
- %h5 Hooks request example:
- = render "admin/hooks/data_ex"
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "system_hooks", "system_hooks.md"))
diff --git a/app/views/help/web_hooks.html.haml b/app/views/help/web_hooks.html.haml
index 7bde7fcc3d0..9e2b54ab6ec 100644
--- a/app/views/help/web_hooks.html.haml
+++ b/app/views/help/web_hooks.html.haml
@@ -1,115 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title Project web hooks
- %p.light
- Project web hooks allow you to trigger url if new code is pushed or new issue is created
- %hr
+ %h3.page-title Project web hooks
- %p.slead
- You can configure web hook to listen for specific events like pushes, issues, merge requests.
- %br
- GitLab will send POST request with data to web hook url.
- %br
- Web Hooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
- %hr
-
- %h4 Push events
- %p.light
- Triggered when you push to the repository except pushing tags.
- %br
- Request body:
- = highlight_js do
- :erb
- {
- "before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
- "after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
- "ref": "refs/heads/master",
- "user_id": 4,
- "user_name": "John Smith",
- "project_id": 15,
- "repository": {
- "name": "Diaspora",
- "url": "git@localhost:diaspora.git",
- "description": "",
- "homepage": "http://localhost/diaspora",
- },
- "commits": [
- {
- "id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
- "message": "Update Catalan translation to e38cb41.",
- "timestamp": "2011-12-12T14:27:31+02:00",
- "url": "http://localhost/diaspora/commits/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
- "author": {
- "name": "Jordi Mallach",
- "email": "jordi@softcatala.org",
- }
- },
- // ...
- {
- "id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
- "message": "fixed readme",
- "timestamp": "2012-01-03T23:36:29+02:00",
- "url": "http://localhost/diaspora/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
- "author": {
- "name": "GitLab dev user",
- "email": "gitlabdev@dv6700.(none)",
- },
- },
- ],
- "total_commits_count": 4,
- };
-
-
- %h4.prepend-top-20 Issues events
- %p.light
- Triggered when new issue created or existing issue was updated/closed/reopened.
- %br
- Request body:
- = highlight_js do
- :erb
- {
- "object_kind":"issue",
- "object_attributes":{
- "id":301,
- "title":"New API: create/update/delete file",
- "assignee_id":51,
- "author_id":51,
- "project_id":14,
- "created_at":"2013-12-03T17:15:43Z",
- "updated_at":"2013-12-03T17:15:43Z",
- "position":0,
- "branch_name":null,
- "description":"Create new API for manipulations with repository",
- "milestone_id":null,
- "state":"opened",
- "iid":23
- }
- }
- %h4.prepend-top-20 Merge request events
- %p.light
- Triggered when new merge request created or existing merge request was updated/merged/closed.
- %br
- Request body:
- = highlight_js do
- :erb
- {
- "object_kind":"merge_request",
- "object_attributes":{
- "id":99,
- "target_branch":"master",
- "source_branch":"ms-viewport",
- "source_project_id":14,
- "author_id":51,
- "assignee_id":6,
- "title":"MS-Viewport",
- "created_at":"2013-12-03T17:23:34Z",
- "updated_at":"2013-12-03T17:23:34Z",
- "st_commits":null,
- "st_diffs":null,
- "milestone_id":null,
- "state":"opened",
- "merge_status":"unchecked",
- "target_project_id":14,
- "iid":1,
- "description":""
- }
- }
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "web_hooks", "web_hooks.md"))
diff --git a/app/views/help/workflow.html.haml b/app/views/help/workflow.html.haml
index 2b8950cd5c2..47de4ad796c 100644
--- a/app/views/help/workflow.html.haml
+++ b/app/views/help/workflow.html.haml
@@ -1,37 +1,6 @@
= render layout: 'help/layout' do
- %h3.page-title Workflow
-
- %ol.help
- %li
- %p Clone project
- .bash
- %pre.dark
- git clone git@example.com:project-name.git
-
- %li
- %p Create branch with your feature
- .bash
- %pre.dark
- git checkout -b $feature_name
-
- %li
- %p Write code. Commit changes
- .bash
- %pre.dark
- git commit -am "My feature is ready"
-
- %li
- %p Push your branch to GitLab
- .bash
- %pre.dark
- git push origin $feature_name
-
- %li
- %p Review your code on Commits page
-
- %li
- %p Create a merge request
-
- %li
- %p Your team lead will review code &amp; merge it to main branch
+ %h3.page-title Workflow
+ .help_body
+ = preserve do
+ = markdown File.read(Rails.root.join("doc", "workflow", "workflow.md"))
diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml
index 68146e661eb..9ba20f1347d 100644
--- a/app/views/layouts/_head.html.haml
+++ b/app/views/layouts/_head.html.haml
@@ -12,6 +12,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
= render 'layouts/google_analytics' if extra_config.has_key?('google_analytics_id')
+ = render 'layouts/piwik' if extra_config.has_key?('piwik_url') && extra_config.has_key?('piwik_site_id')
-# Atom feed
- if current_user
@@ -22,3 +23,8 @@
= auto_discovery_link_tag(:atom, project_commits_url(@project, @ref, format: :atom, private_token: current_user.private_token), title: "Recent commits to #{@project.name}:#{@ref}")
- if current_controller?(:issues)
= auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, private_token: current_user.private_token), title: "#{@project.name} issues")
+
+ -# Go repository retrieval support.
+ - if controller_name == 'projects' && action_name == 'show'
+ %meta{name: "go-import", content: "#{@project.web_url_without_protocol} git #{@project.web_url}.git"}
+
diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml
index 58b216f2e98..5080a1b7ef6 100644
--- a/app/views/layouts/_head_panel.html.haml
+++ b/app/views/layouts/_head_panel.html.haml
@@ -6,7 +6,7 @@
= link_to root_path, class: "home has_bottom_tooltip", title: "Dashboard" do
%h1 GITLAB
%span.separator
- %h1.project_name= title
+ %h1.title= title
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
%span.sr-only Toggle navigation
@@ -14,14 +14,13 @@
.navbar-collapse.collapse
%ul.nav.navbar-nav
- %li
+ %li.hidden-sm.hidden-xs
%a
%div.hide.turbolink-spinner
%i.icon-refresh.icon-spin
- Loading...
- %li.hidden-sm
+ %li.hidden-sm.hidden-xs
= render "layouts/search"
- %li.visible-sm
+ %li.visible-sm.visible-xs
= link_to search_path, title: "Search", class: 'has_bottom_tooltip', 'data-original-title' => 'Search area' do
%i.icon-search
%li
diff --git a/app/views/layouts/_piwik.html.haml b/app/views/layouts/_piwik.html.haml
new file mode 100644
index 00000000000..135e8daca26
--- /dev/null
+++ b/app/views/layouts/_piwik.html.haml
@@ -0,0 +1,12 @@
+:javascript
+ var _paq = _paq || [];
+ _paq.push(["trackPageView"]);
+ _paq.push(["enableLinkTracking"]);
+
+ (function() {
+ var u=(("https:" == document.location.protocol) ? "https" : "http") + "://#{extra_config.piwik_url}/";
+ _paq.push(["setTrackerUrl", u+"piwik.php"]);
+ _paq.push(["setSiteId", "#{extra_config.piwik_site_id}"]);
+ var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
+ g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
+ })();
diff --git a/app/views/layouts/_public_head_panel.html.haml b/app/views/layouts/_public_head_panel.html.haml
index 7d188fb28e4..99e11cd2b5c 100644
--- a/app/views/layouts/_public_head_panel.html.haml
+++ b/app/views/layouts/_public_head_panel.html.haml
@@ -6,11 +6,7 @@
= link_to public_root_path, class: "home" do
%h1 GITLAB
%span.separator
- %h1.project_name
- - if @project
- = project_title(@project)
- - else
- Public Projects
+ %h1.title= title
.pull-right
= link_to "Sign in", new_session_path(:user), class: 'btn btn-sign-in btn-new'
@@ -20,4 +16,3 @@
%a
%div.hide.turbolink-spinner
%i.icon-refresh.icon-spin
- Loading...
diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml
index 9a0db99332a..a0e55b21c32 100644
--- a/app/views/layouts/_search.html.haml
+++ b/app/views/layouts/_search.html.haml
@@ -7,4 +7,4 @@
= hidden_field_tag :search_code, true
= hidden_field_tag :repository_ref, @ref
= submit_tag 'Go' if ENV['RAILS_ENV'] == 'test'
- .search-autocomplete-json.hide{:'data-autocomplete-opts' => search_autocomplete_source }
+ .search-autocomplete-opts.hide{:'data-autocomplete-path' => search_autocomplete_path, :'data-autocomplete-project-id' => @project.try(:id), :'data-autocomplete-project-ref' => @ref }
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index 3a23cbdb376..53e0dbaef9b 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -2,9 +2,10 @@
%html{ lang: "en"}
= render "layouts/head", title: "Admin area"
%body{class: "#{app_theme} admin", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
= render "layouts/head_panel", title: "Admin area"
= render "layouts/flash"
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/admin'
.container
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 92edc718235..511db389e0f 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -5,7 +5,7 @@
= render "layouts/broadcast"
= render "layouts/head_panel", title: "Dashboard"
= render "layouts/flash"
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/dashboard'
.container
diff --git a/app/views/layouts/group.html.haml b/app/views/layouts/group.html.haml
index b546a9fa84f..fb4a3a3ba95 100644
--- a/app/views/layouts/group.html.haml
+++ b/app/views/layouts/group.html.haml
@@ -5,7 +5,7 @@
= render "layouts/broadcast"
= render "layouts/head_panel", title: "group: #{@group.name}"
= render "layouts/flash"
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/group'
.container
diff --git a/app/views/layouts/nav/_group.html.haml b/app/views/layouts/nav/_group.html.haml
index a8bb3b91559..36b102dc25a 100644
--- a/app/views/layouts/nav/_group.html.haml
+++ b/app/views/layouts/nav/_group.html.haml
@@ -5,11 +5,13 @@
= nav_link(path: 'groups#issues') do
= link_to issues_group_path(@group) do
Issues
- %span.count= current_user.assigned_issues.opened.of_group(@group).count
+ - if current_user
+ %span.count= current_user.assigned_issues.opened.of_group(@group).count
= nav_link(path: 'groups#merge_requests') do
= link_to merge_requests_group_path(@group) do
Merge Requests
- %span.count= current_user.cared_merge_requests.opened.of_group(@group).count
+ - if current_user
+ %span.count= current_user.cared_merge_requests.opened.of_group(@group).count
= nav_link(path: 'groups#members') do
= link_to "Members", members_group_path(@group)
diff --git a/app/views/layouts/nav/_profile.html.haml b/app/views/layouts/nav/_profile.html.haml
index d44cb975ea5..35d0d417502 100644
--- a/app/views/layouts/nav/_profile.html.haml
+++ b/app/views/layouts/nav/_profile.html.haml
@@ -4,6 +4,10 @@
%i.icon-home
= nav_link(controller: :accounts) do
= link_to "Account", profile_account_path
+ = nav_link(controller: :emails) do
+ = link_to profile_emails_path do
+ Emails
+ %span.count= current_user.emails.count + 1
- unless current_user.ldap_user?
= nav_link(controller: :passwords) do
= link_to "Password", edit_profile_password_path
diff --git a/app/views/layouts/navless.html.haml b/app/views/layouts/navless.html.haml
index 7325664bc19..c43d688a2cb 100644
--- a/app/views/layouts/navless.html.haml
+++ b/app/views/layouts/navless.html.haml
@@ -2,6 +2,7 @@
%html{ lang: "en"}
= render "layouts/head", title: @title
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
= render "layouts/head_panel", title: @title
= render "layouts/flash"
diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml
index 72849639571..2d869a6cdcb 100644
--- a/app/views/layouts/profile.html.haml
+++ b/app/views/layouts/profile.html.haml
@@ -5,7 +5,7 @@
= render "layouts/broadcast"
= render "layouts/head_panel", title: "Profile"
= render "layouts/flash"
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/profile'
.container
diff --git a/app/views/layouts/project_settings.html.haml b/app/views/layouts/project_settings.html.haml
index a55f043f2cf..5659cfab31d 100644
--- a/app/views/layouts/project_settings.html.haml
+++ b/app/views/layouts/project_settings.html.haml
@@ -9,7 +9,7 @@
- if can?(current_user, :download_code, @project)
= render 'shared/no_ssh'
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/project'
.container
diff --git a/app/views/layouts/projects.html.haml b/app/views/layouts/projects.html.haml
index 55214c6a5c9..3ae4961b137 100644
--- a/app/views/layouts/projects.html.haml
+++ b/app/views/layouts/projects.html.haml
@@ -9,7 +9,7 @@
- if can?(current_user, :download_code, @project)
= render 'shared/no_ssh'
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/project'
.container
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index 8f490f61a9c..3c76bbb9575 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -2,10 +2,10 @@
%html{ lang: "en"}
= render "layouts/head", title: "Public Projects"
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
- if current_user
= render "layouts/head_panel", title: "Public Projects"
- else
- = render "layouts/public_head_panel"
-
+ = render "layouts/public_head_panel", title: "Public Projects"
.container.navless-container
.content= yield
diff --git a/app/views/layouts/public_group.html.haml b/app/views/layouts/public_group.html.haml
new file mode 100644
index 00000000000..a289b784725
--- /dev/null
+++ b/app/views/layouts/public_group.html.haml
@@ -0,0 +1,10 @@
+!!! 5
+%html{ lang: "en"}
+ = render "layouts/head", title: group_head_title
+ %body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
+ = render "layouts/public_head_panel", title: "group: #{@group.name}"
+ %nav.main-nav.navbar-collapse.collapse
+ .container= render 'layouts/nav/group'
+ .container
+ .content= yield
diff --git a/app/views/layouts/public_projects.html.haml b/app/views/layouts/public_projects.html.haml
index 1e8814134f5..cf4ca9c7a84 100644
--- a/app/views/layouts/public_projects.html.haml
+++ b/app/views/layouts/public_projects.html.haml
@@ -2,7 +2,8 @@
%html{ lang: "en"}
= render "layouts/head", title: @project.name_with_namespace
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
- = render "layouts/public_head_panel"
+ = render "layouts/broadcast"
+ = render "layouts/public_head_panel", title: project_title(@project)
%nav.main-nav
.container= render 'layouts/nav/project'
.container
diff --git a/app/views/layouts/public_users.html.haml b/app/views/layouts/public_users.html.haml
new file mode 100644
index 00000000000..4aa258fea0d
--- /dev/null
+++ b/app/views/layouts/public_users.html.haml
@@ -0,0 +1,8 @@
+!!! 5
+%html{ lang: "en"}
+ = render "layouts/head", title: @title
+ %body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
+ = render "layouts/public_head_panel", title: @title
+ .container.navless-container
+ .content= yield
diff --git a/app/views/layouts/search.html.haml b/app/views/layouts/search.html.haml
index 177b3a4f8f4..97ed8ba12df 100644
--- a/app/views/layouts/search.html.haml
+++ b/app/views/layouts/search.html.haml
@@ -2,6 +2,7 @@
%html{ lang: "en"}
= render "layouts/head", title: "Search"
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
= render "layouts/head_panel", title: "Search"
= render "layouts/flash"
diff --git a/app/views/layouts/user_team.html.haml b/app/views/layouts/user_team.html.haml
index e64e68d2446..ce13853ed7f 100644
--- a/app/views/layouts/user_team.html.haml
+++ b/app/views/layouts/user_team.html.haml
@@ -2,9 +2,10 @@
%html{ lang: "en"}
= render "layouts/head", title: "#{@team.name}"
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
+ = render "layouts/broadcast"
= render "layouts/head_panel", title: "team: #{@team.name}"
= render "layouts/flash"
- %nav.main-nav
+ %nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/team'
.container
diff --git a/app/views/notify/new_email_email.html.haml b/app/views/notify/new_email_email.html.haml
new file mode 100644
index 00000000000..4a0448a573c
--- /dev/null
+++ b/app/views/notify/new_email_email.html.haml
@@ -0,0 +1,10 @@
+%p
+ Hi #{@user.name}!
+%p
+ A new email was added to your account:
+%p
+ email:
+ %code= @email.email
+%p
+ If this email was added in error, you can remove it here:
+ = link_to "Emails", profile_emails_url
diff --git a/app/views/notify/new_email_email.text.erb b/app/views/notify/new_email_email.text.erb
new file mode 100644
index 00000000000..51cba99ad0d
--- /dev/null
+++ b/app/views/notify/new_email_email.text.erb
@@ -0,0 +1,7 @@
+Hi <%= @user.name %>!
+
+A new email was added to your account:
+
+email.................. <%= @email.email %>
+
+If this email was added in error, you can remove it here: <%= profile_emails_url %>
diff --git a/app/views/notify/repository_push_email.html.haml b/app/views/notify/repository_push_email.html.haml
index d0b30c08338..ab0d6c653b9 100644
--- a/app/views/notify/repository_push_email.html.haml
+++ b/app/views/notify/repository_push_email.html.haml
@@ -21,3 +21,8 @@
%pre
= diff.diff
%br
+
+- if @compare.timeout
+ %h5 Huge diff. To prevent performance issues it was hidden
+- elsif @compare.commits_over_limit?
+ %h5 Diff for big amount of commits is disabled
diff --git a/app/views/notify/repository_push_email.text.haml b/app/views/notify/repository_push_email.text.haml
index 6718ca68359..93b344d2c82 100644
--- a/app/views/notify/repository_push_email.text.haml
+++ b/app/views/notify/repository_push_email.text.haml
@@ -18,3 +18,8 @@ Diff:
= diff.new_path || diff.old_path
\=====================================
= diff.diff
+\
+- if @compare.timeout
+ Huge diff. To prevent performance issues it was hidden
+- elsif @compare.commits_over_limit?
+ Diff for big amount of commits is disabled
diff --git a/app/views/profiles/accounts/show.html.haml b/app/views/profiles/accounts/show.html.haml
index 3220736b078..c60e1ca9297 100644
--- a/app/views/profiles/accounts/show.html.haml
+++ b/app/views/profiles/accounts/show.html.haml
@@ -50,7 +50,10 @@
%div
= f.text_field :username, required: true, class: 'form-control'
&nbsp;
- %span.loading-gif.hide= image_tag "ajax_loader.gif"
+ .loading-gif.hide
+ %p
+ %i.icon-spinner.icon-spin
+ Saving new username
%p.light
= user_url(@user)
%div
diff --git a/app/views/profiles/emails/index.html.haml b/app/views/profiles/emails/index.html.haml
new file mode 100644
index 00000000000..b5f1e438ccb
--- /dev/null
+++ b/app/views/profiles/emails/index.html.haml
@@ -0,0 +1,33 @@
+%h3.page-title
+ My email addresses
+%p.light
+ Your
+ %b Primary Email
+ will be used for account notifications, avatar detection and web based operations, such as edits and merges.
+ %br
+ All email addresses will be used to identify your commits.
+
+%hr
+
+.ui-box
+ .title
+ Emails (#{@emails.count + 1})
+ %ul.well-list#emails-table
+ %li
+ %strong= @primary
+ %span.label.label-success Primary Email
+ - @emails.each do |email|
+ %li
+ %strong= email.email
+ %span.cgray
+ added #{time_ago_with_tooltip(email.created_at)}
+ = link_to 'Remove', profile_email_path(email), data: { confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-small btn-remove pull-right'
+
+%h4 Add email address
+= form_for 'email', url: profile_emails_path, html: { class: 'form-horizontal' } do |f|
+ .form-group
+ = f.label :email, class: 'control-label'
+ .col-sm-10
+ = f.text_field :email, class: 'form-control'
+ .form-actions
+ = f.submit 'Add', class: 'btn btn-create'
diff --git a/app/views/profiles/groups/index.html.haml b/app/views/profiles/groups/index.html.haml
index 1d24e636bf4..cebc0b6bccb 100644
--- a/app/views/profiles/groups/index.html.haml
+++ b/app/views/profiles/groups/index.html.haml
@@ -18,13 +18,14 @@
%li
.pull-right
- if can?(current_user, :manage_group, group)
- = link_to edit_group_path(group), class: "btn-small btn grouped" do
+ = link_to edit_group_path(group), class: "btn-small btn btn-grouped" do
%i.icon-cogs
Settings
- = link_to leave_profile_group_path(group), data: { confirm: "Are you sure you want to leave #{group.name} group?"}, method: :delete, class: "btn-small btn grouped", title: 'Remove user from group' do
- %i.icon-signout
- Leave
+ - if can?(current_user, :destroy, user_group)
+ = link_to leave_profile_group_path(group), data: { confirm: leave_group_message(group.name) }, method: :delete, class: "btn-small btn btn-grouped", title: 'Remove user from group' do
+ %i.icon-signout
+ Leave
= link_to group, class: 'group-name' do
%strong= group.name
diff --git a/app/views/profiles/keys/index.html.haml b/app/views/profiles/keys/index.html.haml
index 79fdb164089..71a4ca91d42 100644
--- a/app/views/profiles/keys/index.html.haml
+++ b/app/views/profiles/keys/index.html.haml
@@ -17,6 +17,6 @@
= render @keys
- if @keys.blank?
%li
- %h3.nothing_here_message There are no SSH keys with access to your account.
+ .nothing-here-block There are no SSH keys with access to your account.
diff --git a/app/views/profiles/notifications/_settings.html.haml b/app/views/profiles/notifications/_settings.html.haml
index d123b8f9407..218d51d31af 100644
--- a/app/views/profiles/notifications/_settings.html.haml
+++ b/app/views/profiles/notifications/_settings.html.haml
@@ -1,31 +1,17 @@
%li
- .row
- .col-sm-4
- %span
- = notification_icon(notification)
-
- - if membership.kind_of? UsersGroup
- = link_to membership.group.name, membership.group
- - else
- = link_to_project(membership.project)
- .col-sm-8
- = form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
- = hidden_field_tag :notification_type, type, id: dom_id(membership, 'notification_type')
- = hidden_field_tag :notification_id, membership.id, id: dom_id(membership, 'notification_id')
-
- = label_tag nil, class: 'radio-inline' do
- = radio_button_tag :notification_level, Notification::N_GLOBAL, notification.global?, id: dom_id(membership, 'notification_level'), class: 'trigger-submit'
- %span Use global setting
-
- = label_tag nil, class: 'radio-inline' do
- = radio_button_tag :notification_level, Notification::N_DISABLED, notification.disabled?, id: dom_id(membership, 'notification_level'), class: 'trigger-submit'
- %span Disabled
-
- = label_tag nil, class: 'radio-inline' do
- = radio_button_tag :notification_level, Notification::N_PARTICIPATING, notification.participating?, id: dom_id(membership, 'notification_level'), class: 'trigger-submit'
- %span Participating
-
- = label_tag nil, class: 'radio-inline' do
- = radio_button_tag :notification_level, Notification::N_WATCH, notification.watch?, id: dom_id(membership, 'notification_level'), class: 'trigger-submit'
- %span Watch
+ %span.notification-icon-holder
+ - if notification.global?
+ = notification_icon(@notification)
+ - else
+ = notification_icon(notification)
+ %span.str-truncated
+ - if membership.kind_of? UsersGroup
+ = link_to membership.group.name, membership.group
+ - else
+ = link_to_project(membership.project)
+ .pull-right
+ = form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
+ = hidden_field_tag :notification_type, type, id: dom_id(membership, 'notification_type')
+ = hidden_field_tag :notification_id, membership.id, id: dom_id(membership, 'notification_id')
+ = select_tag :notification_level, options_for_select(Notification.options_with_labels, notification.level), class: 'trigger-submit'
diff --git a/app/views/profiles/notifications/show.html.haml b/app/views/profiles/notifications/show.html.haml
index 878d7f77430..efe9c032190 100644
--- a/app/views/profiles/notifications/show.html.haml
+++ b/app/views/profiles/notifications/show.html.haml
@@ -3,56 +3,49 @@
%p.light
GitLab uses the email specified in your profile for notifications
%hr
-.alert.alert-info
- %p
- %i.icon-circle.cred
- %strong Disabled
- &ndash; You will not get any notifications via email
- %p
- %i.icon-circle.cblue
- %strong Participating
- &ndash; You will only receive notifications from related resources (e.g. from your commits or assigned issues)
- %p
- %i.icon-circle.cgreen
- %strong Watch
- &ndash; You will receive all notifications from projects in which you participate
+= form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications form-horizontal global-notifications-form' do
+ = hidden_field_tag :notification_type, 'global'
-.row
- .col-sm-4
- %h4
- = notification_icon(@notification)
- Global setting
- .col-sm-8
- = form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
- = hidden_field_tag :notification_type, 'global'
-
- = label_tag nil, class: 'radio-inline' do
+ = label_tag :notification_level, 'Notification level', class: 'control-label'
+ .col-sm-10
+ .radio
+ = label_tag nil, class: '' do
= radio_button_tag :notification_level, Notification::N_DISABLED, @notification.disabled?, class: 'trigger-submit'
- %span Disabled
+ .level-title
+ Disabled
+ %p You will not get any notifications via email
- = label_tag nil, class: 'radio-inline' do
+ .radio
+ = label_tag nil, class: '' do
= radio_button_tag :notification_level, Notification::N_PARTICIPATING, @notification.participating?, class: 'trigger-submit'
- %span Participating
+ .level-title
+ Participating
+ %p You will only receive notifications from related resources (e.g. from your commits or assigned issues)
- = label_tag nil, class: 'radio-inline' do
+ .radio
+ = label_tag nil, class: '' do
= radio_button_tag :notification_level, Notification::N_WATCH, @notification.watch?, class: 'trigger-submit'
- %span Watch
+ .level-title
+ Watch
+ %p You will receive all notifications from projects in which you participate
-%br
-= link_to '#', class: 'js-toggle-visibility-link' do
- %span.btn.btn-tiny
- %i.icon-chevron-down
- %span Advanced notifications settings
-.js-toggle-visibility-container.hide
+.clearfix
%hr
- %h4 Groups:
- %ul.bordered-list
- - @users_groups.each do |users_group|
- - notification = Notification.new(users_group)
- = render 'settings', type: 'group', membership: users_group, notification: notification
+ %p
+ You can also specify notification level per group or per project
+ %br
+ By default all projects and groups uses notification level set above
+.row.all-notifications
+ .col-md-6
+ %h4 Groups:
+ %ul.bordered-list
+ - @users_groups.each do |users_group|
+ - notification = Notification.new(users_group)
+ = render 'settings', type: 'group', membership: users_group, notification: notification
- %h4 Projects:
- %ul.bordered-list
- - @users_projects.each do |users_project|
- - notification = Notification.new(users_project)
- = render 'settings', type: 'project', membership: users_project, notification: notification
+ .col-md-6
+ %h4 Projects:
+ %ul.bordered-list
+ - @users_projects.each do |users_project|
+ - notification = Notification.new(users_project)
+ = render 'settings', type: 'project', membership: users_project, notification: notification
diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml
index f333879cf6c..b72232ee36b 100644
--- a/app/views/profiles/passwords/new.html.haml
+++ b/app/views/profiles/passwords/new.html.haml
@@ -1,22 +1,22 @@
-= form_for @user, url: profile_password_path, method: :post do |f|
- .light-well.padded
- %p.slead
- Please set new password before proceed.
- %br
- After successful password update you will be redirected to login screen
- -if @user.errors.any?
- .alert.alert-danger
- %ul
- - @user.errors.full_messages.each do |msg|
- %li= msg
+%h3.page-title Setup new password
+%hr
+= form_for @user, url: profile_password_path, method: :post, html: { class: 'form-horizontal '} do |f|
+ %p.slead
+ Please set a new password before proceeding.
+ %br
+ After a successful password update you will be redirected to login screen.
+ -if @user.errors.any?
+ .alert.alert-danger
+ %ul
+ - @user.errors.full_messages.each do |msg|
+ %li= msg
- .form-group
- = f.label :password
- .col-sm-10= f.password_field :password, required: true
- .form-group
- = f.label :password_confirmation
- .col-sm-10
- = f.password_field :password_confirmation, required: true
- .form-group
- .col-sm-10
- = f.submit 'Set new password', class: "btn btn-create"
+ .form-group
+ = f.label :password, class: 'control-label'
+ .col-sm-10= f.password_field :password, required: true, class: 'form-control'
+ .form-group
+ = f.label :password_confirmation, class: 'control-label'
+ .col-sm-10
+ = f.password_field :password_confirmation, required: true, class: 'form-control'
+ .form-actions
+ = f.submit 'Set new password', class: "btn btn-create"
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index 6ae1032aebf..523a07db400 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -47,6 +47,9 @@
= f.label :twitter, class: "control-label"
.col-sm-10= f.text_field :twitter, class: "form-control"
.form-group
+ = f.label :website_url, 'Website', class: "control-label"
+ .col-sm-10= f.text_field :website_url, class: "form-control"
+ .form-group
= f.label :bio, class: "control-label"
.col-sm-10
= f.text_area :bio, rows: 6, class: "form-control", maxlength: 250
diff --git a/app/views/projects/_settings_nav.html.haml b/app/views/projects/_settings_nav.html.haml
index e4cfabc3100..4c7b088ae9a 100644
--- a/app/views/projects/_settings_nav.html.haml
+++ b/app/views/projects/_settings_nav.html.haml
@@ -1,19 +1,21 @@
-%ul.nav.nav-pills.nav-stacked.nav-stacked-menu.append-bottom-20
+%ul.nav.nav-pills.nav-stacked.nav-stacked-menu.append-bottom-20.project-settings-nav
= nav_link(path: 'projects#edit') do
= link_to edit_project_path(@project), class: "stat-tab tab " do
- Edit Project
+ %i.icon-edit
+ Project
= nav_link(controller: [:team_members, :teams]) do
= link_to project_team_index_path(@project), class: "team-tab tab" do
+ %i.icon-group
Members
= nav_link(controller: :deploy_keys) do
= link_to project_deploy_keys_path(@project) do
- %span
+ %i.icon-key
Deploy Keys
= nav_link(controller: :hooks) do
= link_to project_hooks_path(@project) do
- %span
+ %i.icon-link
Web Hooks
= nav_link(controller: :services) do
= link_to project_services_path(@project) do
- %span
+ %i.icon-cogs
Services
diff --git a/app/views/projects/blob/_blob.html.haml b/app/views/projects/blob/_blob.html.haml
index 32ea967105a..e59d970bf46 100644
--- a/app/views/projects/blob/_blob.html.haml
+++ b/app/views/projects/blob/_blob.html.haml
@@ -15,6 +15,10 @@
- else
= link_to title, '#'
+%ul.blob-commit-info.bs-callout.bs-callout-info
+ - blob_commit = @repository.last_commit_for_path(@commit.id, @blob.path)
+ = render blob_commit, project: @project
+
%div#tree-content-holder.tree-content-holder
.file-holder
.file-title
diff --git a/app/views/projects/blob/_text.html.haml b/app/views/projects/blob/_text.html.haml
index d03b53888ae..7cbea7c3eb6 100644
--- a/app/views/projects/blob/_text.html.haml
+++ b/app/views/projects/blob/_text.html.haml
@@ -8,7 +8,6 @@
- else
.file-content.code
- unless blob.empty?
- %div{class: user_color_scheme_class}
- = raw blob.colorize(formatter: :gitlab)
+ = render 'shared/file_hljs', blob: blob
- else
- %p.nothing_here_message Empty file
+ .nothing-here-block Empty file
diff --git a/app/views/projects/blob/show.html.haml b/app/views/projects/blob/show.html.haml
index 56220e520f3..69167654c39 100644
--- a/app/views/projects/blob/show.html.haml
+++ b/app/views/projects/blob/show.html.haml
@@ -1,5 +1,6 @@
%div.tree-ref-holder
= render 'shared/ref_switcher', destination: 'blob', path: @path
+
%div#tree-holder.tree-holder
= render 'blob', blob: @blob
diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml
index 4fd708517fc..f0731977098 100644
--- a/app/views/projects/branches/_branch.html.haml
+++ b/app/views/projects/branches/_branch.html.haml
@@ -1,4 +1,4 @@
-- commit = Commit.new(Gitlab::Git::Commit.new(branch.commit))
+- commit = @repository.commit(branch.target)
%li
%h4
= link_to project_commits_path(@project, branch.name) do
@@ -10,19 +10,24 @@
%i.icon-lock
.pull-right
- if can?(current_user, :download_code, @project)
- = render 'projects/repositories/download_archive', ref: branch.name, btn_class: 'grouped btn-group-small'
- = link_to project_compare_index_path(@project, from: branch.name, to: branch.name), class: 'btn grouped btn-small', title: "Compare" do
- %i.icon-copy
- Compare
+ = render 'projects/repositories/download_archive', ref: branch.name, btn_class: 'btn-grouped btn-group-small'
+ - if branch.name != @repository.root_ref
+ = link_to project_compare_index_path(@project, from: @repository.root_ref, to: branch.name), class: 'btn btn-grouped btn-small', method: :post, title: "Compare" do
+ %i.icon-copy
+ Compare
- if can?(current_user, :admin_project, @project) && branch.name != @repository.root_ref
- = link_to project_branch_path(@project, branch.name), class: 'btn grouped btn-small remove-row', method: :delete, data: { confirm: 'Removed branch cannot be restored. Are you sure?'}, remote: true do
+ = link_to project_branch_path(@project, branch.name), class: 'btn btn-grouped btn-small remove-row', method: :delete, data: { confirm: 'Removed branch cannot be restored. Are you sure?'}, remote: true do
%i.icon-trash
- %p
- = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do
- = commit.short_id
- = image_tag avatar_icon(commit.author_email), class: "avatar s16", alt: ''
- %span.light
- = gfm escape_once(truncate(commit.title, length: 40))
- #{time_ago_with_tooltip(commit.committed_date)}
+ - if commit
+ %p
+ = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do
+ = commit.short_id
+ = image_tag avatar_icon(commit.author_email), class: "avatar s16", alt: ''
+ %span.light
+ = gfm escape_once(truncate(commit.title, length: 40))
+ #{time_ago_with_tooltip(commit.committed_date)}
+ - else
+ %p
+ Cant find HEAD commit for this branch
diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml
index 690df98a2ab..bee04eb013e 100644
--- a/app/views/projects/branches/index.html.haml
+++ b/app/views/projects/branches/index.html.haml
@@ -4,7 +4,7 @@
= render "filter"
.col-md-9
- unless @branches.empty?
- %ul.bordered-list.top-list
+ %ul.bordered-list.top-list.all-branches
- @branches.each do |branch|
= render "projects/branches/branch", branch: branch
= paginate @branches, theme: 'gitlab'
diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml
index d173065afd2..5da2ede2937 100644
--- a/app/views/projects/branches/new.html.haml
+++ b/app/views/projects/branches/new.html.haml
@@ -5,12 +5,11 @@
.form-group
= label_tag :branch_name, 'Name for new branch', class: 'control-label'
.col-sm-10
- = text_field_tag :branch_name, nil, placeholder: 'feature/dashboard', required: true, tabindex: 1, class: 'form-control'
+ = text_field_tag :branch_name, nil, placeholder: 'enter new branch name', required: true, tabindex: 1, class: 'form-control'
.form-group
= label_tag :ref, 'Create from', class: 'control-label'
.col-sm-10
- = text_field_tag :ref, nil, placeholder: 'master', required: true, tabindex: 2, class: 'form-control'
- .light branch name or commit SHA
+ = text_field_tag :ref, nil, placeholder: 'existing branch name, tag or commit SHA', required: true, tabindex: 2, class: 'form-control'
.form-actions
= submit_tag 'Create branch', class: 'btn btn-create', tabindex: 3
= link_to 'Cancel', project_branches_path(@project), class: 'btn btn-cancel'
diff --git a/app/views/projects/commit/_commit_box.html.haml b/app/views/projects/commit/_commit_box.html.haml
index 3d666807cf9..df44c30c005 100644
--- a/app/views/projects/commit/_commit_box.html.haml
+++ b/app/views/projects/commit/_commit_box.html.haml
@@ -5,14 +5,14 @@
%i.icon-comment
= @notes_count
.pull-left.btn-group
- %a.btn.grouped.dropdown-toggle{ data: {toggle: :dropdown} }
+ %a.btn.btn-grouped.dropdown-toggle{ data: {toggle: :dropdown} }
%i.icon-download-alt
Download as
%span.caret
%ul.dropdown-menu
%li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch)
%li= link_to "Plain Diff", project_commit_path(@project, @commit, format: :diff)
- = link_to project_tree_path(@project, @commit), class: "btn btn-primary grouped" do
+ = link_to project_tree_path(@project, @commit), class: "btn btn-primary btn-grouped" do
%span Browse Code »
%div
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index 9772d3ef2ef..a0606662807 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -1,9 +1,12 @@
-%li.commit
+%li.commit.js-toggle-container
.commit-row-title
= link_to commit.short_id(8), project_commit_path(project, commit), class: "commit_short_id"
&nbsp;
%span.str-truncated
= link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message"
+ - if commit.description?
+ %a.text-expander.js-toggle-button ...
+
= link_to "Browse Code »", project_tree_path(project, commit), class: "pull-right"
.notes_count
- notes = project.notes.for_commit_id(commit.id)
@@ -12,6 +15,10 @@
%i.icon-comment
= notes.count
+ - if commit.description?
+ .commit-row-description.js-toggle-content
+ = simple_format(commit.description)
+
.commit-row-info
= commit_author_link(commit, avatar: true, size: 16)
.committed_ago
diff --git a/app/views/projects/commits/_diffs.html.haml b/app/views/projects/commits/_diffs.html.haml
index a41a89bb972..dd287fcc153 100644
--- a/app/views/projects/commits/_diffs.html.haml
+++ b/app/views/projects/commits/_diffs.html.haml
@@ -8,18 +8,18 @@
- if current_controller?(:commit) or current_controller?(:merge_requests)
Please, download the diff as
- if current_controller?(:commit)
- = link_to "plain diff", project_commit_path(@project, @commit, format: :diff), class: "underlined_link"
+ = link_to "plain diff", project_commit_path(@project, @commit, format: :diff), class: "underlined-link"
or
- = link_to "email patch", project_commit_path(@project, @commit, format: :patch), class: "underlined_link"
+ = link_to "email patch", project_commit_path(@project, @commit, format: :patch), class: "underlined-link"
- else
- = link_to "plain diff", project_merge_request_path(@project, @merge_request, format: :diff), class: "underlined_link"
+ = link_to "plain diff", project_merge_request_path(@project, @merge_request, format: :diff), class: "underlined-link"
or
- = link_to "email patch", project_merge_request_path(@project, @merge_request, format: :patch), class: "underlined_link"
+ = link_to "email patch", project_merge_request_path(@project, @merge_request, format: :patch), class: "underlined-link"
instead.
- unless @force_suppress_diff
%p
If you still want to see the diff
- = link_to "click this link", url_for(force_show_diff: true), class: "underlined_link"
+ = link_to "click this link", url_for(force_show_diff: true), class: "underlined-link"
%p.commit-stat-summary
Showing
@@ -44,25 +44,33 @@
- file = project.repository.blob_at(@commit.id, diff.new_path)
- file = project.repository.blob_at(@commit.parent_id, diff.old_path) unless file
- next unless file
- .file{id: "diff-#{i}"}
- .header
+ .diff-file{id: "diff-#{i}"}
+ .diff-header{id: "file-path-#{hexdigest(diff.new_path || diff.old_path)}"}
- if diff.deleted_file
%span= diff.old_path
- - if @commit.parent_ids.present?
- = link_to project_blob_path(project, tree_join(@commit.parent_id, diff.new_path)), { class: 'btn btn-small view-file' } do
- View file @
- %span.commit-short-id= @commit.short_id(6)
+ .diff-btn-group
+ - if @commit.parent_ids.present?
+ = link_to project_blob_path(project, tree_join(@commit.parent_id, diff.new_path)), { class: 'btn btn-small view-file' } do
+ View file @
+ %span.commit-short-id= @commit.short_id(6)
- else
%span= diff.new_path
- if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
%span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
- = link_to project_blob_path(project, tree_join(@commit.id, diff.new_path)), { class: 'btn btn-small view-file' } do
- View file @
- %span.commit-short-id= @commit.short_id(6)
+ .diff-btn-group
+ - if @merge_request && @merge_request.source_project
+ = link_to project_edit_tree_path(@merge_request.source_project, tree_join(@merge_request.source_branch, diff.new_path), from_merge_request_id: @merge_request.id), { class: 'btn btn-small' } do
+ Edit
+ &nbsp;
+
+ = link_to project_blob_path(project, tree_join(@commit.id, diff.new_path)), { class: 'btn btn-small view-file' } do
+ View file @
+ %span.commit-short-id= @commit.short_id(6)
+
- .content
+ .diff-content
-# Skipp all non non-supported blobs
- next unless file.respond_to?('text?')
- if file.text?
@@ -74,4 +82,4 @@
- old_file = project.repository.blob_at(@commit.parent_id, diff.old_path) if @commit.parent_id
= render "projects/commits/image", diff: diff, old_file: old_file, file: file, index: i
- else
- %p.nothing_here_message No preview for this file type
+ .nothing-here-block No preview for this file type
diff --git a/app/views/projects/commits/_head.html.haml b/app/views/projects/commits/_head.html.haml
index b9ab27d212c..81e33743911 100644
--- a/app/views/projects/commits/_head.html.haml
+++ b/app/views/projects/commits/_head.html.haml
@@ -1,4 +1,4 @@
-%ul.nav.nav-tabs.append-bottom-15
+%ul.nav.nav-tabs
%li= render partial: 'shared/ref_switcher', locals: {destination: 'commits'}
= nav_link(controller: [:commit, :commits]) do
diff --git a/app/views/projects/commits/_image.html.haml b/app/views/projects/commits/_image.html.haml
index 9a8b7c857e5..6d9ef5964d9 100644
--- a/app/views/projects/commits/_image.html.haml
+++ b/app/views/projects/commits/_image.html.haml
@@ -15,7 +15,7 @@
%span.meta-filesize= "#{number_to_human_size old_file.size}"
|
%b W:
- %span.meta-width
+ %span.meta-width
|
%b H:
%span.meta-height
@@ -27,7 +27,7 @@
%span.meta-filesize= "#{number_to_human_size file.size}"
|
%b W:
- %span.meta-width
+ %span.meta-width
|
%b H:
%span.meta-height
@@ -49,7 +49,7 @@
%img{src: "data:#{old_file.mime_type};base64,#{Base64.encode64(old_file.data)}"}
.frame.added
%img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
- .col-sm-10
+ .controls
.transparent
.drag-track
.dragger{:style => "left: 0px;"}
diff --git a/app/views/projects/commits/_inline_commit.html.haml b/app/views/projects/commits/_inline_commit.html.haml
index f5863463fee..b36369b4285 100644
--- a/app/views/projects/commits/_inline_commit.html.haml
+++ b/app/views/projects/commits/_inline_commit.html.haml
@@ -2,5 +2,7 @@
.commit-row-title
= link_to commit.short_id(8), project_commit_path(project, commit), class: "commit_short_id"
&nbsp;
- = link_to_gfm truncate(commit.title, length: 40), project_commit_path(project, commit.id), class: "commit-row-message"
- #{time_ago_with_tooltip(commit.committed_date)} &nbsp;
+ %span.str-truncated
+ = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message"
+ .pull-right
+ #{time_ago_with_tooltip(commit.committed_date)}
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index 723c5a1c340..3a4f304a255 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -9,7 +9,7 @@
%div{id: dom_id(@project)}
#commits-list= render "commits"
.clear
-.loading{ style: "display:none;"}
+= spinner
- if @commits.count == @limit
:javascript
diff --git a/app/views/projects/compare/_form.html.haml b/app/views/projects/compare/_form.html.haml
index 0762655fb93..da6157cf1b6 100644
--- a/app/views/projects/compare/_form.html.haml
+++ b/app/views/projects/compare/_form.html.haml
@@ -14,7 +14,7 @@
&nbsp;
= submit_tag "Compare", class: "btn btn-create commits-compare-btn"
- if compare_to_mr_button?
- = link_to compare_mr_path, class: 'prepend-left-10' do
+ = link_to compare_mr_path, class: 'prepend-left-10 btn' do
%strong Make a merge request
diff --git a/app/views/projects/compare/show.html.haml b/app/views/projects/compare/show.html.haml
index e9456c24960..9bd49855369 100644
--- a/app/views/projects/compare/show.html.haml
+++ b/app/views/projects/compare/show.html.haml
@@ -5,21 +5,32 @@
= render "form"
-- if @commits.size > 100
- .alert.alert-warning
- %p
- %strong Warning! This comparison includes more than 100 commits.
- %p To preserve performance the line diff is not shown.
-
- if @commits.present?
%div.ui-box
.title
Commits (#{@commits.count})
- %ul.well-list= render Commit.decorate(@commits), project: @project
+ - if @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
+ %ul.well-list
+ - Commit.decorate(@commits.first(MergeRequestDiff::COMMITS_SAFE_SIZE)).each do |commit|
+ = render "projects/commits/inline_commit", commit: commit, project: @project
+ %li.warning-row.unstyled
+ other #{@commits.size - MergeRequestDiff::COMMITS_SAFE_SIZE} commits hidden to prevent performance issues.
+ - else
+ %ul.well-list= render Commit.decorate(@commits), project: @project
- - unless @diffs.empty?
- %h4 Diff
+ %h4 Diff
+ - if @diffs.present?
= render "projects/commits/diffs", diffs: @diffs, project: @project
+ - elsif @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
+ .bs-callout.bs-callout-danger
+ %h4 This comparison includes more than #{MergeRequestDiff::COMMITS_SAFE_SIZE} commits.
+ %p To preserve performance the line diff is not shown.
+ - elsif @timeout
+ .bs-callout.bs-callout-danger
+ %h4 Diff for this comparison is extremely large.
+ %p Use command line to browse diff for this comparison.
+
+
- else
.light-well
%center
diff --git a/app/views/projects/deploy_keys/index.html.haml b/app/views/projects/deploy_keys/index.html.haml
index 90d86102aca..f50aeba337a 100644
--- a/app/views/projects/deploy_keys/index.html.haml
+++ b/app/views/projects/deploy_keys/index.html.haml
@@ -20,7 +20,7 @@
= render @enabled_keys
- if @enabled_keys.blank?
.light-well
- %p.nothing_here_message Create a #{link_to 'new deploy key', new_project_deploy_key_path(@project)} or add an existing one
+ .nothing-here-block Create a #{link_to 'new deploy key', new_project_deploy_key_path(@project)} or add an existing one
.col-md-6.available-keys
%h5
%strong Deploy keys
@@ -29,4 +29,4 @@
= render @available_keys
- if @available_keys.blank?
.light-well
- %p.nothing_here_message Deploy keys from projects you have access to will be displayed here
+ .nothing-here-block Deploy keys from projects you have access to will be displayed here
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 79234fe4fa9..005d994806e 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -93,10 +93,11 @@
- %center.light.prepend-top-20.padded
+ .centered-light-block
%h3
%i.icon-warning-sign
Dangerous settings
+
%p Project settings below may result in data loss!
= link_to '#', class: 'btn js-toggle-visibility-link' do
Show it to me
@@ -132,7 +133,7 @@
data: { confirm: "Are you sure that you want to archive this project?\nAn archived project cannot be committed to." },
method: :post, class: "btn btn-remove"
- else
- %p.nothing_here_message Only the project owner can archive a project
+ .nothing-here-block Only the project owner can archive a project
- if can?(current_user, :change_namespace, @project)
.ui-box.ui-box-danger
@@ -153,7 +154,7 @@
.form-actions
= f.submit 'Transfer', class: "btn btn-remove"
- else
- %p.nothing_here_message Only the project owner can transfer a project
+ .nothing-here-block Only the project owner can transfer a project
.ui-box.ui-box-danger
.title Rename repository
@@ -185,10 +186,11 @@
= link_to 'Remove project', @project, data: { confirm: remove_project_message(@project) }, method: :delete, class: "btn btn-remove"
- else
- %p.nothing_here_message Only project owner can remove a project
+ .nothing-here-block Only project owner can remove a project
.save-project-loader.hide
%center
- = image_tag "ajax_loader.gif"
- %h3 Saving project.
+ %h2
+ %i.icon-spinner.icon-spin
+ Saving project.
%p Please wait a moment, this page will automatically refresh when ready.
diff --git a/app/views/projects/edit_tree/show.html.haml b/app/views/projects/edit_tree/show.html.haml
index 10dae3c8ff0..3f2e98f3a7f 100644
--- a/app/views/projects/edit_tree/show.html.haml
+++ b/app/views/projects/edit_tree/show.html.haml
@@ -11,7 +11,7 @@
%strong= @ref
%span.options
.btn-group.tree-btn-group
- = link_to "Cancel", project_blob_path(@project, @id), class: "btn btn-tiny btn-cancel", data: { confirm: leave_edit_message }
+ = link_to "Cancel", @after_edit_path, class: "btn btn-tiny btn-cancel", data: { confirm: leave_edit_message }
.file-content.code
%pre#editor= @blob.data
@@ -23,15 +23,16 @@
.form-actions
= hidden_field_tag 'last_commit', @last_commit
= hidden_field_tag 'content', '', id: "file-content"
+ = hidden_field_tag 'from_merge_request_id', params[:from_merge_request_id]
.commit-button-annotation
= button_tag "Commit changes", class: 'btn commit-btn js-commit-button btn-primary'
.message
to branch
%strong= @ref
- = link_to "Cancel", project_blob_path(@project, @id), class: "btn btn-cancel", data: { confirm: leave_edit_message}
+ = link_to "Cancel", @after_edit_path, class: "btn btn-cancel", data: { confirm: leave_edit_message}
:javascript
- ace.config.set("modePath", gon.relative_url_root + "#{Gitlab::Application.config.assets.prefix}/ace-src-noconflict")
+ ace.config.set("modePath", gon.relative_url_root + "#{Gitlab::Application.config.assets.prefix}/ace")
var ace_mode = "#{@blob.language.try(:ace_mode)}";
var editor = ace.edit("editor");
if (ace_mode) {
diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml
index eae4949fcd3..489b9b0e951 100644
--- a/app/views/projects/empty.html.haml
+++ b/app/views/projects/empty.html.haml
@@ -3,8 +3,9 @@
- if @project.import? && !@project.imported
.save-project-loader
%center
- = image_tag "ajax_loader.gif"
- %h3 Importing repository.
+ %h2
+ %i.icon-spinner.icon-spin
+ Importing repository.
%p.monospace git clone --bare #{@project.import_url}
%p Please wait while we import the repository for you. Refresh at will.
:javascript
diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml
index a21cb9e7861..27348232ba2 100644
--- a/app/views/projects/graphs/show.html.haml
+++ b/app/views/projects/graphs/show.html.haml
@@ -1,7 +1,8 @@
.loading-graph
%center
- .loading
- %h3.page-title Building repository graph.
+ %h3.page-title
+ %i.icon-spinner.icon-spin
+ Building repository graph.
%p Please wait a moment, this page will automatically refresh when ready.
.stat-graph
diff --git a/app/views/projects/hooks/index.html.haml b/app/views/projects/hooks/index.html.haml
index a095fd06d2f..00e5ae27779 100644
--- a/app/views/projects/hooks/index.html.haml
+++ b/app/views/projects/hooks/index.html.haml
@@ -51,8 +51,8 @@
- @hooks.each do |hook|
%li
.pull-right
- = link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn btn-small grouped"
- = link_to 'Remove', project_hook_path(@project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-small grouped"
+ = link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn btn-small btn-grouped"
+ = link_to 'Remove', project_hook_path(@project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-small btn-grouped"
.clearfix
%span.monospace= hook.url
%p
diff --git a/app/views/projects/issues/_form.html.haml b/app/views/projects/issues/_form.html.haml
index c95e8178594..dd091302c8e 100644
--- a/app/views/projects/issues/_form.html.haml
+++ b/app/views/projects/issues/_form.html.haml
@@ -1,6 +1,10 @@
%div.issue-form-holder
%h3.page-title= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.iid}"
%hr
+ - if @repository.contribution_guide && !@issue.persisted?
+ - contribution_guide_url = project_blob_path(@project, tree_join(@repository.root_ref, @repository.contribution_guide.name))
+ .alert.alert-info.col-sm-10.col-sm-offset-2
+ ="Please review the <strong>#{link_to "guidelines for contribution", contribution_guide_url}</strong> to this repository.".html_safe
= form_for [@project, @issue], html: { class: 'form-horizontal issue-form' } do |f|
-if @issue.errors.any?
.alert.alert-danger
@@ -24,7 +28,7 @@
%i.icon-user
Assign to
.col-sm-10
- = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Select a user" }, {class: 'select2'})
+ = project_users_select_tag('issue[assignee_id]', placeholder: 'Select a user', class: 'custom-form-control', selected: @issue.assignee_id)
&nbsp;
= link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
.form-group
diff --git a/app/views/projects/issues/_head.html.haml b/app/views/projects/issues/_head.html.haml
index 36549aae7d3..0b7697622b0 100644
--- a/app/views/projects/issues/_head.html.haml
+++ b/app/views/projects/issues/_head.html.haml
@@ -1,4 +1,4 @@
-%ul.nav.nav-tabs.append-bottom-15
+%ul.nav.nav-tabs
= nav_link(controller: :issues) do
= link_to project_issues_path(@project), class: "tab" do
Browse Issues
@@ -17,10 +17,10 @@
%li.pull-right
.pull-right
- = form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'inline issue-search-form' do
+ = form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'pull-left issue-search-form' do
.append-right-10.hidden-xs.hidden-sm
- = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'form-control issue_search search-text-input' }
+ = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'form-control issue_search search-text-input input-mn-300' }
- if can? current_user, :write_issue, @project
- = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new", title: "New Issue", id: "new_issue_link" do
+ = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new pull-left", title: "New Issue", id: "new_issue_link" do
%i.icon-plus
New Issue
diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml
index 1bd93b774f1..3fc04c26cf2 100644
--- a/app/views/projects/issues/_issue.html.haml
+++ b/app/views/projects/issues/_issue.html.haml
@@ -38,10 +38,10 @@
.issue-actions
- if can? current_user, :modify_issue, issue
- if issue.closed?
- = link_to 'Reopen', project_issue_path(issue.project, issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-small grouped reopen_issue", remote: true
+ = link_to 'Reopen', project_issue_path(issue.project, issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-small btn-grouped reopen_issue", remote: true
- else
- = link_to 'Close', project_issue_path(issue.project, issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-small grouped close_issue", remote: true
- = link_to edit_project_issue_path(issue.project, issue), class: "btn btn-small edit-issue-link grouped" do
+ = link_to 'Close', project_issue_path(issue.project, issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-small btn-grouped close_issue", remote: true
+ = link_to edit_project_issue_path(issue.project, issue), class: "btn btn-small edit-issue-link btn-grouped" do
%i.icon-edit
Edit
diff --git a/app/views/projects/issues/_issue_context.html.haml b/app/views/projects/issues/_issue_context.html.haml
index 7ddf470b6a0..aae101cf40f 100644
--- a/app/views/projects/issues/_issue_context.html.haml
+++ b/app/views/projects/issues/_issue_context.html.haml
@@ -1,25 +1,22 @@
= form_for [@project, @issue], remote: true, html: {class: 'edit-issue inline-update'} do |f|
- Created by #{link_to_member(@project, issue.author)}&nbsp;
- - if issue.assignee
- \ and currently assigned to
+ %strong.append-right-10
+ Assignee:
- if can?(current_user, :modify_issue, @issue)
- = link_to profile_path(issue.assignee) do
- = image_tag(avatar_icon(issue.assignee.email), class: 'avatar avatar-inline s16 assignee') if issue.assignee
- = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Assign to user (none):" }, {class: 'select2'})
+ = project_users_select_tag('issue[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @issue.assignee_id)
- elsif issue.assignee
= link_to_member(@project, @issue.assignee)
+ - else
+ None
-
- .pull-right.hidden-sm
- - if issue.milestone
- - milestone = issue.milestone
- %cite.cgray Attached to milestone
-
+ .pull-right
+ %strong.append-right-10
+ Milestone:
- if can?(current_user, :modify_issue, @issue)
= f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone (none):" }, {class: 'select2 select2-compact'})
-
= hidden_field_tag :issue_context
= f.submit class: 'btn'
- elsif issue.milestone
= link_to issue.milestone.title, project_milestone_path
+ - else
+ None
diff --git a/app/views/projects/issues/_issues.html.haml b/app/views/projects/issues/_issues.html.haml
index e2ce26feac3..3b5e398c327 100644
--- a/app/views/projects/issues/_issues.html.haml
+++ b/app/views/projects/issues/_issues.html.haml
@@ -1,112 +1,72 @@
-.ui-box
- .title
+.append-bottom-10
+ .check-all-holder
= check_box_tag "check_all_issues", nil, false, class: "check_all_issues left"
- .clearfix
- .issues_bulk_update.hide
- = form_tag bulk_update_project_issues_path(@project), method: :post do
- %span Update selected issues with &nbsp;
- = select_tag('update[status]', options_for_select(['open', 'closed']), prompt: "Status")
- = select_tag('update[assignee_id]', bulk_update_assignee_options, prompt: "Assignee")
- = select_tag('update[milestone_id]', bulk_update_milestone_options, prompt: "Milestone")
- = hidden_field_tag 'update[issues_ids]', []
- = hidden_field_tag :status, params[:status]
- = button_tag "Save", class: "btn update_selected_issues btn-small btn-save"
- .issues-filters
- %span Filter by
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %i.icon-tags
- %span.light labels:
- - if params[:label_name].present?
- %strong= params[:label_name]
- - else
- Any
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(label_name: nil) do
- Any
- - issue_label_names.each do |label_name|
- %li
- = link_to project_filter_path(label_name: label_name) do
- %span{class: "label #{label_css_class(label_name)}"}
- %i.icon-tag
- = label_name
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %i.icon-user
- %span.light assignee:
- - if @assignee.present?
- %strong= @assignee.name
- - elsif params[:assignee_id] == "0"
- Unassigned
- - else
- Any
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(assignee_id: nil) do
- Any
- = link_to project_filter_path(assignee_id: 0) do
- Unassigned
- - @project.team.members.sort_by(&:name).each do |user|
- %li
- = link_to project_filter_path(assignee_id: user.id) do
- = image_tag avatar_icon(user.email), class: "avatar s16", alt: ''
- = user.name
+ .issues-filters
+ .dropdown.inline
+ %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
+ %i.icon-user
+ %span.light assignee:
+ - if @assignee.present?
+ %strong= @assignee.name
+ - elsif params[:assignee_id] == "0"
+ Unassigned
+ - else
+ Any
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(assignee_id: nil) do
+ Any
+ = link_to project_filter_path(assignee_id: 0) do
+ Unassigned
+ - @assignees.sort_by(&:name).each do |user|
+ %li
+ = link_to project_filter_path(assignee_id: user.id) do
+ = image_tag avatar_icon(user.email), class: "avatar s16", alt: ''
+ = user.name
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %i.icon-time
- %span.light milestone:
- - if @milestone.present?
- %strong= @milestone.title
- - elsif params[:milestone_id] == "0"
- None (backlog)
- - else
- Any
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(milestone_id: nil) do
- Any
- = link_to project_filter_path(milestone_id: 0) do
- None (backlog)
- - project_active_milestones.each do |milestone|
- %li
- = link_to project_filter_path(milestone_id: milestone.id) do
- %strong= milestone.title
- %small.light= milestone.expires_at
+ .dropdown.inline.prepend-left-10
+ %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
+ %i.icon-time
+ %span.light milestone:
+ - if @milestone.present?
+ %strong= @milestone.title
+ - elsif params[:milestone_id] == "0"
+ None (backlog)
+ - else
+ Any
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(milestone_id: nil) do
+ Any
+ = link_to project_filter_path(milestone_id: 0) do
+ None (backlog)
+ - project_active_milestones.each do |milestone|
+ %li
+ = link_to project_filter_path(milestone_id: milestone.id) do
+ %strong= milestone.title
+ %small.light= milestone.expires_at
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %span.light sort:
- - if @sort.present?
- = @sort
- - else
- Newest
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(sort: 'newest') do
- Newest
- = link_to project_filter_path(sort: 'oldest') do
- Oldest
- = link_to project_filter_path(sort: 'recently_updated') do
- Recently updated
- = link_to project_filter_path(sort: 'last_updated') do
- Last updated
- = link_to project_filter_path(sort: 'milestone_due_soon') do
- Milestone due soon
- = link_to project_filter_path(sort: 'milestone_due_later') do
- Milestone due later
+ .pull-right
+ = render 'shared/sort_dropdown'
+ .clearfix
+ .issues_bulk_update.hide
+ = form_tag bulk_update_project_issues_path(@project), method: :post do
+ = select_tag('update[status]', options_for_select(['Open', 'Closed']), prompt: "Status")
+ = project_users_select_tag('update[assignee_id]', placeholder: 'Assignee')
+ = select_tag('update[milestone_id]', bulk_update_milestone_options, prompt: "Milestone")
+ = hidden_field_tag 'update[issues_ids]', []
+ = hidden_field_tag :status, params[:status]
+ = button_tag "Update issues", class: "btn update_selected_issues btn-save"
+.ui-box
%ul.well-list.issues-list
= render @issues
- if @issues.blank?
%li
- %h4.nothing_here_message No issues to show
+ .nothing-here-block No issues to show
- if @issues.present?
.pull-right
diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml
index 71a89af61a2..5e899d412c6 100644
--- a/app/views/projects/issues/index.html.haml
+++ b/app/views/projects/issues/index.html.haml
@@ -1,6 +1,6 @@
= render "head"
.row
.col-md-3
- = render 'shared/project_filter', project_entities_path: project_issues_path(@project)
+ = render 'shared/project_filter', project_entities_path: project_issues_path(@project), labels: true
.col-md-9.issues-holder
= render "issues"
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index cd4a158e427..124eb53571d 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -1,26 +1,18 @@
%h3.page-title
Issue ##{@issue.iid}
- %small
- created #{time_ago_with_tooltip(@issue.created_at)}
-
- - if @issue.closed?
- %span.state-label.state-label-red Closed
- - else
- %span.state-label.state-label-green Open
-
%span.pull-right
- if can?(current_user, :write_issue, @project)
- = link_to new_project_issue_path(@project), class: "btn grouped", title: "New Issue", id: "new_issue_link" do
+ = link_to new_project_issue_path(@project), class: "btn btn-grouped", title: "New Issue", id: "new_issue_link" do
%i.icon-plus
New Issue
- if can?(current_user, :modify_issue, @issue)
- if @issue.closed?
- = link_to 'Reopen', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn grouped reopen_issue"
+ = link_to 'Reopen', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen"
- else
- = link_to 'Close', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn grouped close_issue", title: "Close Issue"
+ = link_to 'Close', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close", title: "Close Issue"
- = link_to edit_project_issue_path(@project, @issue), class: "btn grouped" do
+ = link_to edit_project_issue_path(@project, @issue), class: "btn btn-grouped" do
%i.icon-edit
Edit
@@ -37,26 +29,36 @@
= link_to project_milestone_path(@project, @issue.milestone) do
= @issue.milestone.title
-.issue-box
+.issue-box{ class: issue_box_class(@issue) }
+ .state
+ %span.state-label
+ - if @issue.closed?
+ Closed
+ - else
+ Open
+
+ %span.creator
+ Created by #{link_to_member(@project, @issue.author)} #{time_ago_with_tooltip(@issue.created_at)}
+
%h4.title
= gfm escape_once(@issue.title)
- .context
- %cite.cgray
- = render partial: 'issue_context', locals: { issue: @issue }
-
- if @issue.description.present?
.description
.wiki
= preserve do
= markdown @issue.description
+ .context
+ %cite.cgray
+ = render partial: 'issue_context', locals: { issue: @issue }
+
- content_for :note_actions do
- if can?(current_user, :modify_issue, @issue)
- if @issue.closed?
- = link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn grouped reopen_issue"
+ = link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen"
- else
- = link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn grouped close_issue", title: "Close Issue"
+ = link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close", title: "Close Issue"
.participants
%cite.cgray #{@issue.participants.count} participants
diff --git a/app/views/projects/issues/update.js.haml b/app/views/projects/issues/update.js.haml
index 59524e0f224..5199e9fc61f 100644
--- a/app/views/projects/issues/update.js.haml
+++ b/app/views/projects/issues/update.js.haml
@@ -3,10 +3,7 @@
:plain
$("##{dom_id(@issue)}").fadeOut();
- elsif params[:issue_context]
- $('.issue-box .context').html("#{escape_javascript(render partial: 'issue_context', locals: { issue: @issue })}");
$('.issue-box .context').effect('highlight');
- $('.select2').select2();
- $('.edit-issue.inline-update input[type="submit"]').hide();
- if @issue.milestone
$('.milestone-nav-link').replaceWith("<span class='milestone-nav-link'>| <span class='light'>Milestone</span> #{escape_javascript(link_to @issue.milestone.title, project_milestone_path(@issue.project, @issue.milestone))}</span>")
- else
diff --git a/app/views/projects/labels/index.html.haml b/app/views/projects/labels/index.html.haml
index a058d09a1ce..329cf9ceba8 100644
--- a/app/views/projects/labels/index.html.haml
+++ b/app/views/projects/labels/index.html.haml
@@ -7,4 +7,4 @@
- else
.light-well
- %h3.nothing_here_message Add first label to your issues or #{link_to 'generate', generate_project_labels_path(@project), method: :post} default set of labels
+ .nothing-here-block Add first label to your issues or #{link_to 'generate', generate_project_labels_path(@project), method: :post} default set of labels
diff --git a/app/views/projects/merge_requests/_form.html.haml b/app/views/projects/merge_requests/_form.html.haml
index 67cb5ccd72d..51fa29ddcbe 100644
--- a/app/views/projects/merge_requests/_form.html.haml
+++ b/app/views/projects/merge_requests/_form.html.haml
@@ -1,3 +1,7 @@
+- if @repository.contribution_guide && !@merge_request.persisted?
+ - contribution_guide_url = project_blob_path(@project, tree_join(@repository.root_ref, @repository.contribution_guide.name))
+ .alert.alert-info.col-sm-10.col-sm-offset-2
+ ="Please review the <strong>#{link_to "guidelines for contribution", contribution_guide_url}</strong> to this repository.".html_safe
= form_for [@project, @merge_request], html: { class: "merge-request-form form-horizontal" } do |f|
-if @merge_request.errors.any?
.alert.alert-danger
@@ -6,27 +10,30 @@
%li= msg
.merge-request-branches
- .row
- .col-md-5
+ .form-group
+ = label_tag nil, class: 'control-label' do
+ From
+ .col-sm-10
.clearfix
.pull-left
= f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project select2 span3', disabled: @merge_request.persisted? })
.pull-left
&nbsp;
- = f.select(:source_branch, @merge_request.source_project.repository.branch_names, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
- .mr_source_commit.prepend-top-10
- .col-md-2
- .merge-request-angle
- %i.icon-long-arrow-right
- .col-md-5
+ = f.select(:source_branch, @merge_request.source_branches, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
+ .mr_source_commit
+ %br
+ .form-group
+ = label_tag nil, class: 'control-label' do
+ To
+ .col-sm-10
.clearfix
.pull-left
- projects = @project.forked_from_project.nil? ? [@project] : [ @project,@project.forked_from_project]
- = f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace'), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
+ = f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace', f.object.target_project_id), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
.pull-left
&nbsp;
- = f.select(:target_branch, @target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
- .mr_target_commit.prepend-top-10
+ = f.select(:target_branch, @merge_request.target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
+ .mr_target_commit
%hr
.merge-request-form-info
@@ -47,7 +54,7 @@
%i.icon-user
Assign to
.col-sm-10
- = f.select(:assignee_id, assignee_options(@merge_request), { include_blank: "Select a user" }, {class: 'select2'})
+ = project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select a user', class: 'custom-form-control', selected: @merge_request.assignee_id)
&nbsp;
= link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
.form-group
@@ -90,6 +97,6 @@
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
});
$('.assign-to-me-link').on('click', function(e){
- $('#merge_request_assignee_id').val("#{current_user.id}").trigger("select2:updated");
+ $('#merge_request_assignee_id').val("#{current_user.id}").trigger("change");
e.preventDefault();
});
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index ff763bca307..980ac126742 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -10,14 +10,14 @@
%span.pull-right
- if merge_request.for_fork?
%span.light
- = "#{merge_request.source_project_path}"
- = "#{merge_request.source_branch}"
+ #{merge_request.source_project_namespace}:
+ = merge_request.source_branch
%i.icon-angle-right.light
- = "#{merge_request.target_branch}"
+ = merge_request.target_branch
- else
- = "#{merge_request.source_branch}"
+ = merge_request.source_branch
%i.icon-angle-right.light
- = "#{merge_request.target_branch}"
+ = merge_request.target_branch
.merge-request-info
- if merge_request.author
authored by #{link_to_member(merge_request.source_project, merge_request.author)}
diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml
index 42641765c5c..809b01918cf 100644
--- a/app/views/projects/merge_requests/_show.html.haml
+++ b/app/views/projects/merge_requests/_show.html.haml
@@ -2,7 +2,7 @@
= render "projects/merge_requests/show/mr_title"
= render "projects/merge_requests/show/how_to_merge"
= render "projects/merge_requests/show/mr_box"
- - if @merge_request.opened?
+ - if @merge_request.open?
- if @merge_request.source_branch_exists? && @merge_request.target_branch_exists?
= render "projects/merge_requests/show/mr_accept"
- else
@@ -12,7 +12,7 @@
= render "projects/merge_requests/show/commits"
- if @commits.present?
- %ul.nav.nav-tabs.append-bottom-10
+ %ul.nav.nav-tabs
%li.notes-tab{data: {action: 'notes'}}
= link_to project_merge_request_path(@project, @merge_request) do
%i.icon-comment
@@ -22,6 +22,13 @@
%i.icon-list-alt
Diff
+ - content_for :note_actions do
+ - if can?(current_user, :modify_merge_request, @merge_request)
+ - unless @merge_request.closed? || @merge_request.merged?
+ = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link", title: "Close merge request"
+ - if @merge_request.closed?
+ = link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link", title: "Close merge request"
+
.notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
= render "projects/notes/notes_with_form"
.diffs.tab-content
diff --git a/app/views/projects/merge_requests/branch_from.js.haml b/app/views/projects/merge_requests/branch_from.js.haml
index ec4d7f2121b..d3147188d1c 100644
--- a/app/views/projects/merge_requests/branch_from.js.haml
+++ b/app/views/projects/merge_requests/branch_from.js.haml
@@ -1,5 +1,5 @@
:plain
- $(".mr_source_commit").html("#{commit_to_html(@commit, @source_project)}");
+ $(".mr_source_commit").html("#{commit_to_html(@commit, @source_project, false)}");
var mrTitle = $('#merge_request_title');
if(mrTitle.val().length == 0) {
diff --git a/app/views/projects/merge_requests/branch_to.js.haml b/app/views/projects/merge_requests/branch_to.js.haml
index f4e2886ee44..f7ede0ded53 100644
--- a/app/views/projects/merge_requests/branch_to.js.haml
+++ b/app/views/projects/merge_requests/branch_to.js.haml
@@ -1,2 +1,2 @@
:plain
- $(".mr_target_commit").html("#{commit_to_html(@commit, @target_project)}");
+ $(".mr_target_commit").html("#{commit_to_html(@commit, @target_project, false)}");
diff --git a/app/views/projects/merge_requests/index.html.haml b/app/views/projects/merge_requests/index.html.haml
index d6d0cde85be..34faebf619c 100644
--- a/app/views/projects/merge_requests/index.html.haml
+++ b/app/views/projects/merge_requests/index.html.haml
@@ -5,67 +5,67 @@
%h3.page-title
Merge Requests
%span (#{@merge_requests.total_count})
-
-
+%hr
.row
.col-md-3
= render 'shared/project_filter', project_entities_path: project_merge_requests_path(@project)
.col-md-9
- .ui-box
- .title
- .mr-filters
- %span Filter by
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %i.icon-user
- %span.light assignee:
- - if @assignee.present?
- %strong= @assignee.name
- - elsif params[:assignee_id] == "0"
- Unassigned
- - else
- Any
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(assignee_id: nil) do
- Any
- = link_to project_filter_path(assignee_id: 0) do
- Unassigned
- - @project.team.members.sort_by(&:name).each do |user|
- %li
- = link_to project_filter_path(assignee_id: user.id) do
- = image_tag avatar_icon(user.email), class: "avatar s16", alt: ''
- = user.name
+ .mr-filters.append-bottom-10
+ .dropdown.inline
+ %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
+ %i.icon-user
+ %span.light assignee:
+ - if @assignee.present?
+ %strong= @assignee.name
+ - elsif params[:assignee_id] == "0"
+ Unassigned
+ - else
+ Any
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(assignee_id: nil) do
+ Any
+ = link_to project_filter_path(assignee_id: 0) do
+ Unassigned
+ - @assignees.sort_by(&:name).each do |user|
+ %li
+ = link_to project_filter_path(assignee_id: user.id) do
+ = image_tag avatar_icon(user.email), class: "avatar s16", alt: ''
+ = user.name
- .dropdown.inline.prepend-left-10
- %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
- %i.icon-time
- %span.light milestone:
- - if @milestone.present?
- %strong= @milestone.title
- - elsif params[:milestone_id] == "0"
- None (backlog)
- - else
- Any
- %b.caret
- %ul.dropdown-menu
- %li
- = link_to project_filter_path(milestone_id: nil) do
- Any
- = link_to project_filter_path(milestone_id: 0) do
- None (backlog)
- - project_active_milestones.each do |milestone|
- %li
- = link_to project_filter_path(milestone_id: milestone.id) do
- %strong= milestone.title
- %small.light= milestone.expires_at
+ .dropdown.inline.prepend-left-10
+ %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
+ %i.icon-time
+ %span.light milestone:
+ - if @milestone.present?
+ %strong= @milestone.title
+ - elsif params[:milestone_id] == "0"
+ None (backlog)
+ - else
+ Any
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(milestone_id: nil) do
+ Any
+ = link_to project_filter_path(milestone_id: 0) do
+ None (backlog)
+ - project_active_milestones.each do |milestone|
+ %li
+ = link_to project_filter_path(milestone_id: milestone.id) do
+ %strong= milestone.title
+ %small.light= milestone.expires_at
+
+ .pull-right
+ = render 'shared/sort_dropdown'
+ .ui-box
%ul.well-list.mr-list
= render @merge_requests
- if @merge_requests.blank?
%li
- %h4.nothing_here_message No merge requests to show
+ .nothing-here-block No merge requests to show
- if @merge_requests.present?
.pull-right
%span.cgray.pull-right #{@merge_requests.total_count} merge requests for this filter
diff --git a/app/views/projects/merge_requests/show/_commits.html.haml b/app/views/projects/merge_requests/show/_commits.html.haml
index 7b0e67053a5..9b4271bbffc 100644
--- a/app/views/projects/merge_requests/show/_commits.html.haml
+++ b/app/views/projects/merge_requests/show/_commits.html.haml
@@ -12,9 +12,16 @@
8 of #{@commits.count} commits displayed.
%strong
%a.show-all-commits Click here to show all
- %ul.all-commits.hide.well-list
- - @commits.each do |commit|
- = render "projects/commits/commit", commit: commit, project: @merge_request.source_project
+ - if @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
+ %ul.all-commits.hide.well-list
+ - @commits.first(MergeRequestDiff::COMMITS_SAFE_SIZE).each do |commit|
+ = render "projects/commits/inline_commit", commit: commit, project: @merge_request.source_project
+ %li
+ other #{@commits.size - MergeRequestDiff::COMMITS_SAFE_SIZE} commits hidden top prevent performance issues.
+ - else
+ %ul.all-commits.hide.well-list
+ - @commits.each do |commit|
+ = render "projects/commits/inline_commit", commit: commit, project: @merge_request.source_project
- else
%ul.well-list
@@ -22,7 +29,7 @@
= render "projects/commits/commit", commit: commit, project: @merge_request.source_project
- else
- %h4.nothing_here_message
+ .nothing-here-block
Nothing to merge from
%span.label-branch #{@merge_request.source_branch}
to
diff --git a/app/views/projects/merge_requests/show/_context.html.haml b/app/views/projects/merge_requests/show/_context.html.haml
new file mode 100644
index 00000000000..2bd850426a9
--- /dev/null
+++ b/app/views/projects/merge_requests/show/_context.html.haml
@@ -0,0 +1,22 @@
+= form_for [@project, @merge_request], remote: true, html: {class: 'edit-merge_request inline-update'} do |f|
+ %strong.append-right-10
+ Assignee:
+
+ - if can?(current_user, :modify_merge_request, @merge_request)
+ = project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @merge_request.assignee_id)
+ - elsif merge_request.assignee
+ = link_to_member(@project, @merge_request.assignee)
+ - else
+ None
+
+ .pull-right
+ %strong.append-right-10
+ Milestone:
+ - if can?(current_user, :modify_merge_request, @merge_request)
+ = f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone (none):" }, {class: 'select2 select2-compact'})
+ = hidden_field_tag :merge_request_context
+ = f.submit class: 'btn'
+ - elsif merge_request.milestone
+ = link_to merge_request.milestone.title, project_milestone_path
+ - else
+ None
diff --git a/app/views/projects/merge_requests/show/_diffs.html.haml b/app/views/projects/merge_requests/show/_diffs.html.haml
index 25f63804858..7c4f43d2d80 100644
--- a/app/views/projects/merge_requests/show/_diffs.html.haml
+++ b/app/views/projects/merge_requests/show/_diffs.html.haml
@@ -1,10 +1,12 @@
-- if @merge_request.valid_diffs?
+- if @merge_request_diff.collected?
= render "projects/commits/diffs", diffs: @merge_request.diffs, project: @merge_request.source_project
-- elsif @merge_request.broken_diffs?
- %h4.nothing_here_message
- Can't load diff.
- You can
- = link_to "download it", project_merge_request_path(@merge_request.source_project, @merge_request), format: :diff, class: "vlink"
- instead.
+- elsif @merge_request_diff.empty?
+ .nothing-here-block Nothing to merge from #{@merge_request.source_branch} into #{@merge_request.target_branch}
- else
- %h4.nothing_here_message Nothing to merge
+ .bs-callout.bs-callout-warning
+ %h4
+ Diff for this comparison is extremely large.
+ %p
+ You can
+ = link_to "download it", project_merge_request_path(@merge_request.source_project, @merge_request, format: :diff), class: "vlink"
+ instead.
diff --git a/app/views/projects/merge_requests/show/_mr_accept.html.haml b/app/views/projects/merge_requests/show/_mr_accept.html.haml
index d210d4667fd..a9cbe43fb16 100644
--- a/app/views/projects/merge_requests/show/_mr_accept.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_accept.html.haml
@@ -13,7 +13,21 @@
If you still want to do it manually -
%strong
= link_to "click here", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
- for instructions
+ for instructions.
+
+ %br
+ If you want to modify merge commit message -
+ %strong
+ = link_to "click here", "#", class: "modify-merge-commit-link js-toggle-visibility-link", title: "Modify merge commit message"
+
+ .js-toggle-visibility-container.hide
+ .form-group
+ = label_tag :merge_commit_message, "Commit message", class: 'control-label'
+ .col-sm-10
+ = text_area_tag :merge_commit_message, @merge_request.merge_commit_message, class: "form-control js-gfm-input", rows: 14, required: true
+ %p.hint
+ The recommended maximum line length is 52 characters for the first line and 72 characters for all following lines.
+
.accept-group
.pull-left
= f.submit "Accept Merge Request", class: "btn btn-create accept_merge_request"
@@ -41,15 +55,15 @@
.automerge_widget.unchecked
.bs-callout.bs-callout-warning
%strong
- %i.icon-refresh.icon-spin
+ %i.icon-spinner.icon-spin
Checking for ability to automatically merge…
.automerge_widget.already_cannot_be_merged.hide
.bs-callout.bs-callout-info
- %strong This merge request already can not be merged. Try to reload page.
+ %strong This merge request can not be merged. Try to reload the page.
.merge-in-progress.hide
.bs-callout.bs-callout-success
- %i.icon-refresh.icon-spin
+ %i.icon-spinner.icon-spin
&nbsp;
Merge is in progress. Please wait. Page will be automatically reloaded. &nbsp;
diff --git a/app/views/projects/merge_requests/show/_mr_box.html.haml b/app/views/projects/merge_requests/show/_mr_box.html.haml
index b4f648ab197..38db4363ade 100644
--- a/app/views/projects/merge_requests/show/_mr_box.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_box.html.haml
@@ -1,18 +1,18 @@
-.issue-box
- %h4.title
- = gfm escape_once(@merge_request.title)
+.issue-box{ class: issue_box_class(@merge_request) }
+ .state
+ %span.state-label
+ - if @merge_request.merged?
+ Merged
+ - elsif @merge_request.closed?
+ Closed
+ - else
+ Open
- .context
- %cite.cgray
- Created by #{link_to_member(@project, @merge_request.author)}.
- - if @merge_request.assignee
- Currently assigned to #{link_to_member(@project, @merge_request.assignee)}.
- - if @merge_request.milestone
- .pull-right
- - milestone = @merge_request.milestone
- %cite.cgray Attached to milestone
- %strong= link_to_gfm truncate(milestone.title, length: 20), project_milestone_path(milestone.project, milestone)
+ %span.creator
+ Created by #{link_to_member(@project, @merge_request.author)} #{time_ago_with_tooltip(@merge_request.created_at)}
+ %h4.title
+ = gfm escape_once(@merge_request.title)
- if @merge_request.description.present?
.description
@@ -20,22 +20,26 @@
= preserve do
= markdown @merge_request.description
- - if @merge_request.closed?
- .description.alert-danger
- %span
- %i.icon-remove
- Closed by #{link_to_member(@project, @merge_request.closed_event.author)}
- #{time_ago_with_tooltip(@merge_request.closed_event.created_at)}.
- - if @merge_request.merged?
- .description.alert-success
- %span
- %i.icon-ok
- Merged by #{link_to_member(@project, @merge_request.merge_event.author)}
- #{time_ago_with_tooltip(@merge_request.merge_event.created_at)}.
- - if !@closes_issues.empty? && @merge_request.opened?
- .description.alert-info
- %span
- %i.icon-ok
- Accepting this merge request will close #{@closes_issues.size == 1 ? 'issue' : 'issues'}
- = succeed '.' do
- != gfm(@closes_issues.map { |i| "##{i.iid}" }.to_sentence)
+ .context
+ %cite.cgray
+ = render partial: 'projects/merge_requests/show/context', locals: { merge_request: @merge_request }
+
+- if @merge_request.closed?
+ .alert.alert-info
+ %span
+ %i.icon-remove
+ Closed by #{link_to_member(@project, @merge_request.closed_event.author)}
+ #{time_ago_with_tooltip(@merge_request.closed_event.created_at)}.
+- if @merge_request.merged?
+ .alert.alert-info
+ %span
+ %i.icon-ok
+ Merged by #{link_to_member(@project, @merge_request.merge_event.author)}
+ #{time_ago_with_tooltip(@merge_request.merge_event.created_at)}.
+- if !@closes_issues.empty? && @merge_request.open?
+ .alert.alert-info.alert-info
+ %span
+ %i.icon-ok
+ Accepting this merge request will close #{@closes_issues.size == 1 ? 'issue' : 'issues'}
+ = succeed '.' do
+ != gfm(@closes_issues.map { |i| "##{i.iid}" }.to_sentence)
diff --git a/app/views/projects/merge_requests/show/_mr_ci.html.haml b/app/views/projects/merge_requests/show/_mr_ci.html.haml
index 2e923ec5f35..915d24dd021 100644
--- a/app/views/projects/merge_requests/show/_mr_ci.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_ci.html.haml
@@ -25,7 +25,7 @@
.ci_widget
.alert.alert-warning
%strong
- %i.icon-refresh
+ %i.icon-spinner
Checking for CI status for #{@merge_request.last_commit_short_sha}
.ci_widget.ci-error{style: "display:none"}
diff --git a/app/views/projects/merge_requests/show/_mr_title.html.haml b/app/views/projects/merge_requests/show/_mr_title.html.haml
index 08a3fdf869a..7676fc137c7 100644
--- a/app/views/projects/merge_requests/show/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_title.html.haml
@@ -1,26 +1,11 @@
%h3.page-title
= "Merge Request ##{@merge_request.iid}"
- %small
- created #{time_ago_with_tooltip(@merge_request.created_at)}
-
- - if @merge_request.merged?
- %span.state-label.state-label-green
- %i.icon-ok
- Merged
- - elsif @merge_request.closed?
- %span.state-label.state-label-red
- Closed
- - else
- %span.state-label.state-label-green
- Open
-
-
%span.pull-right
- if can?(current_user, :modify_merge_request, @merge_request)
- - if @merge_request.opened?
- .left.btn-group
- %a.btn.grouped.dropdown-toggle{ data: {toggle: :dropdown} }
+ - if @merge_request.open?
+ .btn-group.pull-left
+ %a.btn.btn-grouped.dropdown-toggle{ data: {toggle: :dropdown} }
%i.icon-download-alt
Download as
%span.caret
@@ -28,13 +13,15 @@
%li= link_to "Email Patches", project_merge_request_path(@project, @merge_request, format: :patch)
%li= link_to "Plain Diff", project_merge_request_path(@project, @merge_request, format: :diff)
- = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: { state_event: :close }), method: :put, class: "btn grouped btn-close", title: "Close merge request"
+ = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: { state_event: :close }), method: :put, class: "btn btn-grouped btn-close", title: "Close merge request"
- = link_to edit_project_merge_request_path(@project, @merge_request), class: "btn grouped", id:"edit_merge_request" do
+ = link_to edit_project_merge_request_path(@project, @merge_request), class: "btn btn-grouped", id:"edit_merge_request" do
%i.icon-edit
Edit
+ - if @merge_request.closed?
+ = link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link", title: "Close merge request"
-.votes-holder
+.votes-holder.hidden-sm.hidden-xs
#votes= render 'votes/votes_block', votable: @merge_request
.back-link
diff --git a/app/views/projects/merge_requests/update.js.haml b/app/views/projects/merge_requests/update.js.haml
new file mode 100644
index 00000000000..6452cc6382d
--- /dev/null
+++ b/app/views/projects/merge_requests/update.js.haml
@@ -0,0 +1,2 @@
+- if params[:merge_request_context]
+ $('.issue-box .context').effect('highlight');
diff --git a/app/views/projects/merge_requests/update_branches.js.haml b/app/views/projects/merge_requests/update_branches.js.haml
index 6a21551e811..ca21b3bc0de 100644
--- a/app/views/projects/merge_requests/update_branches.js.haml
+++ b/app/views/projects/merge_requests/update_branches.js.haml
@@ -1,5 +1,9 @@
:plain
$(".target_branch").html("#{escape_javascript(options_for_select(@target_branches))}");
- $(".target_branch").trigger("select2:updated");
+
+ $('select.target_branch').select2({
+ width: 'resolve',
+ dropdownAutoWidth: true
+ });
+
$(".mr_target_commit").html("");
- $(".target_branch").trigger("change");
diff --git a/app/views/projects/milestones/_issues.html.haml b/app/views/projects/milestones/_issues.html.haml
index 21939ad0132..c277dcc5364 100644
--- a/app/views/projects/milestones/_issues.html.haml
+++ b/app/views/projects/milestones/_issues.html.haml
@@ -4,7 +4,7 @@
- issues.each do |issue|
%li
= link_to [@project, issue] do
- %span.badge{class: issue.closed? ? 'badge-important' : 'badge-info'} ##{issue.iid}
+ %span.label{class: issue.closed? ? 'label-danger' : 'label-info'} ##{issue.iid}
= link_to_gfm truncate(issue.title, length: 40), [@project, issue]
- if issue.assignee
.pull-right
diff --git a/app/views/projects/milestones/_merge_request.html.haml b/app/views/projects/milestones/_merge_request.html.haml
index 8e30a42a608..faa35a25f2f 100644
--- a/app/views/projects/milestones/_merge_request.html.haml
+++ b/app/views/projects/milestones/_merge_request.html.haml
@@ -1,5 +1,5 @@
%li
= link_to [@project, merge_request] do
- %span.badge.badge-info ##{merge_request.iid}
+ %span.label.label-info ##{merge_request.iid}
&ndash;
= link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
diff --git a/app/views/projects/milestones/_milestone.html.haml b/app/views/projects/milestones/_milestone.html.haml
index 4dec3838d97..5579659d60e 100644
--- a/app/views/projects/milestones/_milestone.html.haml
+++ b/app/views/projects/milestones/_milestone.html.haml
@@ -1,7 +1,7 @@
%li{class: "milestone milestone-#{milestone.closed? ? 'closed' : 'open'}", id: dom_id(milestone) }
.pull-right
- if can?(current_user, :admin_milestone, milestone.project) and milestone.active?
- = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn btn-small edit-milestone-link grouped" do
+ = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn btn-small edit-milestone-link btn-grouped" do
%i.icon-edit
Edit
= link_to 'Close Milestone', project_milestone_path(@project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-small btn-remove"
diff --git a/app/views/projects/milestones/index.html.haml b/app/views/projects/milestones/index.html.haml
index 6cfe4d28778..3537650ad43 100644
--- a/app/views/projects/milestones/index.html.haml
+++ b/app/views/projects/milestones/index.html.haml
@@ -26,6 +26,6 @@
- if @milestones.blank?
%li
- %h3.nothing_here_message No milestones to show
+ .nothing-here-block No milestones to show
= paginate @milestones, theme: "gitlab"
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index e7c3785c056..06cf9946784 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -3,21 +3,15 @@
Milestone ##{@milestone.iid}
%small
= @milestone.expires_at
- - if @milestone.closed?
- %span.state-label.state-label-red Closed
- - elsif @milestone.expired?
- %span.state-label.state-label-red Expired
- - else
- %span.state-label.state-label-green Open
.pull-right
- if can?(current_user, :admin_milestone, @project)
- = link_to edit_project_milestone_path(@project, @milestone), class: "btn grouped" do
+ = link_to edit_project_milestone_path(@project, @milestone), class: "btn btn-grouped" do
%i.icon-edit
Edit
- if @milestone.active?
- = link_to 'Close Milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-remove grouped"
+ = link_to 'Close Milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-remove btn-grouped"
- else
- = link_to 'Reopen Milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn grouped"
+ = link_to 'Reopen Milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-grouped"
- if @milestone.issues.any? && @milestone.can_be_closed?
.alert.alert-success
@@ -28,7 +22,16 @@
&larr; To milestones list
-.issue-box
+.issue-box{ class: issue_box_class(@milestone) }
+ .state
+ %span.state-label
+ - if @milestone.closed?
+ Closed
+ - elsif @milestone.expired?
+ Expired
+ - else
+ Open
+
%h4.title
= gfm escape_once(@milestone.title)
@@ -42,14 +45,13 @@
.progress.progress-info
.progress-bar{style: "width: #{@milestone.percent_complete}%;"}
-
- if @milestone.description.present?
.description
- = preserve do
- = markdown @milestone.description
-
+ .wiki
+ = preserve do
+ = markdown @milestone.description
-%ul.nav.nav-tabs.append-bottom-10
+%ul.nav.nav-tabs
%li.active
= link_to '#tab-issues', 'data-toggle' => 'tab' do
Issues
@@ -64,10 +66,10 @@
%span.badge= @users.count
.pull-right
- = link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn btn-small grouped", title: "New Issue" do
+ = link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn btn-small btn-grouped", title: "New Issue" do
%i.icon-plus
New Issue
- = link_to 'Browse Issues', project_issues_path(@milestone.project, milestone_id: @milestone.id), class: "btn btn-small edit-milestone-link grouped"
+ = link_to 'Browse Issues', project_issues_path(@milestone.project, milestone_id: @milestone.id), class: "btn btn-small edit-milestone-link btn-grouped"
.tab-content
.tab-pane.active#tab-issues
diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml
index 492f77341f7..da0cfa84c2d 100644
--- a/app/views/projects/network/show.html.haml
+++ b/app/views/projects/network/show.html.haml
@@ -3,7 +3,7 @@
.tip
You can move around the graph by using the arrow keys.
.network-graph
- .loading.loading-gray
+ = spinner
:javascript
new Network({
diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml
index f21cef6f2e3..9ee54fef062 100644
--- a/app/views/projects/new.html.haml
+++ b/app/views/projects/new.html.haml
@@ -62,6 +62,7 @@
.save-project-loader.hide
%center
- = image_tag "ajax_loader.gif"
- %h3 Creating project &amp; repository.
+ %h2
+ %i.icon-spinner.icon-spin
+ Creating project &amp; repository.
%p Please wait a moment, this page will automatically refresh when ready.
diff --git a/app/views/projects/new_tree/show.html.haml b/app/views/projects/new_tree/show.html.haml
index 078a4b80d0d..9d7c7afbeac 100644
--- a/app/views/projects/new_tree/show.html.haml
+++ b/app/views/projects/new_tree/show.html.haml
@@ -15,6 +15,12 @@
%span= @ref
.form-group.commit_message-group
+ = label_tag :encoding, class: "control-label" do
+ Encoding
+ .col-sm-10
+ = select_tag :encoding, options_for_select([ "base64", "text" ], "text"), class: 'form-control'
+
+ .form-group.commit_message-group
= label_tag 'commit_message', class: "control-label" do
Commit message
.col-sm-10
diff --git a/app/views/projects/notes/_discussion.html.haml b/app/views/projects/notes/_discussion.html.haml
index ee65ae1e2f5..9b1f4d77587 100644
--- a/app/views/projects/notes/_discussion.html.haml
+++ b/app/views/projects/notes/_discussion.html.haml
@@ -36,21 +36,17 @@
.discussion-body
- if note.for_diff_line?
- if note.active?
- .content
- .file= render "projects/notes/discussion_diff", discussion_notes: discussion_notes, note: note
+ = render "projects/notes/discussion_diff", discussion_notes: discussion_notes, note: note
- else
= link_to 'show outdated discussion', '#', class: 'js-show-outdated-discussion'
%div.hide.outdated-discussion
- .content
- .notes{ rel: discussion_notes.first.discussion_id }
- = render discussion_notes
-
+ .notes{ rel: discussion_notes.first.discussion_id }
+ = render discussion_notes
- else
- .content
- .notes{ rel: discussion_notes.first.discussion_id }
- = render discussion_notes
- = render "projects/notes/discussion_reply_button", note: discussion_notes.first
+ .notes{ rel: discussion_notes.first.discussion_id }
+ = render discussion_notes
+ = render "projects/notes/discussion_reply_button", note: discussion_notes.first
-# will be shown when the other one is hidden
.discussion-hidden.content.hide
@@ -59,4 +55,3 @@
= link_to "javascript:;", class: "js-details-target js-toggler-target" do
%i.icon-eye-open
Show
-
diff --git a/app/views/projects/notes/_discussion_diff.html.haml b/app/views/projects/notes/_discussion_diff.html.haml
index c3f41a1b6b5..687fac04973 100644
--- a/app/views/projects/notes/_discussion_diff.html.haml
+++ b/app/views/projects/notes/_discussion_diff.html.haml
@@ -1,24 +1,25 @@
- diff = note.diff
-.header
- - if diff.deleted_file
- %span= diff.old_path
- - else
- %span= diff.new_path
- - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
- %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
- %br/
-.content
- %table
- - each_diff_line_near(diff, note.diff_file_index, note.line_code) do |line, type, line_code, line_new, line_old|
- %tr.line_holder{ id: line_code }
- - if type == "match"
- %td.old_line= "..."
- %td.new_line= "..."
- %td.line_content.matched= line
- - else
- %td.old_line= raw(type == "new" ? "&nbsp;" : line_old)
- %td.new_line= raw(type == "old" ? "&nbsp;" : line_new)
- %td.line_content{class: "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw "#{line} &nbsp;"
+.diff-file
+ .diff-header
+ - if diff.deleted_file
+ %span= diff.old_path
+ - else
+ %span= diff.new_path
+ - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
+ %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
+ %br/
+ .diff-content
+ %table
+ - each_diff_line_near(diff, note.diff_file_index, note.line_code) do |line, type, line_code, line_new, line_old|
+ %tr.line_holder{ id: line_code }
+ - if type == "match"
+ %td.old_line= "..."
+ %td.new_line= "..."
+ %td.line_content.matched= line
+ - else
+ %td.old_line= raw(type == "new" ? "&nbsp;" : line_old)
+ %td.new_line= raw(type == "old" ? "&nbsp;" : line_new)
+ %td.line_content{class: "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw "#{line} &nbsp;"
- - if line_code == note.line_code
- = render "projects/notes/diff_notes_with_reply", notes: discussion_notes
+ - if line_code == note.line_code
+ = render "projects/notes/diff_notes_with_reply", notes: discussion_notes
diff --git a/app/views/projects/notes/_form.html.haml b/app/views/projects/notes/_form.html.haml
index bcaedc8bd7c..3db551e993b 100644
--- a/app/views/projects/notes/_form.html.haml
+++ b/app/views/projects/notes/_form.html.haml
@@ -22,7 +22,7 @@
.note-form-actions
.buttons
- = f.submit 'Add Comment', class: "btn comment-btn grouped js-comment-button"
+ = f.submit 'Add Comment', class: "btn comment-btn btn-grouped js-comment-button"
= yield(:note_actions)
%a.btn.grouped.js-close-discussion-note-form Cancel
diff --git a/app/views/projects/notes/_note.html.haml b/app/views/projects/notes/_note.html.haml
index be9c6ca79bb..6a67f5242b2 100644
--- a/app/views/projects/notes/_note.html.haml
+++ b/app/views/projects/notes/_note.html.haml
@@ -31,7 +31,7 @@
.note-body
.note-text
= preserve do
- = markdown(note.note)
+ = markdown(note.note, {no_header_anchors: true})
.note-edit-form
= form_for note, url: project_note_path(@project, note), method: :put, remote: true, authenticity_token: true do |f|
diff --git a/app/views/projects/protected_branches/index.html.haml b/app/views/projects/protected_branches/index.html.haml
index e0d058de79e..8b100766e97 100644
--- a/app/views/projects/protected_branches/index.html.haml
+++ b/app/views/projects/protected_branches/index.html.haml
@@ -3,27 +3,27 @@
.col-md-3
= render "projects/branches/filter"
.col-md-9
- .alert.alert-info
+ .bs-callout.bs-callout-info
%p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}.
%p This ability allows:
%ul
%li keep stable branches secured
%li forced code review before merge to protected branches
- %p Read more about project permissions #{link_to "here", help_permissions_path, class: "underlined_link"}
+ %p Read more about project permissions #{link_to "here", help_permissions_path, class: "underlined-link"}
- if can? current_user, :admin_project, @project
- = form_for [@project, @protected_branch] do |f|
+ = form_for [@project, @protected_branch], html: { class: 'form-horizontal' } do |f|
-if @protected_branch.errors.any?
.alert.alert-danger
%ul
- @protected_branch.errors.full_messages.each do |msg|
%li= msg
- .entry.clearfix
- = f.label :name, "Branch"
- .col-md-3
- = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "select2 span3"})
- &nbsp;
+ .form-group
+ = f.label :name, "Branch", class: 'control-label'
+ .col-sm-10
+ = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "select2"})
+ .form-actions
= f.submit 'Protect', class: "btn-create btn"
- unless @branches.empty?
%h5 Already Protected:
diff --git a/app/views/projects/repositories/_download_archive.html.haml b/app/views/projects/repositories/_download_archive.html.haml
index b03feded0a7..88c1cfa28e0 100644
--- a/app/views/projects/repositories/_download_archive.html.haml
+++ b/app/views/projects/repositories/_download_archive.html.haml
@@ -3,7 +3,7 @@
- split_button = split_button || false
- if split_button == true
%span.btn-group{class: btn_class}
- = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn' do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn', rel: 'nofollow' do
%i.icon-download-alt
%span Download zip
%a.btn.dropdown-toggle{ 'data-toggle' => 'dropdown' }
@@ -12,26 +12,26 @@
Select Archive Format
%ul.dropdown-menu{ role: 'menu' }
%li
- = link_to archive_project_repository_path(@project, ref: ref, format: 'zip') do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), rel: 'nofollow' do
%i.icon-download-alt
%span Download zip
%li
- = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz') do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz'), rel: 'nofollow' do
%i.icon-download-alt
%span Download tar.gz
%li
- = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.bz2') do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.bz2'), rel: 'nofollow' do
%i.icon-download-alt
%span Download tar.bz2
%li
- = link_to archive_project_repository_path(@project, ref: ref, format: 'tar') do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'tar'), rel: 'nofollow' do
%i.icon-download-alt
%span Download tar
- else
%span.btn-group{class: btn_class}
- = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn' do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn', rel: 'nofollow' do
%i.icon-download-alt
%span zip
- = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz'), class: 'btn' do
+ = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz'), class: 'btn', rel: 'nofollow' do
%i.icon-download-alt
%span tar.gz \ No newline at end of file
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index 59075abf984..8a1e1d3354b 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -5,7 +5,7 @@
= render "events/event_last_push", event: @last_push
= render 'shared/event_filter'
.content_list
- .loading.hide
+ = spinner
.col-md-3.project-side.hidden-sm
.clearfix
- if @project.archived?
@@ -51,7 +51,7 @@
%p
%span.light Owned by
- if @project.group
- #{link_to @project.group.name, @project.group} Group
+ #{link_to @project.group.name, @project.group} group
- else
#{link_to @project.owner_name, @project.owner}
diff --git a/app/views/projects/snippets/_blob.html.haml b/app/views/projects/snippets/_blob.html.haml
index f14a2bd4ec0..af326a1a99a 100644
--- a/app/views/projects/snippets/_blob.html.haml
+++ b/app/views/projects/snippets/_blob.html.haml
@@ -6,10 +6,5 @@
.btn-group.tree-btn-group.pull-right
- if can?(current_user, :admin_project_snippet, @project) || @snippet.author == current_user
= link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-tiny", title: 'Edit Snippet'
- = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank"
- .file-content.code
- - unless @snippet.content.empty?
- %div{class: user_color_scheme_class}
- = raw @snippet.colorize(formatter: :gitlab)
- - else
- %p.nothing_here_message Empty file
+ = link_to "Raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank"
+ = render 'snippets/blob_content'
diff --git a/app/views/projects/snippets/_snippet.html.haml b/app/views/projects/snippets/_snippet.html.haml
index ddd9645ee51..b2c35edc44c 100644
--- a/app/views/projects/snippets/_snippet.html.haml
+++ b/app/views/projects/snippets/_snippet.html.haml
@@ -5,13 +5,6 @@
%span.cgray.monospace.tiny.pull-right
= snippet.file_name
- %small.pull-right.cgray
- Expires:
- - if snippet.expires_at
- = snippet.expires_at.to_date.to_s(:short)
- - else
- Never
-
.snippet-info
= "##{snippet.id}"
%span
diff --git a/app/views/projects/snippets/index.html.haml b/app/views/projects/snippets/index.html.haml
index c40f63d05b3..e60f9a44322 100644
--- a/app/views/projects/snippets/index.html.haml
+++ b/app/views/projects/snippets/index.html.haml
@@ -12,4 +12,4 @@
= render partial: "projects/snippets/snippet", collection: @snippets
- if @snippets.empty?
%li
- %h3.nothing_here_message Nothing here.
+ .nothing-here-block Nothing here.
diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml
new file mode 100644
index 00000000000..6629e47ad38
--- /dev/null
+++ b/app/views/projects/tags/_tag.html.haml
@@ -0,0 +1,22 @@
+- commit = @repository.commit(tag.target)
+%li
+ %h4
+ = link_to project_commits_path(@project, tag.name), class: "" do
+ %i.icon-tag
+ = tag.name
+ .pull-right
+ %small.cdark
+ %i.icon-calendar
+ #{time_ago_with_tooltip(commit.committed_date)}
+ %p.prepend-left-20
+ = link_to commit.short_id(8), project_commit_path(@project, commit), class: "monospace"
+ &ndash;
+ = link_to_gfm truncate(commit.title, length: 70), project_commit_path(@project, commit.id), class: "cdark"
+
+ %span.pull-right
+ - if can? current_user, :download_code, @project
+ = render 'projects/repositories/download_archive', ref: tag.name, btn_class: 'btn-grouped btn-group-small'
+ - if can?(current_user, :admin_project, @project)
+ = link_to project_tag_path(@project, tag.name), class: 'btn btn-small remove-row grouped', method: :delete, data: { confirm: 'Removed tag cannot be restored. Are you sure?'}, remote: true do
+ %i.icon-trash
+
diff --git a/app/views/projects/tags/index.html.haml b/app/views/projects/tags/index.html.haml
index c88e42a1073..53f3e67ff2c 100644
--- a/app/views/projects/tags/index.html.haml
+++ b/app/views/projects/tags/index.html.haml
@@ -13,34 +13,12 @@
- unless @tags.empty?
%ul.bordered-list
- @tags.each do |tag|
- - commit = Commit.new(Gitlab::Git::Commit.new(tag.commit))
- %li
- %h4
- = link_to project_commits_path(@project, tag.name), class: "" do
- %i.icon-tag
- = tag.name
- %small
- = truncate(tag.message || '', length: 70)
- .pull-right
- %small.cdark
- %i.icon-calendar
- #{time_ago_with_tooltip(commit.committed_date)}
- %p.prepend-left-20
- = link_to commit.short_id(8), project_commit_path(@project, commit), class: "monospace"
- &ndash;
- = link_to_gfm truncate(commit.title, length: 70), project_commit_path(@project, commit.id), class: "cdark"
-
- %span.pull-right
- - if can? current_user, :download_code, @project
- = render 'projects/repositories/download_archive', ref: tag.name, btn_class: 'grouped btn-group-small'
- - if can?(current_user, :admin_project, @project)
- = link_to project_tag_path(@project, tag.name), class: 'btn btn-small remove-row grouped', method: :delete, data: { confirm: 'Removed tag cannot be restored. Are you sure?'}, remote: true do
- %i.icon-trash
+ = render 'tag', tag: tag
= paginate @tags, theme: 'gitlab'
- else
- %h3.nothing_here_message
+ .nothing-here-block
Repository has no tags yet.
%br
%small
diff --git a/app/views/projects/team_members/_group_members.html.haml b/app/views/projects/team_members/_group_members.html.haml
index 68f08006854..eceec6627b9 100644
--- a/app/views/projects/team_members/_group_members.html.haml
+++ b/app/views/projects/team_members/_group_members.html.haml
@@ -1,10 +1,14 @@
+- group_users_count = @group.users_groups.count
.ui-box
.title
%strong #{@group.name}
- group members (#{@group.users_groups.count})
+ group members (#{group_users_count})
.pull-right
= link_to members_group_path(@group), class: 'btn btn-small' do
%i.icon-edit
%ul.well-list
- - @group.users_groups.order('group_access DESC').each do |member|
+ - @group.users_groups.order('group_access DESC').limit(20).each do |member|
= render 'users_groups/users_group', member: member, show_controls: false
+ - if group_users_count > 20
+ %li
+ and #{group_users_count - 20} more. For full list visit #{link_to 'group members page', members_group_path(@group)}
diff --git a/app/views/projects/team_members/index.html.haml b/app/views/projects/team_members/index.html.haml
index acbe82919f1..6eccaafe3de 100644
--- a/app/views/projects/team_members/index.html.haml
+++ b/app/views/projects/team_members/index.html.haml
@@ -3,9 +3,9 @@
- if can? current_user, :admin_team_member, @project
%span.pull-right
- = link_to new_project_team_member_path(@project), class: "btn btn-new grouped", title: "New project member" do
+ = link_to new_project_team_member_path(@project), class: "btn btn-new btn-grouped", title: "New project member" do
New project member
- = link_to import_project_team_members_path(@project), class: "btn grouped", title: "Import members from another project" do
+ = link_to import_project_team_members_path(@project), class: "btn btn-grouped", title: "Import members from another project" do
Import members
%p.light
diff --git a/app/views/projects/tree/_blob_item.html.haml b/app/views/projects/tree/_blob_item.html.haml
index 92dfd7537ca..6fee604b554 100644
--- a/app/views/projects/tree/_blob_item.html.haml
+++ b/app/views/projects/tree/_blob_item.html.haml
@@ -4,7 +4,5 @@
%span.str-truncated
= link_to blob_item.name, project_blob_path(@project, tree_join(@id || @commit.id, blob_item.name))
%td.tree_time_ago.cgray
- %span.log_loading.hide
- Loading commit data...
- = image_tag "ajax_loader_tree.gif", width: 14
+ = render 'spinner'
%td.tree_commit{ colspan: 2 }
diff --git a/app/views/projects/tree/_readme.html.haml b/app/views/projects/tree/_readme.html.haml
index ab572f2e97b..16a9602ac97 100644
--- a/app/views/projects/tree/_readme.html.haml
+++ b/app/views/projects/tree/_readme.html.haml
@@ -1,5 +1,5 @@
.readme-holder#README
- %h4
+ %h4.readme-file-title
%i.icon-file
= readme.name
.wiki
diff --git a/app/views/projects/tree/_spinner.html.haml b/app/views/projects/tree/_spinner.html.haml
new file mode 100644
index 00000000000..5a9e77b63df
--- /dev/null
+++ b/app/views/projects/tree/_spinner.html.haml
@@ -0,0 +1,3 @@
+%span.log_loading.hide
+ %i.icon-spinner.icon-spin
+ Loading commit data...
diff --git a/app/views/projects/tree/_submodule_item.html.haml b/app/views/projects/tree/_submodule_item.html.haml
index badc7d992bd..ae87dbde67a 100644
--- a/app/views/projects/tree/_submodule_item.html.haml
+++ b/app/views/projects/tree/_submodule_item.html.haml
@@ -1,10 +1,15 @@
+- tree, commit = submodule_links(submodule_item)
%tr{ class: "tree-item" }
%td.tree-item-file-name
= image_tag "submodule.png"
%span
- = link_to truncate(submodule_item.name, length: 40), submodule_item.submodule_url
+ = link_to truncate(submodule_item.name, length: 40), tree
@
- %span.monospace #{submodule_item.id[0..10]}
+ %span.monospace
+ - if commit.nil?
+ #{submodule_item.id[0..10]}
+ - else
+ = link_to "#{submodule_item.id[0..10]}", commit
%td
%td
%td
diff --git a/app/views/projects/tree/_tree.html.haml b/app/views/projects/tree/_tree.html.haml
index 4e80872df48..ee850e2bc1b 100644
--- a/app/views/projects/tree/_tree.html.haml
+++ b/app/views/projects/tree/_tree.html.haml
@@ -9,7 +9,7 @@
= link_to truncate(title, length: 40), project_tree_path(@project, path)
- else
= link_to title, '#'
- - if @repository.branch_names.include?(@ref)
+ - if current_user && @repository.branch_names.include?(@ref) && current_user.can?(:push_code, @project)
%li
= link_to project_new_tree_path(@project, @id), title: 'New file', id: 'new-file-link' do
%small
diff --git a/app/views/projects/tree/_tree_item.html.haml b/app/views/projects/tree/_tree_item.html.haml
index b4dd6f48b62..1b3900bcbae 100644
--- a/app/views/projects/tree/_tree_item.html.haml
+++ b/app/views/projects/tree/_tree_item.html.haml
@@ -4,7 +4,5 @@
%span.str-truncated
= link_to tree_item.name, project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name))
%td.tree_time_ago.cgray
- %span.log_loading.hide
- Loading commit data...
- = image_tag "ajax_loader_tree.gif", width: 14
+ = render 'spinner'
%td.tree_commit{ colspan: 2 }
diff --git a/app/views/projects/walls/show.html.haml b/app/views/projects/walls/show.html.haml
index c6afec443f4..3e3c7c4f8dd 100644
--- a/app/views/projects/walls/show.html.haml
+++ b/app/views/projects/walls/show.html.haml
@@ -9,7 +9,7 @@
= f.text_area :note, size: 255, class: 'note_text js-note-text js-gfm-input turn-on'
.note-form-actions
.buttons
- = f.submit 'Add Comment', class: "btn comment-btn grouped js-comment-button"
+ = f.submit 'Add Comment', class: "btn comment-btn btn-grouped js-comment-button"
.note-form-option
%a.choose-btn.btn.btn-small.js-choose-note-attachment-button
diff --git a/app/views/projects/wikis/_main_links.html.haml b/app/views/projects/wikis/_main_links.html.haml
index 1001bb10c4f..5dd769dcfe1 100644
--- a/app/views/projects/wikis/_main_links.html.haml
+++ b/app/views/projects/wikis/_main_links.html.haml
@@ -1,8 +1,8 @@
%span.pull-right
- if (@wiki && @wiki.persisted?)
- = link_to history_project_wiki_path(@project, @wiki), class: "btn grouped" do
+ = link_to history_project_wiki_path(@project, @wiki), class: "btn btn-grouped" do
Page History
- if can?(current_user, :write_wiki, @project)
- = link_to edit_project_wiki_path(@project, @wiki), class: "btn grouped" do
+ = link_to edit_project_wiki_path(@project, @wiki), class: "btn btn-grouped" do
%i.icon-edit
Edit
diff --git a/app/views/projects/wikis/_nav.html.haml b/app/views/projects/wikis/_nav.html.haml
index 5e5aa5170d6..0a7e51e974c 100644
--- a/app/views/projects/wikis/_nav.html.haml
+++ b/app/views/projects/wikis/_nav.html.haml
@@ -1,4 +1,4 @@
-%ul.nav.nav-tabs.append-bottom-20
+%ul.nav.nav-tabs
= nav_link(html_options: {class: params[:id] == 'home' ? 'active' : '' }) do
= link_to 'Home', project_wiki_path(@project, :home)
diff --git a/app/views/public/projects/index.html.haml b/app/views/public/projects/index.html.haml
index 2fc93c5b742..624ec0b9b95 100644
--- a/app/views/public/projects/index.html.haml
+++ b/app/views/public/projects/index.html.haml
@@ -63,6 +63,6 @@
%i.icon-warning-sign
Empty repository
- unless @projects.present?
- %h3.nothing_here_message No public projects
+ .nothing-here-block No public projects
= paginate @projects, theme: "gitlab"
diff --git a/app/views/search/_project_results.html.haml b/app/views/search/_project_results.html.haml
index ea324b3a9aa..f285bda5736 100644
--- a/app/views/search/_project_results.html.haml
+++ b/app/views/search/_project_results.html.haml
@@ -1,4 +1,4 @@
-%ul.nav.nav-tabs.append-bottom-10
+%ul.nav.nav-tabs
%li{class: ("active" if params[:search_code].present?)}
= link_to search_path(params.merge(search_code: true)) do
Repository Code
diff --git a/app/views/search/results/_blob.html.haml b/app/views/search/results/_blob.html.haml
index a2e4a00b718..f9d217e8408 100644
--- a/app/views/search/results/_blob.html.haml
+++ b/app/views/search/results/_blob.html.haml
@@ -6,5 +6,4 @@
%strong
= blob.filename
.file-content.code.term
- %div{class: user_color_scheme_class}
- = raw blob.colorize( formatter: :gitlab, options: { first_line_number: blob.startline } )
+ = render 'shared/file_hljs', blob: blob, first_line_number: blob.startline
diff --git a/app/views/shared/_file_hljs.html.haml b/app/views/shared/_file_hljs.html.haml
new file mode 100644
index 00000000000..338236c0752
--- /dev/null
+++ b/app/views/shared/_file_hljs.html.haml
@@ -0,0 +1,12 @@
+%div.highlighted-data{class: user_color_scheme_class}
+ .line-numbers
+ - blob.data.lines.to_a.size.times do |index|
+ - offset = defined?(first_line_number) ? first_line_number : 1
+ - i = index + offset
+ = link_to "#L#{i}", id: "L#{i}", rel: "#L#{i}" do
+ %i.icon-link
+ = i
+ .highlight
+ %pre
+ %code
+ = blob.data
diff --git a/app/views/shared/_filter.html.haml b/app/views/shared/_filter.html.haml
index 96299f8dcf2..0becf531cc3 100644
--- a/app/views/shared/_filter.html.haml
+++ b/app/views/shared/_filter.html.haml
@@ -1,28 +1,29 @@
.side-filters.hidden-xs.hidden-sm
= form_tag filter_path(entity), method: 'get' do
- %fieldset.scope-filter
- %ul.nav.nav-pills.nav-stacked
- %li{class: ("active" if params[:scope].blank?)}
- = link_to filter_path(entity, scope: nil) do
- Assigned to me
- %li{class: ("active" if params[:scope] == 'authored')}
- = link_to filter_path(entity, scope: 'authored') do
- Created by me
- %li{class: ("active" if params[:scope] == 'all')}
- = link_to filter_path(entity, scope: 'all') do
- Everyone's
+ - if current_user
+ %fieldset.scope-filter
+ %ul.nav.nav-pills.nav-stacked
+ %li{class: ("active" if params[:scope] == 'assigned-to-me')}
+ = link_to filter_path(entity, scope: 'assigned-to-me') do
+ Assigned to me
+ %li{class: ("active" if params[:scope] == 'authored')}
+ = link_to filter_path(entity, scope: 'authored') do
+ Created by me
+ %li{class: ("active" if params[:scope] == 'all')}
+ = link_to filter_path(entity, scope: 'all') do
+ Everyone's
%fieldset.status-filter
%legend State
%ul.nav.nav-pills
- %li{class: ("active" if params[:status].blank?)}
- = link_to filter_path(entity, status: nil) do
+ %li{class: ("active" if params[:state] == 'opened')}
+ = link_to filter_path(entity, state: 'opened') do
Open
- %li{class: ("active" if params[:status] == 'closed')}
- = link_to filter_path(entity, status: 'closed') do
+ %li{class: ("active" if params[:state] == 'closed')}
+ = link_to filter_path(entity, state: 'closed') do
Closed
- %li{class: ("active" if params[:status] == 'all')}
- = link_to filter_path(entity, status: 'all') do
+ %li{class: ("active" if params[:state] == 'all')}
+ = link_to filter_path(entity, state: 'all') do
All
%fieldset
@@ -36,8 +37,8 @@
%small.pull-right= entities_per_project(project, entity)
%fieldset
- - if params[:status].present? || params[:project_id].present?
- = link_to filter_path(entity, status: nil, project_id: nil), class: 'pull-right cgray' do
+ - if params[:state].present? || params[:project_id].present?
+ = link_to filter_path(entity, state: nil, project_id: nil), class: 'pull-right cgray' do
%i.icon-remove
%strong Clear filter
diff --git a/app/views/shared/_issues.html.haml b/app/views/shared/_issues.html.haml
index 199000656fe..087b6632e8d 100644
--- a/app/views/shared/_issues.html.haml
+++ b/app/views/shared/_issues.html.haml
@@ -11,5 +11,5 @@
= render 'projects/issues/issue', issue: issue
= paginate @issues, theme: "gitlab"
- else
- %p.nothing_here_message No issues to show
+ .nothing-here-block No issues to show
diff --git a/app/views/shared/_merge_requests.html.haml b/app/views/shared/_merge_requests.html.haml
index ddad28339c8..f40b7be4864 100644
--- a/app/views/shared/_merge_requests.html.haml
+++ b/app/views/shared/_merge_requests.html.haml
@@ -11,4 +11,4 @@
= paginate @merge_requests, theme: "gitlab"
- else
- %h3.nothing_here_message No merge requests to show
+ .nothing-here-block No merge requests to show
diff --git a/app/views/shared/_no_ssh.html.haml b/app/views/shared/_no_ssh.html.haml
index 077e6c6a808..e70eb4d01b9 100644
--- a/app/views/shared/_no_ssh.html.haml
+++ b/app/views/shared/_no_ssh.html.haml
@@ -2,7 +2,13 @@
.no-ssh-key-message
.container
You won't be able to pull or push project code via SSH until you #{link_to 'add an SSH key', new_profile_key_path} to your profile
- %div.pull-right
+ .pull-right.hidden-xs
= link_to "Don't show again", profile_path(user: {hide_no_ssh_key: true}), method: :put, class: 'hide-no-ssh-message', remote: true
|
= link_to 'Remind later', '#', class: 'hide-no-ssh-message'
+ .links-xs.visible-xs
+ = link_to "Add key", new_profile_key_path
+ |
+ = link_to "Don't show again", profile_path(user: {hide_no_ssh_key: true}), method: :put, class: 'hide-no-ssh-message', remote: true
+ |
+ = link_to 'Later', '#', class: 'hide-no-ssh-message'
diff --git a/app/views/shared/_project_filter.html.haml b/app/views/shared/_project_filter.html.haml
index a4f406a4ab6..d82b08eeaa2 100644
--- a/app/views/shared/_project_filter.html.haml
+++ b/app/views/shared/_project_filter.html.haml
@@ -3,8 +3,8 @@
- if current_user
%fieldset
%ul.nav.nav-pills.nav-stacked
- %li{class: ("active" if params[:scope].blank?)}
- = link_to project_filter_path(scope: nil) do
+ %li{class: ("active" if params[:scope] == 'all')}
+ = link_to project_filter_path(scope: 'all') do
Everyone's
%li{class: ("active" if params[:scope] == 'assigned-to-me')}
= link_to project_filter_path(scope: 'assigned-to-me') do
@@ -16,8 +16,8 @@
%fieldset
%legend State
%ul.nav.nav-pills
- %li{class: ("active" if params[:state].blank?)}
- = link_to project_filter_path(state: nil) do
+ %li{class: ("active" if params[:state] == 'opened')}
+ = link_to project_filter_path(state: 'opened') do
Open
%li{class: ("active" if params[:state] == 'closed')}
= link_to project_filter_path(state: 'closed') do
@@ -26,6 +26,26 @@
= link_to project_filter_path(state: 'all') do
All
+ - if defined?(labels)
+ %fieldset
+ %legend Labels
+ %ul.nav.nav-pills.nav-stacked.nav-small.labels-filter
+ - issue_label_names.each do |label_name|
+ %li{class: label_filter_class(label_name)}
+ = link_to labels_filter_path(label_name) do
+ %span{class: "label #{label_css_class(label_name)}"}
+ %i.icon-tag
+ = label_name
+ - if selected_label?(label_name)
+ .pull-right
+ %i.icon-remove
+
+ - if issue_label_names.empty?
+ .light-well
+ Add first label to your issues
+ %br
+ or #{link_to 'generate', generate_project_labels_path(@project), method: :post} default set of labels
+
%fieldset
- if %w(state scope milestone_id assignee_id label_name).select { |k| params[k].present? }.any?
= link_to project_entities_path, class: 'cgray pull-right' do
diff --git a/app/views/shared/_promo.html.haml b/app/views/shared/_promo.html.haml
index c97f8ba0f0e..7dec48e6585 100644
--- a/app/views/shared/_promo.html.haml
+++ b/app/views/shared/_promo.html.haml
@@ -1,4 +1,4 @@
.gitlab-promo
- = link_to "Homepage", "http://gitlab.org"
- = link_to "Blog", "http://blog.gitlab.org"
+ = link_to "Homepage", "https://www.gitlab.com/"
+ = link_to "Blog", "https://www.gitlab.com/blog/"
= link_to "@gitlabhq", "https://twitter.com/gitlabhq"
diff --git a/app/views/shared/_sort_dropdown.html.haml b/app/views/shared/_sort_dropdown.html.haml
new file mode 100644
index 00000000000..7b37b39780e
--- /dev/null
+++ b/app/views/shared/_sort_dropdown.html.haml
@@ -0,0 +1,22 @@
+.dropdown.inline.prepend-left-10
+ %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
+ %span.light sort:
+ - if @sort.present?
+ = @sort
+ - else
+ Newest
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(sort: 'newest') do
+ Newest
+ = link_to project_filter_path(sort: 'oldest') do
+ Oldest
+ = link_to project_filter_path(sort: 'recently_updated') do
+ Recently updated
+ = link_to project_filter_path(sort: 'last_updated') do
+ Last updated
+ = link_to project_filter_path(sort: 'milestone_due_soon') do
+ Milestone due soon
+ = link_to project_filter_path(sort: 'milestone_due_later') do
+ Milestone due later
diff --git a/app/views/snippets/_blob.html.haml b/app/views/snippets/_blob.html.haml
index e6ae33f38f3..15867f071ef 100644
--- a/app/views/snippets/_blob.html.haml
+++ b/app/views/snippets/_blob.html.haml
@@ -8,18 +8,4 @@
= link_to "Edit", edit_snippet_path(@snippet), class: "btn btn-tiny", title: 'Edit Snippet'
= link_to "Delete", snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-tiny", title: 'Delete Snippet'
= link_to "Raw", raw_snippet_path(@snippet), class: "btn btn-tiny", target: "_blank"
- - unless @snippet.content.empty?
- - if gitlab_markdown?(@snippet.file_name)
- .file-content.wiki
- = preserve do
- = markdown(@snippet.data)
- - elsif markup?(@snippet.file_name)
- .file-content.wiki
- = render_markup(@snippet.file_name, @snippet.data)
- - else
- .file-content.code
- %div{class: user_color_scheme_class}
- = raw @snippet.colorize(formatter: :gitlab)
- - else
- .file-content.code
- %p.nothing_here_message Empty file
+ = render 'snippets/blob_content'
diff --git a/app/views/snippets/_blob_content.html.haml b/app/views/snippets/_blob_content.html.haml
new file mode 100644
index 00000000000..8cec6168ab8
--- /dev/null
+++ b/app/views/snippets/_blob_content.html.haml
@@ -0,0 +1,14 @@
+- unless @snippet.content.empty?
+ - if gitlab_markdown?(@snippet.file_name)
+ .file-content.wiki
+ = preserve do
+ = markdown(@snippet.data)
+ - elsif markup?(@snippet.file_name)
+ .file-content.wiki
+ = render_markup(@snippet.file_name, @snippet.data)
+ - else
+ .file-content.code
+ = render 'shared/file_hljs', blob: @snippet
+- else
+ .file-content.code
+ .nothing-here-block Empty file
diff --git a/app/views/snippets/_snippets.html.haml b/app/views/snippets/_snippets.html.haml
index 05365dd8b88..40df42b6cf5 100644
--- a/app/views/snippets/_snippets.html.haml
+++ b/app/views/snippets/_snippets.html.haml
@@ -2,6 +2,6 @@
= render partial: 'snippet', collection: @snippets
- if @snippets.empty?
%li
- %h3.nothing_here_message Nothing here.
+ .nothing-here-block Nothing here.
= paginate @snippets, theme: 'gitlab'
diff --git a/app/views/snippets/current_user_index.html.haml b/app/views/snippets/current_user_index.html.haml
index bf712b2c7e7..90ddc7198f6 100644
--- a/app/views/snippets/current_user_index.html.haml
+++ b/app/views/snippets/current_user_index.html.haml
@@ -1,9 +1,9 @@
%h3.page-title
My Snippets
.pull-right
- = link_to new_snippet_path, class: "btn btn-new grouped", title: "New Snippet" do
+ = link_to new_snippet_path, class: "btn btn-new btn-grouped", title: "New Snippet" do
Add new snippet
- = link_to snippets_path, class: "btn grouped" do
+ = link_to snippets_path, class: "btn btn-grouped" do
Discover snippets
%p.light
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index 2f6c914a159..cea2517a8e1 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -2,9 +2,9 @@
Public snippets
.pull-right
- = link_to new_snippet_path, class: "btn btn-new grouped", title: "New Snippet" do
+ = link_to new_snippet_path, class: "btn btn-new btn-grouped", title: "New Snippet" do
Add new snippet
- = link_to user_snippets_path(current_user), class: "btn grouped" do
+ = link_to user_snippets_path(current_user), class: "btn btn-grouped" do
My snippets
%p.light
diff --git a/app/views/users/_groups.html.haml b/app/views/users/_groups.html.haml
new file mode 100644
index 00000000000..412df943fcc
--- /dev/null
+++ b/app/views/users/_groups.html.haml
@@ -0,0 +1,3 @@
+- groups.each do |group|
+ = link_to group, class: 'profile-groups-avatars', :title => group.name do
+ = image_tag group_icon(group.path) \ No newline at end of file
diff --git a/app/views/users/_profile.html.haml b/app/views/users/_profile.html.haml
index c7eb6fa182e..7ffd43e837d 100644
--- a/app/views/users/_profile.html.haml
+++ b/app/views/users/_profile.html.haml
@@ -17,6 +17,10 @@
%li
%span.light Twitter:
%strong= link_to user.twitter, "http://www.twitter.com/#{user.twitter}"
+ - unless user.website_url.blank?
+ %li
+ %span.light Website:
+ %strong= link_to user.short_website_url, user.full_website_url
- unless user.bio.blank?
%li
%span.light Bio:
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index 65f46500a89..edcaf3acf98 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -13,9 +13,11 @@
%br
%small member since #{@user.created_at.stamp("Nov 12, 2031")}
.clearfix
+ %h4 Groups:
+ = render 'groups', groups: @groups
%hr
%h4 User Activity:
= render @events
.col-md-4
= render 'profile', user: @user
- = render 'projects', user: @user
+ = render 'projects'
diff --git a/app/views/users_groups/_users_group.html.haml b/app/views/users_groups/_users_group.html.haml
index 5f477f3c976..1784dab35b4 100644
--- a/app/views/users_groups/_users_group.html.haml
+++ b/app/views/users_groups/_users_group.html.haml
@@ -1,5 +1,6 @@
- user = member.user
- return unless user
+- show_roles = true if show_roles.nil?
%li{class: "#{dom_class(member)} js-toggle-container", id: dom_id(member)}
= image_tag avatar_icon(user.email, 16), class: "avatar s16"
%strong= user.name
@@ -7,17 +8,23 @@
- if user == current_user
%span.label.label-success It's you
- %span.pull-right
- %strong= member.human_access
-
- - if show_controls && can?(current_user, :manage_group, @group) && current_user != user
- = link_to '#', class: "btn-tiny btn js-toggle-button", title: 'Edit access level' do
- %i.icon-edit
- = link_to group_users_group_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
- %i.icon-minus.icon-white
-
- .edit-member.hide.js-toggle-content
- = form_for [@group, member], remote: true do |f|
- .alert.prepend-top-20
- = f.select :group_access, options_for_select(UsersGroup.group_access_roles, member.group_access)
- = f.submit 'Save', class: 'btn btn-save btn-small'
+ - if show_roles
+ %span.pull-right
+ %strong= member.human_access
+ - if show_controls
+ - if can?(current_user, :modify, member)
+ = link_to '#', class: "btn-tiny btn js-toggle-button", title: 'Edit access level' do
+ %i.icon-edit
+ - if can?(current_user, :destroy, member)
+ - if current_user == member.user
+ = link_to leave_profile_group_path(@group), data: { confirm: leave_group_message(@group.name)}, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
+ %i.icon-minus.icon-white
+ - else
+ = link_to group_users_group_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
+ %i.icon-minus.icon-white
+
+ .edit-member.hide.js-toggle-content
+ = form_for [@group, member], remote: true do |f|
+ .alert.prepend-top-20
+ = f.select :group_access, options_for_select(UsersGroup.group_access_roles, member.group_access)
+ = f.submit 'Save', class: 'btn btn-save btn-small'
diff --git a/app/workers/emails_on_push_worker.rb b/app/workers/emails_on_push_worker.rb
index 9982b362a10..5e81810cbdb 100644
--- a/app/workers/emails_on_push_worker.rb
+++ b/app/workers/emails_on_push_worker.rb
@@ -13,13 +13,13 @@ class EmailsOnPushWorker
return true
end
- compare = Gitlab::Git::Compare.new(project.repository.raw_repository, before_sha, after_sha)
+ compare = Gitlab::Git::Compare.new(project.repository.raw_repository, before_sha, after_sha, MergeRequestDiff::COMMITS_SAFE_SIZE)
# Do not send emails if git compare failed
return false unless compare && compare.commits.present?
recipients.split(" ").each do |recipient|
- Notify.delay.repository_push_email(project_id, recipient, author_id, branch, compare)
+ Notify.repository_push_email(project_id, recipient, author_id, branch, compare).deliver
end
end
end
diff --git a/bin/bundle b/bin/bundle
new file mode 100755
index 00000000000..66e9889e8b4
--- /dev/null
+++ b/bin/bundle
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
+load Gem.bin_path('bundler', 'bundle')
diff --git a/bin/rails b/bin/rails
new file mode 100755
index 00000000000..7feb6a30e69
--- /dev/null
+++ b/bin/rails
@@ -0,0 +1,8 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path("../spring", __FILE__)
+rescue LoadError
+end
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require_relative '../config/boot'
+require 'rails/commands'
diff --git a/bin/rake b/bin/rake
new file mode 100755
index 00000000000..8017a0271d2
--- /dev/null
+++ b/bin/rake
@@ -0,0 +1,8 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path("../spring", __FILE__)
+rescue LoadError
+end
+require_relative '../config/boot'
+require 'rake'
+Rake.application.run
diff --git a/bin/rspec b/bin/rspec
new file mode 100755
index 00000000000..41e37089ac2
--- /dev/null
+++ b/bin/rspec
@@ -0,0 +1,7 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path("../spring", __FILE__)
+rescue LoadError
+end
+require 'bundler/setup'
+load Gem.bin_path('rspec', 'rspec')
diff --git a/bin/spinach b/bin/spinach
new file mode 100755
index 00000000000..a080e286cfe
--- /dev/null
+++ b/bin/spinach
@@ -0,0 +1,7 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path("../spring", __FILE__)
+rescue LoadError
+end
+require 'bundler/setup'
+load Gem.bin_path('spinach', 'spinach')
diff --git a/bin/spring b/bin/spring
new file mode 100755
index 00000000000..253ec37c345
--- /dev/null
+++ b/bin/spring
@@ -0,0 +1,18 @@
+#!/usr/bin/env ruby
+
+# This file loads spring without using Bundler, in order to be fast
+# It gets overwritten when you run the `spring binstub` command
+
+unless defined?(Spring)
+ require "rubygems"
+ require "bundler"
+
+ if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
+ ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
+ ENV["GEM_HOME"] = ""
+ Gem.paths = ENV
+
+ gem "spring", match[1]
+ require "spring/binstub"
+ end
+end
diff --git a/config.ru b/config.ru
index c45449dd03f..e90863a5c21 100644
--- a/config.ru
+++ b/config.ru
@@ -1,6 +1,6 @@
# This file is used by Rack-based servers to start the application.
-unless defined?(PhusionPassenger)
+if defined?(Unicorn)
require 'unicorn'
# Unicorn self-process killer
require 'unicorn/worker_killer'
diff --git a/config/application.rb b/config/application.rb
index 88759ce7cf3..4d7c1415c8e 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -12,7 +12,7 @@ module Gitlab
# -- all .rb files in that directory are automatically loaded.
# Custom directories with classes and modules you want to be autoloadable.
- config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/models/concerns #{config.root}/app/models/project_services)
+ config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/finders #{config.root}/app/models/concerns #{config.root}/app/models/project_services)
# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
@@ -62,6 +62,8 @@ module Gitlab
# Enable the asset pipeline
config.assets.enabled = true
+ config.assets.paths << Emoji.images_path
+ config.assets.precompile << "emoji/*.png"
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
diff --git a/config/database.yml.mysql b/config/database.yml.mysql
index 55ac088bc1d..6943aaca45b 100644
--- a/config/database.yml.mysql
+++ b/config/database.yml.mysql
@@ -7,6 +7,7 @@ production:
reconnect: false
database: gitlabhq_production
pool: 10
+ reaping_frequency: 10
username: git
password: "secure password"
# host: localhost
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index f552bee8250..a40ce7212fe 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -14,7 +14,7 @@ production: &base
## GitLab settings
gitlab:
- ## Web server settings
+ ## Web server settings (note: host is the FQDN, do not include http://)
host: localhost
port: 80
https: false
@@ -65,7 +65,7 @@ production: &base
# If a commit message matches this regular expression, all issues referenced from the matched text will be closed.
# This happens when the commit is pushed or merged into the default branch of a project.
# When not specified the default issue_closing_pattern as specified below will be used.
- # issue_closing_pattern: "([Cc]lose[sd]|[Ff]ixe[sd]) +#\d+"
+ # issue_closing_pattern: '([Cc]lose[sd]|[Ff]ixe[sd]) +#\d+'
## Default project features settings
default_projects_features:
@@ -116,17 +116,26 @@ production: &base
# ==========================
## LDAP settings
- # You can inspect the first 100 LDAP users with login access by running:
- # bundle exec rake gitlab:ldap:check[100] RAILS_ENV=production
+ # You can inspect a sample of the LDAP users with login access by running:
+ # bundle exec rake gitlab:ldap:check RAILS_ENV=production
ldap:
enabled: false
host: '_your_ldap_server'
base: '_the_base_where_you_search_for_users'
port: 636
uid: 'sAMAccountName'
- method: 'ssl' # "ssl" or "plain"
+ method: 'ssl' # "tls" or "ssl" or "plain"
bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
password: '_the_password_of_the_bind_user'
+ # If allow_username_or_email_login is enabled, GitLab will ignore everything
+ # after the first '@' in the LDAP username submitted by the user on login.
+ #
+ # Example:
+ # - the user enters 'jane.doe@example.com' and 'p@ssw0rd' as LDAP credentials;
+ # - GitLab queries the LDAP server with 'jane.doe' and 'p@ssw0rd'.
+ #
+ # If you are using "uid: 'userPrincipalName'" on ActiveDirectory you need to
+ # disable this setting, because the userPrincipalName contains an '@'.
allow_username_or_email_login: true
## OmniAuth settings
@@ -154,7 +163,8 @@ production: &base
# - { name: 'twitter', app_id: 'YOUR APP ID',
# app_secret: 'YOUR APP SECRET'}
# - { name: 'github', app_id: 'YOUR APP ID',
- # app_secret: 'YOUR APP SECRET' }
+ # app_secret: 'YOUR APP SECRET',
+ # args: { scope: 'user:email' } }
@@ -192,7 +202,8 @@ production: &base
# Use the default values unless you really know what you are doing
git:
bin_path: /usr/bin/git
- # Max size of a git object (e.g. a commit), in bytes
+ # The next value is the maximum memory size grit can use
+ # Given in number of bytes per git object (e.g. a commit)
# This value can be increased if you have very large commits
max_size: 5242880 # 5.megabytes
# Git timeout to read a commit, in seconds
@@ -206,6 +217,10 @@ production: &base
## Google analytics. Uncomment if you want it
# google_analytics_id: '_your_tracking_id'
+ ## Piwik analytics.
+ # piwik_url: '_your_piwik_url'
+ # piwik_site_id: '_your_piwik_site_id'
+
## Text under sign-in page (Markdown enabled)
# sign_in_text: |
# ![Company Logo](http://www.companydomain.com/logo.png)
@@ -216,6 +231,11 @@ development:
test:
<<: *base
+ gravatar:
+ enabled: true
+ gitlab:
+ host: localhost
+ port: 80
issues_tracker:
redmine:
title: "Redmine"
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index ea391ca601c..cf6c79bb50e 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -3,8 +3,8 @@ class Settings < Settingslogic
namespace Rails.env
class << self
- def gitlab_on_non_standard_port?
- ![443, 80].include?(gitlab.port.to_i)
+ def gitlab_on_standard_port?
+ gitlab.port.to_i == (gitlab.https ? 443 : 80)
end
private
@@ -18,11 +18,7 @@ class Settings < Settingslogic
end
def build_gitlab_url
- if gitlab_on_non_standard_port?
- custom_port = ":#{gitlab.port}"
- else
- custom_port = nil
- end
+ custom_port = gitlab_on_standard_port? ? nil : ":#{gitlab.port}"
[ gitlab.protocol,
"://",
gitlab.host,
diff --git a/config/initializers/3_grit_ext.rb b/config/initializers/3_grit_ext.rb
index 8b298e821e7..6540ac839cb 100644
--- a/config/initializers/3_grit_ext.rb
+++ b/config/initializers/3_grit_ext.rb
@@ -1,5 +1,4 @@
require 'grit'
-require 'pygments'
Grit::Git.git_binary = Gitlab.config.git.bin_path
Grit::Git.git_timeout = Gitlab.config.git.timeout
diff --git a/config/initializers/6_rack_profiler.rb b/config/initializers/6_rack_profiler.rb
new file mode 100644
index 00000000000..a7ee3c59822
--- /dev/null
+++ b/config/initializers/6_rack_profiler.rb
@@ -0,0 +1,6 @@
+if Rails.env == 'development'
+ require 'rack-mini-profiler'
+
+ # initialization is skipped so trigger it
+ Rack::MiniProfilerRails.initialize!(Rails.application)
+end
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index 25390978cf6..50669ece7a8 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -4,7 +4,7 @@ Devise.setup do |config|
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
- config.mailer_sender = Gitlab.config.gitlab.email_from
+ config.mailer_sender = "GitLab <#{Gitlab.config.gitlab.email_from}>"
# Configure the class responsible to send e-mails.
@@ -77,11 +77,11 @@ Devise.setup do |config|
# ==> Configuration for :confirmable
# The time you want to give a user to confirm their account. During this time
# they will be able to access your application without confirming. Default is 0.days
- # When confirm_within is zero, the user won't be able to sign in without confirming.
+ # When allow_unconfirmed_access_for is zero, the user won't be able to sign in without confirming.
# You can use this to let your user access some features of your application
# without confirming the account, but blocking it after a certain period
# (ie 2 days).
- # config.confirm_within = 2.days
+ # config.allow_unconfirmed_access_for = 2.days
# Defines which key will be used when confirming an account
# config.confirmation_keys = [ :email ]
@@ -227,15 +227,21 @@ Devise.setup do |config|
end
Gitlab.config.omniauth.providers.each do |provider|
+ provider_arguments = []
+
+ %w[app_id app_secret].each do |argument|
+ provider_arguments << provider[argument] if provider[argument]
+ end
+
case provider['args']
when Array
# An Array from the configuration will be expanded.
- config.omniauth provider['name'].to_sym, provider['app_id'], provider['app_secret'], *provider['args']
+ provider_arguments.concat provider['args']
when Hash
# A Hash from the configuration will be passed as is.
- config.omniauth provider['name'].to_sym, provider['app_id'], provider['app_secret'], provider['args']
- else
- config.omniauth provider['name'].to_sym, provider['app_id'], provider['app_secret']
+ provider_arguments << provider['args']
end
+
+ config.omniauth provider['name'].to_sym, *provider_arguments
end
end
diff --git a/config/initializers/devise_password_length.rb.example b/config/initializers/devise_password_length.rb.example
new file mode 100644
index 00000000000..97305825e07
--- /dev/null
+++ b/config/initializers/devise_password_length.rb.example
@@ -0,0 +1,6 @@
+Devise.setup do |config|
+ # The following line changes the password length limits for new users. In the
+ # example below the minimum length is 12 characters, and the maximum length
+ # is 128 characters.
+ config.password_length = 12..128
+end
diff --git a/config/routes.rb b/config/routes.rb
index 734421ede1d..fdca1e62661 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,11 +6,15 @@ Gitlab::Application.routes.draw do
# Search
#
get 'search' => "search#show"
+ get 'search/autocomplete' => "search#autocomplete", as: :search_autocomplete
# API
API::API.logger Rails.logger
mount API::API => '/api'
+ # Get all keys of user
+ get ':username.keys' => 'profiles/keys#get_keys' , constraints: { username: /.*/ }
+
constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? }
constraints constraint do
mount Sidekiq::Web, at: "/admin/sidekiq", as: :sidekiq
@@ -99,8 +103,6 @@ Gitlab::Application.routes.draw do
root to: "dashboard#index"
end
- get "errors/githost"
-
#
# Profile Area
#
@@ -122,6 +124,7 @@ Gitlab::Application.routes.draw do
end
end
resources :keys
+ resources :emails, only: [:index, :create, :destroy]
resources :groups, only: [:index] do
member do
delete :leave
@@ -157,6 +160,9 @@ Gitlab::Application.routes.draw do
end
resources :users_groups, only: [:create, :update, :destroy]
+ scope module: :groups do
+ resource :avatar, only: [:destroy]
+ end
end
resources :projects, constraints: { id: /[^\/]+/ }, only: [:new, :create]
diff --git a/db/fixtures/development/04_project.rb b/db/fixtures/development/04_project.rb
index 6fdb163c27d..d0d0774e0c8 100644
--- a/db/fixtures/development/04_project.rb
+++ b/db/fixtures/development/04_project.rb
@@ -10,6 +10,7 @@ project_urls = [
'https://github.com/gitlabhq/gitlab-recipes.git',
'https://github.com/gitlabhq/gitlab-shell.git',
'https://github.com/gitlabhq/grack.git',
+ 'https://github.com/gitlabhq/testme.git',
'https://github.com/twitter/flight.git',
'https://github.com/twitter/typeahead.js.git',
'https://github.com/h5bp/html5-boilerplate.git',
@@ -19,7 +20,7 @@ project_urls = [
project_urls.each_with_index do |url, i|
group_path, project_path = url.split('/')[-2..-1]
- group = Group.find_by_path(group_path)
+ group = Group.find_by(path: group_path)
unless group
group = Group.new(
@@ -27,8 +28,9 @@ project_urls.each_with_index do |url, i|
path: group_path
)
group.description = Faker::Lorem.sentence
- group.owner = User.first
group.save
+
+ group.add_owner(User.first)
end
project_path.gsub!(".git", "")
@@ -40,7 +42,7 @@ project_urls.each_with_index do |url, i|
description: Faker::Lorem.sentence
}
- project = Projects::CreateContext.new(User.first, params).execute
+ project = Projects::CreateService.new(User.first, params).execute
if project.valid?
print '.'
diff --git a/db/migrate/20110913200833_devise_create_users.rb b/db/migrate/20110913200833_devise_create_users.rb
deleted file mode 100644
index e00f275c55d..00000000000
--- a/db/migrate/20110913200833_devise_create_users.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-class DeviseCreateUsers < ActiveRecord::Migration
- def self.up
- create_table(:users) do |t|
- ## Database authenticatable
- t.string :email, :null => false, :default => ""
- t.string :encrypted_password, :null => false, :default => ""
-
- ## Recoverable
- t.string :reset_password_token
- t.datetime :reset_password_sent_at
-
- ## Rememberable
- t.datetime :remember_created_at
-
- ## Trackable
- t.integer :sign_in_count, :default => 0
- t.datetime :current_sign_in_at
- t.datetime :last_sign_in_at
- t.string :current_sign_in_ip
- t.string :last_sign_in_ip
-
- ## Encryptable
- # t.string :password_salt
-
- ## Confirmable
- # t.string :confirmation_token
- # t.datetime :confirmed_at
- # t.datetime :confirmation_sent_at
- # t.string :unconfirmed_email # Only if using reconfirmable
-
- ## Lockable
- # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
- # t.string :unlock_token # Only if unlock strategy is :email or :both
- # t.datetime :locked_at
-
- # Token authenticatable
- # t.string :authentication_token
-
- ## Invitable
- # t.string :invitation_token
-
- t.timestamps
- end
-
- add_index :users, :email, :unique => true
- add_index :users, :reset_password_token, :unique => true
- # add_index :users, :confirmation_token, :unique => true
- # add_index :users, :unlock_token, :unique => true
- # add_index :users, :authentication_token, :unique => true
- end
-
- def self.down
- drop_table :users
- end
-end
diff --git a/db/migrate/20110913204141_create_projects.rb b/db/migrate/20110913204141_create_projects.rb
deleted file mode 100644
index 45b76f95563..00000000000
--- a/db/migrate/20110913204141_create_projects.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateProjects < ActiveRecord::Migration
- def change
- create_table :projects do |t|
- t.string :name
- t.string :path
- t.text :description
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20110914221600_create_users_projects.rb b/db/migrate/20110914221600_create_users_projects.rb
deleted file mode 100644
index a89798ae86f..00000000000
--- a/db/migrate/20110914221600_create_users_projects.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class CreateUsersProjects < ActiveRecord::Migration
- def change
- create_table :users_projects do |t|
- t.integer :user_id, :null => false
- t.integer :project_id, :null => false
- t.boolean :read, :default => false
- t.boolean :write, :default => false
- t.boolean :admin, :default => false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20110915205627_add_private_flag_to_project.rb b/db/migrate/20110915205627_add_private_flag_to_project.rb
deleted file mode 100644
index 73c0b9df834..00000000000
--- a/db/migrate/20110915205627_add_private_flag_to_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddPrivateFlagToProject < ActiveRecord::Migration
- def change
- add_column :projects, :private_flag, :boolean, :default => true, :null => false
- end
-end
diff --git a/db/migrate/20110915213352_create_keys.rb b/db/migrate/20110915213352_create_keys.rb
deleted file mode 100644
index d4615b4babf..00000000000
--- a/db/migrate/20110915213352_create_keys.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class CreateKeys < ActiveRecord::Migration
- def change
- create_table :keys do |t|
- t.integer :user_id, :null => false
- t.text :project_id, :null => false
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20110916123731_add_name_to_user.rb b/db/migrate/20110916123731_add_name_to_user.rb
deleted file mode 100644
index 74142b05cb5..00000000000
--- a/db/migrate/20110916123731_add_name_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddNameToUser < ActiveRecord::Migration
- def change
- add_column :users, :name, :string
- end
-end
diff --git a/db/migrate/20110916162511_add_key_title_to_key.rb b/db/migrate/20110916162511_add_key_title_to_key.rb
deleted file mode 100644
index b2eaa51cccf..00000000000
--- a/db/migrate/20110916162511_add_key_title_to_key.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class AddKeyTitleToKey < ActiveRecord::Migration
- def change
- add_column :keys, :key, :text
- add_column :keys, :title, :string
- remove_column :keys, :project_id
- end
-end
diff --git a/db/migrate/20110917212932_add_identifier_to_key.rb b/db/migrate/20110917212932_add_identifier_to_key.rb
deleted file mode 100644
index e572793952a..00000000000
--- a/db/migrate/20110917212932_add_identifier_to_key.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddIdentifierToKey < ActiveRecord::Migration
- def change
- add_column :keys, :identifier, :string
- end
-end
diff --git a/db/migrate/20110921192501_create_issues.rb b/db/migrate/20110921192501_create_issues.rb
deleted file mode 100644
index 63b42ad998e..00000000000
--- a/db/migrate/20110921192501_create_issues.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class CreateIssues < ActiveRecord::Migration
- def change
- create_table :issues do |t|
- t.string :title
- t.text :content
- t.integer :assignee_id
- t.integer :author_id
- t.integer :project_id
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20110922110156_add_code_to_project.rb b/db/migrate/20110922110156_add_code_to_project.rb
deleted file mode 100644
index f54a02bd70a..00000000000
--- a/db/migrate/20110922110156_add_code_to_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddCodeToProject < ActiveRecord::Migration
- def change
- add_column :projects, :code, :string
- end
-end
diff --git a/db/migrate/20110923211333_add_status_to_issue.rb b/db/migrate/20110923211333_add_status_to_issue.rb
deleted file mode 100644
index c53bf46ef72..00000000000
--- a/db/migrate/20110923211333_add_status_to_issue.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddStatusToIssue < ActiveRecord::Migration
- def change
- add_column :issues, :closed, :boolean, :default => false, :null => false
- end
-end
diff --git a/db/migrate/20110924214549_create_rails_admin_histories_table.rb b/db/migrate/20110924214549_create_rails_admin_histories_table.rb
deleted file mode 100644
index 3c743aa2874..00000000000
--- a/db/migrate/20110924214549_create_rails_admin_histories_table.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class CreateRailsAdminHistoriesTable < ActiveRecord::Migration
- def self.up
- create_table :rails_admin_histories do |t|
- t.text :message # title, name, or object_id
- t.string :username
- t.integer :item
- t.string :table
- t.integer :month, :limit => 2
- t.integer :year, :limit => 5
- t.timestamps
- end
- add_index(:rails_admin_histories, [:item, :table, :month, :year], :name => 'index_rails_admin_histories' )
- end
-
- def self.down
- drop_table :rails_admin_histories
- end
-end
diff --git a/db/migrate/20110924215658_add_admin_field_to_user.rb b/db/migrate/20110924215658_add_admin_field_to_user.rb
deleted file mode 100644
index 321587e6957..00000000000
--- a/db/migrate/20110924215658_add_admin_field_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddAdminFieldToUser < ActiveRecord::Migration
- def change
- add_column :users, :admin, :boolean, :default => false, :null => false
- end
-end
diff --git a/db/migrate/20110926082616_remove_admin.rb b/db/migrate/20110926082616_remove_admin.rb
deleted file mode 100644
index aac9ff7888c..00000000000
--- a/db/migrate/20110926082616_remove_admin.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class RemoveAdmin < ActiveRecord::Migration
- def up
- drop_table :rails_admin_histories
- end
-
- def down
- raise "No rollback"
- end
-end
diff --git a/db/migrate/20110927130352_create_notes.rb b/db/migrate/20110927130352_create_notes.rb
deleted file mode 100644
index 72a0e817617..00000000000
--- a/db/migrate/20110927130352_create_notes.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateNotes < ActiveRecord::Migration
- def change
- create_table :notes do |t|
- t.string :note
- t.integer :noteable_id
- t.string :noteable_type
- t.integer :author_id
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20110928140106_add_project_id_for_note.rb b/db/migrate/20110928140106_add_project_id_for_note.rb
deleted file mode 100644
index 3e641089799..00000000000
--- a/db/migrate/20110928140106_add_project_id_for_note.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddProjectIdForNote < ActiveRecord::Migration
- def up
- add_column :notes, :project_id, :integer
- end
-
- def down
- remove_column :notes, :project_id, :integer
- end
-end
diff --git a/db/migrate/20110928142747_change_noteable_id_for_note.rb b/db/migrate/20110928142747_change_noteable_id_for_note.rb
deleted file mode 100644
index dc9d1f0171a..00000000000
--- a/db/migrate/20110928142747_change_noteable_id_for_note.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class ChangeNoteableIdForNote < ActiveRecord::Migration
- def up
- change_column :notes, :noteable_id, :string
- end
-
- def down
- change_column :notes, :noteable_id, :integer
- end
-end
diff --git a/db/migrate/20110928161328_add_attachment_to_note.rb b/db/migrate/20110928161328_add_attachment_to_note.rb
deleted file mode 100644
index 37d9cf10258..00000000000
--- a/db/migrate/20110928161328_add_attachment_to_note.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddAttachmentToNote < ActiveRecord::Migration
- def change
- add_column :notes, :attachment, :string
- end
-end
diff --git a/db/migrate/20111005193700_add_allow_repo_creation_for_user.rb b/db/migrate/20111005193700_add_allow_repo_creation_for_user.rb
deleted file mode 100644
index 82bd94b8089..00000000000
--- a/db/migrate/20111005193700_add_allow_repo_creation_for_user.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddAllowRepoCreationForUser < ActiveRecord::Migration
- def up
- add_column :users, :allowed_create_repo, :boolean, :default => true, :null => false
- end
-
- def down
- remove_column :users, :allowed_create_repo
- end
-end
diff --git a/db/migrate/20111009101738_add_ownerto_project.rb b/db/migrate/20111009101738_add_ownerto_project.rb
deleted file mode 100644
index 8d265533add..00000000000
--- a/db/migrate/20111009101738_add_ownerto_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddOwnertoProject < ActiveRecord::Migration
- def change
- add_column :projects, :owner_id, :integer
- end
-end
diff --git a/db/migrate/20111009110913_add_projects_limit_to_user.rb b/db/migrate/20111009110913_add_projects_limit_to_user.rb
deleted file mode 100644
index 8eb8382b515..00000000000
--- a/db/migrate/20111009110913_add_projects_limit_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddProjectsLimitToUser < ActiveRecord::Migration
- def change
- add_column :users, :projects_limit, :integer, :default => 10
- end
-end
diff --git a/db/migrate/20111009111204_remove_allow_create_repo_from_user.rb b/db/migrate/20111009111204_remove_allow_create_repo_from_user.rb
deleted file mode 100644
index 61452006397..00000000000
--- a/db/migrate/20111009111204_remove_allow_create_repo_from_user.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class RemoveAllowCreateRepoFromUser < ActiveRecord::Migration
- def up
- remove_column :users, :allowed_create_repo
- end
-
- def down
- add_column :users, :allowed_create_repo, :boolean, :default => true, :null => false
- end
-end
diff --git a/db/migrate/20111015154310_add_position_to_issues.rb b/db/migrate/20111015154310_add_position_to_issues.rb
deleted file mode 100644
index 41451a0cabb..00000000000
--- a/db/migrate/20111015154310_add_position_to_issues.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddPositionToIssues < ActiveRecord::Migration
- def change
- add_column :issues, :position, :integer, :default => 0
- end
-end
diff --git a/db/migrate/20111016183422_create_snippets.rb b/db/migrate/20111016183422_create_snippets.rb
deleted file mode 100644
index 9b0bf201cba..00000000000
--- a/db/migrate/20111016183422_create_snippets.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateSnippets < ActiveRecord::Migration
- def change
- create_table :snippets do |t|
- t.string :title
- t.text :content
- t.integer :author_id, :null => false
- t.integer :project_id, :null => false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20111016193417_add_content_type_to_snippets.rb b/db/migrate/20111016193417_add_content_type_to_snippets.rb
deleted file mode 100644
index 511a6793f4f..00000000000
--- a/db/migrate/20111016193417_add_content_type_to_snippets.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddContentTypeToSnippets < ActiveRecord::Migration
- def change
- add_column :snippets, :content_type, :string, :null => false, :default => "txt"
- end
-end
diff --git a/db/migrate/20111016195506_add_file_name_to_snippets.rb b/db/migrate/20111016195506_add_file_name_to_snippets.rb
deleted file mode 100644
index d378d225ec1..00000000000
--- a/db/migrate/20111016195506_add_file_name_to_snippets.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddFileNameToSnippets < ActiveRecord::Migration
- def change
- add_column :snippets, :file_name, :string
- remove_column :snippets, :content_type
- end
-end
diff --git a/db/migrate/20111019212429_add_social_to_user.rb b/db/migrate/20111019212429_add_social_to_user.rb
deleted file mode 100644
index b0ffe5366a4..00000000000
--- a/db/migrate/20111019212429_add_social_to_user.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class AddSocialToUser < ActiveRecord::Migration
- def change
- add_column :users, :skype, :string
- add_column :users, :linkedin, :string
- add_column :users, :twitter, :string
- end
-end
diff --git a/db/migrate/20111021101550_change_social_fields_in_users.rb b/db/migrate/20111021101550_change_social_fields_in_users.rb
deleted file mode 100644
index 6e506c1cf9d..00000000000
--- a/db/migrate/20111021101550_change_social_fields_in_users.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class ChangeSocialFieldsInUsers < ActiveRecord::Migration
- def up
- remove_column :users, :skype
- remove_column :users, :linkedin
- remove_column :users, :twitter
-
- add_column :users, :skype, :string, {:null => false, :default => ''}
- add_column :users, :linkedin, :string, {:null => false, :default => ''}
- add_column :users, :twitter, :string, {:null => false, :default => ''}
- end
-
- def down
- end
-end
diff --git a/db/migrate/20111025134235_add_high_label_to_issue.rb b/db/migrate/20111025134235_add_high_label_to_issue.rb
deleted file mode 100644
index 676eaaf8c1b..00000000000
--- a/db/migrate/20111025134235_add_high_label_to_issue.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddHighLabelToIssue < ActiveRecord::Migration
- def change
- add_column :issues, :critical, :boolean, :default => false, :null => false
- end
-end
diff --git a/db/migrate/20111027051828_add_expires_at_to_snippets.rb b/db/migrate/20111027051828_add_expires_at_to_snippets.rb
deleted file mode 100644
index 0d94b33376b..00000000000
--- a/db/migrate/20111027051828_add_expires_at_to_snippets.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddExpiresAtToSnippets < ActiveRecord::Migration
- def change
- add_column :snippets, :expires_at, :datetime
- end
-end
diff --git a/db/migrate/20111027142641_change_note_note_to_text.rb b/db/migrate/20111027142641_change_note_note_to_text.rb
deleted file mode 100644
index d762d361aec..00000000000
--- a/db/migrate/20111027142641_change_note_note_to_text.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class ChangeNoteNoteToText < ActiveRecord::Migration
- def up
- change_column :notes, :note, :text
- end
-
- def down
- end
-end
diff --git a/db/migrate/20111027152724_issue_conten_to_note.rb b/db/migrate/20111027152724_issue_conten_to_note.rb
deleted file mode 100644
index 0677fee6b97..00000000000
--- a/db/migrate/20111027152724_issue_conten_to_note.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-class IssueContenToNote < ActiveRecord::Migration
- def up
- puts "Issue content is deprecated -> move to notes"
- Issue.find_each(:batch_size => 100) do |issue|
- next if issue.content.blank?
- note = Note.new(
- :note => issue.content,
- :project_id => issue.project_id,
- :noteable => issue,
- :created_at => issue.created_at,
- :updated_at => issue.created_at
- )
- note.author_id = issue.author_id
-
- if note.save
- issue.update_attributes(:content => nil)
- print "."
- else
- print "F"
- end
- end
-
- total = Issue.where("content is not null").count
-
- if total > 0
- puts "content of #{total} issues were not migrated"
- else
- puts "Done"
- end
- end
-
- def down
- end
-end
diff --git a/db/migrate/20111101222453_acts_as_taggable_on_migration.rb b/db/migrate/20111101222453_acts_as_taggable_on_migration.rb
deleted file mode 100644
index 16610615f9d..00000000000
--- a/db/migrate/20111101222453_acts_as_taggable_on_migration.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-class ActsAsTaggableOnMigration < ActiveRecord::Migration
- def self.up
- create_table :tags do |t|
- t.string :name
- end
-
- create_table :taggings do |t|
- t.references :tag
-
- # You should make sure that the column created is
- # long enough to store the required class names.
- t.references :taggable, :polymorphic => true
- t.references :tagger, :polymorphic => true
-
- t.string :context
-
- t.datetime :created_at
- end
-
- add_index :taggings, :tag_id
- add_index :taggings, [:taggable_id, :taggable_type, :context]
- end
-
- def self.down
- drop_table :taggings
- drop_table :tags
- end
-end
diff --git a/db/migrate/20111111093150_remove_content_from_issues.rb b/db/migrate/20111111093150_remove_content_from_issues.rb
deleted file mode 100644
index 30bcdfb543b..00000000000
--- a/db/migrate/20111111093150_remove_content_from_issues.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class RemoveContentFromIssues < ActiveRecord::Migration
- def up
- remove_column :issues, :content
- end
-
- def down
- add_column :issues, :content, :text
- end
-end
diff --git a/db/migrate/20111115063954_add_authentication_token_to_users.rb b/db/migrate/20111115063954_add_authentication_token_to_users.rb
deleted file mode 100644
index 84433656d6c..00000000000
--- a/db/migrate/20111115063954_add_authentication_token_to_users.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddAuthenticationTokenToUsers < ActiveRecord::Migration
- def change
- add_column :users, :authentication_token, :string
- end
-end
diff --git a/db/migrate/20111124115339_add_extra_field_to_issue.rb b/db/migrate/20111124115339_add_extra_field_to_issue.rb
deleted file mode 100644
index 4946c6fb0bc..00000000000
--- a/db/migrate/20111124115339_add_extra_field_to_issue.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddExtraFieldToIssue < ActiveRecord::Migration
- def change
- add_column :issues, :branch_name, :string, :null => true
- end
-end
diff --git a/db/migrate/20111127155345_create_merge_requests.rb b/db/migrate/20111127155345_create_merge_requests.rb
deleted file mode 100644
index 1555ae84041..00000000000
--- a/db/migrate/20111127155345_create_merge_requests.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class CreateMergeRequests < ActiveRecord::Migration
- def change
- create_table :merge_requests do |t|
- t.string :target_branch, :null => false
- t.string :source_branch, :null => false
- t.integer :project_id, :null => false
- t.integer :author_id
- t.integer :assignee_id
- t.string :title
- t.boolean :closed, :default => false, :null => false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20111206213842_add_advanced_rights_to_team_member.rb b/db/migrate/20111206213842_add_advanced_rights_to_team_member.rb
deleted file mode 100644
index e2695fdafa7..00000000000
--- a/db/migrate/20111206213842_add_advanced_rights_to_team_member.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddAdvancedRightsToTeamMember < ActiveRecord::Migration
- def change
- add_column :users_projects, :repo_access, :integer, :default => 0, :null => false
- add_column :users_projects, :project_access, :integer, :default => 0, :null => false
- end
-end
diff --git a/db/migrate/20111206222316_migrate_to_new_rights.rb b/db/migrate/20111206222316_migrate_to_new_rights.rb
deleted file mode 100644
index 22e0c1ce994..00000000000
--- a/db/migrate/20111206222316_migrate_to_new_rights.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-class MigrateToNewRights < ActiveRecord::Migration
- def up
- # Repository access
- UsersProject.update_all("repo_access = 2", :write => true)
- UsersProject.update_all("repo_access = 1", :read => true, :write => false)
-
- # Project access
- UsersProject.update_all("project_access = 1", :read => true, :write => false, :admin => false)
- UsersProject.update_all("project_access = 2", :read => true, :write => true, :admin => false)
- UsersProject.update_all("project_access = 3", :read => true, :write => true, :admin => true)
-
- # Remove old fields
- remove_column :users_projects, :read
- remove_column :users_projects, :write
- remove_column :users_projects, :admin
- end
-
- def down
- end
-end
diff --git a/db/migrate/20111207211728_add_default_branch_to_project.rb b/db/migrate/20111207211728_add_default_branch_to_project.rb
deleted file mode 100644
index 5c2107f7aa5..00000000000
--- a/db/migrate/20111207211728_add_default_branch_to_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddDefaultBranchToProject < ActiveRecord::Migration
- def change
- add_column :projects, :default_branch, :string, :null => false, :default => "master"
- end
-end
diff --git a/db/migrate/20111214091851_create_web_hooks.rb b/db/migrate/20111214091851_create_web_hooks.rb
deleted file mode 100644
index c6ba89c10e1..00000000000
--- a/db/migrate/20111214091851_create_web_hooks.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class CreateWebHooks < ActiveRecord::Migration
- def change
- create_table :web_hooks do |t|
- t.string :url
- t.integer :project_id
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20111220190817_add_coloscheme_option_to_user.rb b/db/migrate/20111220190817_add_coloscheme_option_to_user.rb
deleted file mode 100644
index fe06c3aa34a..00000000000
--- a/db/migrate/20111220190817_add_coloscheme_option_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddColoschemeOptionToUser < ActiveRecord::Migration
- def change
- add_column :users, :dark_scheme, :boolean, :default => false, :null => false
- end
-end
diff --git a/db/migrate/20111231111825_add_project_id_to_key.rb b/db/migrate/20111231111825_add_project_id_to_key.rb
deleted file mode 100644
index dc80cbdb71f..00000000000
--- a/db/migrate/20111231111825_add_project_id_to_key.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddProjectIdToKey < ActiveRecord::Migration
- def change
- add_column :keys, :project_id, :integer, :null => true
- change_column :keys, :user_id, :integer, :null => true
- end
-end
diff --git a/db/migrate/20120110180749_add_line_number_to_note.rb b/db/migrate/20120110180749_add_line_number_to_note.rb
deleted file mode 100644
index 9bdcce3c47d..00000000000
--- a/db/migrate/20120110180749_add_line_number_to_note.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddLineNumberToNote < ActiveRecord::Migration
- def change
- add_column :notes, :line_code, :string, :null => true
- end
-end
diff --git a/db/migrate/20120119202326_add_indexes.rb b/db/migrate/20120119202326_add_indexes.rb
deleted file mode 100644
index ee07176a267..00000000000
--- a/db/migrate/20120119202326_add_indexes.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddIndexes < ActiveRecord::Migration
- def change
- add_index :issues, :project_id
- add_index :merge_requests, :project_id
- add_index :notes, :noteable_id
- add_index :notes, :noteable_type
- end
-
-end
diff --git a/db/migrate/20120121122616_fix_noteable_id.rb b/db/migrate/20120121122616_fix_noteable_id.rb
deleted file mode 100644
index d110e8cd63b..00000000000
--- a/db/migrate/20120121122616_fix_noteable_id.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class FixNoteableId < ActiveRecord::Migration
- def up
- change_column :notes, :noteable_id, :string, :limit => 255
- end
-
- def down
- end
-end
diff --git a/db/migrate/20120206170141_add_modularity_fields_to_project.rb b/db/migrate/20120206170141_add_modularity_fields_to_project.rb
deleted file mode 100644
index d63de0c2be3..00000000000
--- a/db/migrate/20120206170141_add_modularity_fields_to_project.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class AddModularityFieldsToProject < ActiveRecord::Migration
- def change
- add_column :projects, :issues_enabled, :boolean, :null => false, :default => true
- add_column :projects, :wall_enabled, :boolean, :null => false, :default => true
- add_column :projects, :merge_requests_enabled, :boolean, :null => false, :default => true
- end
-end
diff --git a/db/migrate/20120215182305_create_protected_branches.rb b/db/migrate/20120215182305_create_protected_branches.rb
deleted file mode 100644
index 841d08c33d5..00000000000
--- a/db/migrate/20120215182305_create_protected_branches.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class CreateProtectedBranches < ActiveRecord::Migration
- def change
- create_table :protected_branches do |t|
- t.integer :project_id, :null => false
- t.string :name, :null => false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20120216085842_move_to_roles_permissions.rb b/db/migrate/20120216085842_move_to_roles_permissions.rb
deleted file mode 100644
index 36d02cf972a..00000000000
--- a/db/migrate/20120216085842_move_to_roles_permissions.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class MoveToRolesPermissions < ActiveRecord::Migration
- def up
- repo_n = 0
- repo_r = 1
- repo_rw = 2
- project_rwa = 3
-
-
- # Build masters and reset repo_access
- UsersProject.update_all({:project_access => UsersProject::MASTER, :repo_access => 99 }, ["project_access = ?", project_rwa])
-
- # Build other roles based on repo access
- UsersProject.update_all ["project_access = ?", UsersProject::DEVELOPER], ["repo_access = ?", repo_rw]
- UsersProject.update_all ["project_access = ?", UsersProject::REPORTER], ["repo_access = ?", repo_r]
- UsersProject.update_all ["project_access = ?", UsersProject::GUEST], ["repo_access = ?", repo_n]
-
- remove_column :users_projects, :repo_access
- end
-
- def down
- end
-end
diff --git a/db/migrate/20120216215008_create_wikis.rb b/db/migrate/20120216215008_create_wikis.rb
deleted file mode 100644
index 38947df389c..00000000000
--- a/db/migrate/20120216215008_create_wikis.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateWikis < ActiveRecord::Migration
- def change
- create_table :wikis do |t|
- t.string :title
- t.text :content
- t.integer :project_id
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20120219130957_add_slug_to_wiki.rb b/db/migrate/20120219130957_add_slug_to_wiki.rb
deleted file mode 100644
index 5f2d5970a89..00000000000
--- a/db/migrate/20120219130957_add_slug_to_wiki.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddSlugToWiki < ActiveRecord::Migration
- def change
- add_column :wikis, :slug, :string
-
- end
-end
diff --git a/db/migrate/20120219140810_add_wiki_enabled_to_project.rb b/db/migrate/20120219140810_add_wiki_enabled_to_project.rb
deleted file mode 100644
index ebd71bea84d..00000000000
--- a/db/migrate/20120219140810_add_wiki_enabled_to_project.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddWikiEnabledToProject < ActiveRecord::Migration
- def change
- add_column :projects, :wiki_enabled, :boolean, :default => true, :null => false
-
- end
-end
diff --git a/db/migrate/20120219193300_add_user_to_wiki.rb b/db/migrate/20120219193300_add_user_to_wiki.rb
deleted file mode 100644
index 8a6c0a06ef0..00000000000
--- a/db/migrate/20120219193300_add_user_to_wiki.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddUserToWiki < ActiveRecord::Migration
- def change
- add_column :wikis, :user_id, :integer
-
- end
-end
diff --git a/db/migrate/20120228130210_create_events.rb b/db/migrate/20120228130210_create_events.rb
deleted file mode 100644
index c01f557aaaa..00000000000
--- a/db/migrate/20120228130210_create_events.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class CreateEvents < ActiveRecord::Migration
- def change
- create_table :events do |t|
- t.string :target_type, :null => true
- t.integer :target_id, :null => true
-
- t.string :title, :null => true
- t.text :data, :null => true
- t.integer :project_id, :null => true
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20120228134252_add_action_to_event.rb b/db/migrate/20120228134252_add_action_to_event.rb
deleted file mode 100644
index aade3d90a80..00000000000
--- a/db/migrate/20120228134252_add_action_to_event.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddActionToEvent < ActiveRecord::Migration
- def change
- add_column :events, :action, :integer, :null => true
- end
-end
diff --git a/db/migrate/20120301185805_add_theme_to_user.rb b/db/migrate/20120301185805_add_theme_to_user.rb
deleted file mode 100644
index 7c2e55692b0..00000000000
--- a/db/migrate/20120301185805_add_theme_to_user.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddThemeToUser < ActiveRecord::Migration
- def change
- add_column :users, :theme_id, :integer, :null => false, :default => 1
-
- end
-end
diff --git a/db/migrate/20120307095918_add_author_id_to_event.rb b/db/migrate/20120307095918_add_author_id_to_event.rb
deleted file mode 100644
index 1d24d41e424..00000000000
--- a/db/migrate/20120307095918_add_author_id_to_event.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddAuthorIdToEvent < ActiveRecord::Migration
- def change
- add_column :events, :author_id, :integer, :null => true
- end
-end
diff --git a/db/migrate/20120315111711_add_commits_diff_store_to_merge_request.rb b/db/migrate/20120315111711_add_commits_diff_store_to_merge_request.rb
deleted file mode 100644
index 2dc1dfb4b6e..00000000000
--- a/db/migrate/20120315111711_add_commits_diff_store_to_merge_request.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddCommitsDiffStoreToMergeRequest < ActiveRecord::Migration
- def change
- add_column :merge_requests, :st_commits, :text, :null => true
- add_column :merge_requests, :st_diffs, :text, :null => true
- end
-end
diff --git a/db/migrate/20120315132931_add_merged_to_merge_request.rb b/db/migrate/20120315132931_add_merged_to_merge_request.rb
deleted file mode 100644
index 2deb59e4420..00000000000
--- a/db/migrate/20120315132931_add_merged_to_merge_request.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddMergedToMergeRequest < ActiveRecord::Migration
- def change
- add_column :merge_requests, :merged, :boolean, :null => false, :default => false
- end
-end
diff --git a/db/migrate/20120317095543_add_description_to_issues.rb b/db/migrate/20120317095543_add_description_to_issues.rb
deleted file mode 100644
index e47e3f8e898..00000000000
--- a/db/migrate/20120317095543_add_description_to_issues.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddDescriptionToIssues < ActiveRecord::Migration
- def change
- add_column :issues, :description, :text
- end
-end
diff --git a/db/migrate/20120323221339_add_bio_field_to_user.rb b/db/migrate/20120323221339_add_bio_field_to_user.rb
deleted file mode 100644
index 80a4dec5971..00000000000
--- a/db/migrate/20120323221339_add_bio_field_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddBioFieldToUser < ActiveRecord::Migration
- def change
- add_column :users, :bio, :string, :null => true
- end
-end
diff --git a/db/migrate/20120329170745_add_automerge_to_merge_request.rb b/db/migrate/20120329170745_add_automerge_to_merge_request.rb
deleted file mode 100644
index de7c68ee1cb..00000000000
--- a/db/migrate/20120329170745_add_automerge_to_merge_request.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddAutomergeToMergeRequest < ActiveRecord::Migration
- def change
- add_column :merge_requests, :state, :integer, :null => false, :default => 1
- end
-end
diff --git a/db/migrate/20120405211750_increase_mr_text_column_size.rb b/db/migrate/20120405211750_increase_mr_text_column_size.rb
deleted file mode 100644
index 4fbef622da4..00000000000
--- a/db/migrate/20120405211750_increase_mr_text_column_size.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class IncreaseMrTextColumnSize < ActiveRecord::Migration
- def up
- # MYSQL LARGETEXT for merge request
- change_column :merge_requests, :st_diffs, :text, :limit => 4294967295
- change_column :merge_requests, :st_commits, :text, :limit => 4294967295
- end
-
- def down
- end
-end
diff --git a/db/migrate/20120408180246_create_milestones.rb b/db/migrate/20120408180246_create_milestones.rb
deleted file mode 100644
index ed3a510d660..00000000000
--- a/db/migrate/20120408180246_create_milestones.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateMilestones < ActiveRecord::Migration
- def change
- create_table :milestones do |t|
- t.string :title, :null => false
- t.integer :project_id, :null => false
- t.text :description
- t.date :due_date
- t.boolean :closed, :default => false, :null => false
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20120408181910_add_milestone_id_to_issue.rb b/db/migrate/20120408181910_add_milestone_id_to_issue.rb
deleted file mode 100644
index a6b44090c1c..00000000000
--- a/db/migrate/20120408181910_add_milestone_id_to_issue.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddMilestoneIdToIssue < ActiveRecord::Migration
- def change
- add_column :issues, :milestone_id, :integer, :null => true
- end
-end
diff --git a/db/migrate/20120413135904_add_blocked_field_to_user.rb b/db/migrate/20120413135904_add_blocked_field_to_user.rb
deleted file mode 100644
index 050450bf034..00000000000
--- a/db/migrate/20120413135904_add_blocked_field_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddBlockedFieldToUser < ActiveRecord::Migration
- def change
- add_column :users, :blocked, :boolean, :null => false, :default => false
- end
-end
diff --git a/db/migrate/20120627145613_remove_critical_from_issue.rb b/db/migrate/20120627145613_remove_critical_from_issue.rb
deleted file mode 100644
index f8d0797197b..00000000000
--- a/db/migrate/20120627145613_remove_critical_from_issue.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class RemoveCriticalFromIssue < ActiveRecord::Migration
- def up
- remove_column :issues, :critical
- end
-
- def down
- add_column :issues, :critical, :boolean, :null => true, :default => false
- end
-end
diff --git a/db/migrate/20120706065612_add_lockable_to_users.rb b/db/migrate/20120706065612_add_lockable_to_users.rb
deleted file mode 100644
index cf86e660876..00000000000
--- a/db/migrate/20120706065612_add_lockable_to_users.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class AddLockableToUsers < ActiveRecord::Migration
- def change
- add_column :users, :failed_attempts, :integer, :default => 0
- add_column :users, :locked_at, :datetime
- end
-end
diff --git a/db/migrate/20120712080407_add_type_to_web_hook.rb b/db/migrate/20120712080407_add_type_to_web_hook.rb
deleted file mode 100644
index 18ab024c817..00000000000
--- a/db/migrate/20120712080407_add_type_to_web_hook.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddTypeToWebHook < ActiveRecord::Migration
- def change
- add_column :web_hooks, :type, :string, :default => "ProjectHook"
- end
-end
diff --git a/db/migrate/20120729131232_add_extern_auth_provider_to_users.rb b/db/migrate/20120729131232_add_extern_auth_provider_to_users.rb
deleted file mode 100644
index d5e66ba4d3b..00000000000
--- a/db/migrate/20120729131232_add_extern_auth_provider_to_users.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class AddExternAuthProviderToUsers < ActiveRecord::Migration
- def change
- add_column :users, :extern_uid, :string
- add_column :users, :provider, :string
-
- add_index :users, [:extern_uid, :provider], :unique => true
- end
-end
diff --git a/db/migrate/20120905043334_set_default_branch_default_to_nil.rb b/db/migrate/20120905043334_set_default_branch_default_to_nil.rb
deleted file mode 100644
index f5956fe8751..00000000000
--- a/db/migrate/20120905043334_set_default_branch_default_to_nil.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class SetDefaultBranchDefaultToNil < ActiveRecord::Migration
- def up
- # Set the default_branch to allow nil, and default it to nil
- change_column_null(:projects, :default_branch, true)
- change_column_default(:projects, :default_branch, nil)
- end
-
- def down
- change_column_null(:projects, :default_branch, false)
- change_column_default(:projects, :default_branch, 'master')
- end
-end
diff --git a/db/migrate/20121002150926_create_groups.rb b/db/migrate/20121002150926_create_groups.rb
deleted file mode 100644
index ac178294c02..00000000000
--- a/db/migrate/20121002150926_create_groups.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateGroups < ActiveRecord::Migration
- def change
- create_table :groups do |t|
- t.string :name, null: false
- t.string :code, null: false
- t.integer :owner_id, null: false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20121002151033_add_group_id_to_project.rb b/db/migrate/20121002151033_add_group_id_to_project.rb
deleted file mode 100644
index 683fbfec513..00000000000
--- a/db/migrate/20121002151033_add_group_id_to_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddGroupIdToProject < ActiveRecord::Migration
- def change
- add_column :projects, :group_id, :integer
- end
-end
diff --git a/db/migrate/20121009205010_postgres_create_integer_cast.rb b/db/migrate/20121009205010_postgres_create_integer_cast.rb
deleted file mode 100644
index b9a971387d1..00000000000
--- a/db/migrate/20121009205010_postgres_create_integer_cast.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class PostgresCreateIntegerCast < ActiveRecord::Migration
- def up
- execute <<-SQL
- CREATE CAST (integer AS text) WITH INOUT AS IMPLICIT;
- SQL
- rescue ActiveRecord::StatementInvalid
- end
-
- def down
- execute <<-SQL
- DROP CAST (integer AS text);
- SQL
- rescue ActiveRecord::StatementInvalid
- end
-end
diff --git a/db/migrate/20121026114600_add_milestone_id_to_merge_requests.rb b/db/migrate/20121026114600_add_milestone_id_to_merge_requests.rb
deleted file mode 100644
index b5167724348..00000000000
--- a/db/migrate/20121026114600_add_milestone_id_to_merge_requests.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddMilestoneIdToMergeRequests < ActiveRecord::Migration
- def change
- add_column :merge_requests, :milestone_id, :integer, :null => true
- end
-end
diff --git a/db/migrate/20121119170638_create_services.rb b/db/migrate/20121119170638_create_services.rb
deleted file mode 100644
index f7cac1445a7..00000000000
--- a/db/migrate/20121119170638_create_services.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateServices < ActiveRecord::Migration
- def change
- create_table :services do |t|
- t.string :type
- t.string :title
- t.string :token
- t.integer :project_id, null: false
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20121120051432_add_service_id_to_web_hook.rb b/db/migrate/20121120051432_add_service_id_to_web_hook.rb
deleted file mode 100644
index 77adf92578f..00000000000
--- a/db/migrate/20121120051432_add_service_id_to_web_hook.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddServiceIdToWebHook < ActiveRecord::Migration
- def change
- add_column :web_hooks, :service_id, :integer, null: true
- end
-end
diff --git a/db/migrate/20121120103700_add_active_to_service.rb b/db/migrate/20121120103700_add_active_to_service.rb
deleted file mode 100644
index f45ef52e6f0..00000000000
--- a/db/migrate/20121120103700_add_active_to_service.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddActiveToService < ActiveRecord::Migration
- def change
- add_column :services, :active, :boolean, default: false, null: false
- end
-end
diff --git a/db/migrate/20121120113838_add_project_url_to_service.rb b/db/migrate/20121120113838_add_project_url_to_service.rb
deleted file mode 100644
index 13ffbdb192f..00000000000
--- a/db/migrate/20121120113838_add_project_url_to_service.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddProjectUrlToService < ActiveRecord::Migration
- def change
- add_column :services, :project_url, :string, null: true
- end
-end
diff --git a/db/migrate/20121122145155_convert_group_to_namespace.rb b/db/migrate/20121122145155_convert_group_to_namespace.rb
deleted file mode 100644
index fc8b023d814..00000000000
--- a/db/migrate/20121122145155_convert_group_to_namespace.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class ConvertGroupToNamespace < ActiveRecord::Migration
- def up
- rename_table 'groups', 'namespaces'
- add_column :namespaces, :type, :string, null: true
-
- # Migrate old groups
- Namespace.update_all(type: 'Group')
- end
-
- def down
- raise 'Rollback is not allowed'
- end
-end
diff --git a/db/migrate/20121122150932_add_namespace_id_to_project.rb b/db/migrate/20121122150932_add_namespace_id_to_project.rb
deleted file mode 100644
index 904f3aa32be..00000000000
--- a/db/migrate/20121122150932_add_namespace_id_to_project.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddNamespaceIdToProject < ActiveRecord::Migration
- def change
- rename_column :projects, :group_id, :namespace_id
- end
-end
diff --git a/db/migrate/20121123104937_add_username_to_user.rb b/db/migrate/20121123104937_add_username_to_user.rb
deleted file mode 100644
index 04232a119d9..00000000000
--- a/db/migrate/20121123104937_add_username_to_user.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddUsernameToUser < ActiveRecord::Migration
- def change
- add_column :users, :username, :string, null: true
- end
-end
diff --git a/db/migrate/20121123164910_rename_code_to_path.rb b/db/migrate/20121123164910_rename_code_to_path.rb
deleted file mode 100644
index fb10baf58cf..00000000000
--- a/db/migrate/20121123164910_rename_code_to_path.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class RenameCodeToPath < ActiveRecord::Migration
- def up
- remove_column :projects, :code
- rename_column :namespaces, :code, :path
- end
-
- def down
- add_column :projects, :code, :string
- rename_column :namespaces, :path, :code
- end
-end
diff --git a/db/migrate/20121203154450_add_events_indices.rb b/db/migrate/20121203154450_add_events_indices.rb
deleted file mode 100644
index 502a2ccbcda..00000000000
--- a/db/migrate/20121203154450_add_events_indices.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class AddEventsIndices < ActiveRecord::Migration
- def change
- add_index :events, :project_id
- add_index :events, :author_id
- add_index :events, :action
- add_index :events, :target_type
- end
-end
diff --git a/db/migrate/20121203160507_more_indices.rb b/db/migrate/20121203160507_more_indices.rb
deleted file mode 100644
index 52170a7c597..00000000000
--- a/db/migrate/20121203160507_more_indices.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class MoreIndices < ActiveRecord::Migration
- def change
- add_index :notes, :project_id
- add_index :namespaces, :owner_id
- add_index :keys, :user_id
-
- add_index :projects, :namespace_id
- add_index :projects, :owner_id
-
- add_index :services, :project_id
- add_index :snippets, :project_id
-
- add_index :users_projects, :project_id
-
- # Issues
- add_index :issues, :assignee_id
- add_index :issues, :milestone_id
- add_index :issues, :author_id
-
- # Merge Requests
- add_index :merge_requests, :assignee_id
- add_index :merge_requests, :milestone_id
- add_index :merge_requests, :author_id
-
- end
-end
diff --git a/db/migrate/20121205201726_add_more_indexes.rb b/db/migrate/20121205201726_add_more_indexes.rb
deleted file mode 100644
index a2b36f7fdf9..00000000000
--- a/db/migrate/20121205201726_add_more_indexes.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-class AddMoreIndexes < ActiveRecord::Migration
- def change
- add_index :events, :created_at
- add_index :events, :target_id
-
- add_index :issues, :closed
- add_index :issues, :created_at
- add_index :issues, :title
-
- add_index :keys, :identifier
- # FIXME: MySQL can't index text columns
- #add_index :keys, :key
- add_index :keys, :project_id
-
- add_index :merge_requests, :closed
- add_index :merge_requests, :created_at
- add_index :merge_requests, :source_branch
- add_index :merge_requests, :target_branch
- add_index :merge_requests, :title
-
- add_index :milestones, :due_date
- add_index :milestones, :project_id
-
- add_index :namespaces, :name
- add_index :namespaces, :path
- add_index :namespaces, :type
-
- add_index :notes, :created_at
-
- add_index :snippets, :created_at
- add_index :snippets, :expires_at
-
- add_index :users, :admin
- add_index :users, :blocked
- add_index :users, :name
- add_index :users, :username
-
- add_index :users_projects, :project_access
- add_index :users_projects, :user_id
-
- add_index :wikis, :project_id
- add_index :wikis, :slug
- end
-end
diff --git a/db/migrate/20121218164840_move_noteable_commit_to_own_field.rb b/db/migrate/20121218164840_move_noteable_commit_to_own_field.rb
deleted file mode 100644
index 6f2da4136a3..00000000000
--- a/db/migrate/20121218164840_move_noteable_commit_to_own_field.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-class MoveNoteableCommitToOwnField < ActiveRecord::Migration
- def up
- add_column :notes, :commit_id, :string, null: true
- add_column :notes, :new_noteable_id, :integer, null: true
- Note.where(noteable_type: 'Commit').update_all('commit_id = noteable_id')
-
- if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
- Note.where("noteable_type != 'Commit'").update_all('new_noteable_id = CAST (noteable_id AS INTEGER)')
- else
- Note.where("noteable_type != 'Commit'").update_all('new_noteable_id = noteable_id')
- end
-
- remove_column :notes, :noteable_id
- rename_column :notes, :new_noteable_id, :noteable_id
- end
-
- def down
- raise ActiveRecord::IrreversibleMigration
- end
-end
diff --git a/db/migrate/20121219095402_indices_for_notes.rb b/db/migrate/20121219095402_indices_for_notes.rb
deleted file mode 100644
index 4c5d041ce81..00000000000
--- a/db/migrate/20121219095402_indices_for_notes.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class IndicesForNotes < ActiveRecord::Migration
- def change
- add_index :notes, :commit_id
- add_index :notes, [:project_id, :noteable_type]
- end
-end
diff --git a/db/migrate/20121219183753_create_user_teams.rb b/db/migrate/20121219183753_create_user_teams.rb
deleted file mode 100644
index 65c4d053982..00000000000
--- a/db/migrate/20121219183753_create_user_teams.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateUserTeams < ActiveRecord::Migration
- def change
- create_table :user_teams do |t|
- t.string :name
- t.string :path
- t.integer :owner_id
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20121220064104_create_user_team_project_relationships.rb b/db/migrate/20121220064104_create_user_team_project_relationships.rb
deleted file mode 100644
index 8eb654c8728..00000000000
--- a/db/migrate/20121220064104_create_user_team_project_relationships.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateUserTeamProjectRelationships < ActiveRecord::Migration
- def change
- create_table :user_team_project_relationships do |t|
- t.integer :project_id
- t.integer :user_team_id
- t.integer :greatest_access
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20121220064453_create_user_team_user_relationships.rb b/db/migrate/20121220064453_create_user_team_user_relationships.rb
deleted file mode 100644
index 7783b0ae432..00000000000
--- a/db/migrate/20121220064453_create_user_team_user_relationships.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateUserTeamUserRelationships < ActiveRecord::Migration
- def change
- create_table :user_team_user_relationships do |t|
- t.integer :user_id
- t.integer :user_team_id
- t.boolean :group_admin
- t.integer :permission
-
- t.timestamps
- end
- end
-end
diff --git a/db/migrate/20121220064453_init_schema.rb b/db/migrate/20121220064453_init_schema.rb
new file mode 100644
index 00000000000..90f5eb08e8c
--- /dev/null
+++ b/db/migrate/20121220064453_init_schema.rb
@@ -0,0 +1,306 @@
+class InitSchema < ActiveRecord::Migration
+ def up
+
+ create_table "events", force: true do |t|
+ t.string "target_type"
+ t.integer "target_id"
+ t.string "title"
+ t.text "data"
+ t.integer "project_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "action"
+ t.integer "author_id"
+ end
+
+ add_index "events", ["action"], name: "index_events_on_action", using: :btree
+ add_index "events", ["author_id"], name: "index_events_on_author_id", using: :btree
+ add_index "events", ["created_at"], name: "index_events_on_created_at", using: :btree
+ add_index "events", ["project_id"], name: "index_events_on_project_id", using: :btree
+ add_index "events", ["target_id"], name: "index_events_on_target_id", using: :btree
+ add_index "events", ["target_type"], name: "index_events_on_target_type", using: :btree
+
+ create_table "issues", force: true do |t|
+ t.string "title"
+ t.integer "assignee_id"
+ t.integer "author_id"
+ t.integer "project_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.boolean "closed", default: false, null: false
+ t.integer "position", default: 0
+ t.string "branch_name"
+ t.text "description"
+ t.integer "milestone_id"
+ end
+
+ add_index "issues", ["assignee_id"], name: "index_issues_on_assignee_id", using: :btree
+ add_index "issues", ["author_id"], name: "index_issues_on_author_id", using: :btree
+ add_index "issues", ["closed"], name: "index_issues_on_closed", using: :btree
+ add_index "issues", ["created_at"], name: "index_issues_on_created_at", using: :btree
+ add_index "issues", ["milestone_id"], name: "index_issues_on_milestone_id", using: :btree
+ add_index "issues", ["project_id"], name: "index_issues_on_project_id", using: :btree
+ add_index "issues", ["title"], name: "index_issues_on_title", using: :btree
+
+ create_table "keys", force: true do |t|
+ t.integer "user_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.text "key"
+ t.string "title"
+ t.string "identifier"
+ t.integer "project_id"
+ end
+
+ add_index "keys", ["identifier"], name: "index_keys_on_identifier", using: :btree
+ add_index "keys", ["project_id"], name: "index_keys_on_project_id", using: :btree
+ add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree
+
+ create_table "merge_requests", force: true do |t|
+ t.string "target_branch", null: false
+ t.string "source_branch", null: false
+ t.integer "project_id", null: false
+ t.integer "author_id"
+ t.integer "assignee_id"
+ t.string "title"
+ t.boolean "closed", default: false, null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.text "st_commits", limit: 2147483647
+ t.text "st_diffs", limit: 2147483647
+ t.boolean "merged", default: false, null: false
+ t.integer "state", default: 1, null: false
+ t.integer "milestone_id"
+ end
+
+ add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree
+ add_index "merge_requests", ["author_id"], name: "index_merge_requests_on_author_id", using: :btree
+ add_index "merge_requests", ["closed"], name: "index_merge_requests_on_closed", using: :btree
+ add_index "merge_requests", ["created_at"], name: "index_merge_requests_on_created_at", using: :btree
+ add_index "merge_requests", ["milestone_id"], name: "index_merge_requests_on_milestone_id", using: :btree
+ add_index "merge_requests", ["project_id"], name: "index_merge_requests_on_project_id", using: :btree
+ add_index "merge_requests", ["source_branch"], name: "index_merge_requests_on_source_branch", using: :btree
+ add_index "merge_requests", ["target_branch"], name: "index_merge_requests_on_target_branch", using: :btree
+ add_index "merge_requests", ["title"], name: "index_merge_requests_on_title", using: :btree
+
+ create_table "milestones", force: true do |t|
+ t.string "title", null: false
+ t.integer "project_id", null: false
+ t.text "description"
+ t.date "due_date"
+ t.boolean "closed", default: false, null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "milestones", ["due_date"], name: "index_milestones_on_due_date", using: :btree
+ add_index "milestones", ["project_id"], name: "index_milestones_on_project_id", using: :btree
+
+ create_table "namespaces", force: true do |t|
+ t.string "name", null: false
+ t.string "path", null: false
+ t.integer "owner_id", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "type"
+ end
+
+ add_index "namespaces", ["name"], name: "index_namespaces_on_name", using: :btree
+ add_index "namespaces", ["owner_id"], name: "index_namespaces_on_owner_id", using: :btree
+ add_index "namespaces", ["path"], name: "index_namespaces_on_path", using: :btree
+ add_index "namespaces", ["type"], name: "index_namespaces_on_type", using: :btree
+
+ create_table "notes", force: true do |t|
+ t.text "note"
+ t.string "noteable_type"
+ t.integer "author_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "project_id"
+ t.string "attachment"
+ t.string "line_code"
+ t.string "commit_id"
+ t.integer "noteable_id"
+ end
+
+ add_index "notes", ["commit_id"], name: "index_notes_on_commit_id", using: :btree
+ add_index "notes", ["created_at"], name: "index_notes_on_created_at", using: :btree
+ add_index "notes", ["noteable_type"], name: "index_notes_on_noteable_type", using: :btree
+ add_index "notes", ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type", using: :btree
+ add_index "notes", ["project_id"], name: "index_notes_on_project_id", using: :btree
+
+ create_table "projects", force: true do |t|
+ t.string "name"
+ t.string "path"
+ t.text "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.boolean "private_flag", default: true, null: false
+ t.integer "owner_id"
+ t.string "default_branch"
+ t.boolean "issues_enabled", default: true, null: false
+ t.boolean "wall_enabled", default: true, null: false
+ t.boolean "merge_requests_enabled", default: true, null: false
+ t.boolean "wiki_enabled", default: true, null: false
+ t.integer "namespace_id"
+ end
+
+ add_index "projects", ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree
+ add_index "projects", ["owner_id"], name: "index_projects_on_owner_id", using: :btree
+
+ create_table "protected_branches", force: true do |t|
+ t.integer "project_id", null: false
+ t.string "name", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "services", force: true do |t|
+ t.string "type"
+ t.string "title"
+ t.string "token"
+ t.integer "project_id", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.boolean "active", default: false, null: false
+ t.string "project_url"
+ end
+
+ add_index "services", ["project_id"], name: "index_services_on_project_id", using: :btree
+
+ create_table "snippets", force: true do |t|
+ t.string "title"
+ t.text "content"
+ t.integer "author_id", null: false
+ t.integer "project_id", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "file_name"
+ t.datetime "expires_at"
+ end
+
+ add_index "snippets", ["created_at"], name: "index_snippets_on_created_at", using: :btree
+ add_index "snippets", ["expires_at"], name: "index_snippets_on_expires_at", using: :btree
+ add_index "snippets", ["project_id"], name: "index_snippets_on_project_id", using: :btree
+
+ create_table "taggings", force: true do |t|
+ t.integer "tag_id"
+ t.integer "taggable_id"
+ t.string "taggable_type"
+ t.integer "tagger_id"
+ t.string "tagger_type"
+ t.string "context"
+ t.datetime "created_at"
+ end
+
+ add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
+ add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
+
+ create_table "tags", force: true do |t|
+ t.string "name"
+ end
+
+ create_table "user_team_project_relationships", force: true do |t|
+ t.integer "project_id"
+ t.integer "user_team_id"
+ t.integer "greatest_access"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "user_team_user_relationships", force: true do |t|
+ t.integer "user_id"
+ t.integer "user_team_id"
+ t.boolean "group_admin"
+ t.integer "permission"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "user_teams", force: true do |t|
+ t.string "name"
+ t.string "path"
+ t.integer "owner_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "users", force: true do |t|
+ t.string "email", default: "", null: false
+ t.string "encrypted_password", default: "", null: false
+ t.string "reset_password_token"
+ t.datetime "reset_password_sent_at"
+ t.datetime "remember_created_at"
+ t.integer "sign_in_count", default: 0
+ t.datetime "current_sign_in_at"
+ t.datetime "last_sign_in_at"
+ t.string "current_sign_in_ip"
+ t.string "last_sign_in_ip"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "name"
+ t.boolean "admin", default: false, null: false
+ t.integer "projects_limit", default: 10
+ t.string "skype", default: "", null: false
+ t.string "linkedin", default: "", null: false
+ t.string "twitter", default: "", null: false
+ t.string "authentication_token"
+ t.boolean "dark_scheme", default: false, null: false
+ t.integer "theme_id", default: 1, null: false
+ t.string "bio"
+ t.boolean "blocked", default: false, null: false
+ t.integer "failed_attempts", default: 0
+ t.datetime "locked_at"
+ t.string "extern_uid"
+ t.string "provider"
+ t.string "username"
+ end
+
+ add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
+ add_index "users", ["blocked"], name: "index_users_on_blocked", using: :btree
+ add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
+ add_index "users", ["extern_uid", "provider"], name: "index_users_on_extern_uid_and_provider", unique: true, using: :btree
+ add_index "users", ["name"], name: "index_users_on_name", using: :btree
+ add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
+ add_index "users", ["username"], name: "index_users_on_username", using: :btree
+
+ create_table "users_projects", force: true do |t|
+ t.integer "user_id", null: false
+ t.integer "project_id", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "project_access", default: 0, null: false
+ end
+
+ add_index "users_projects", ["project_access"], name: "index_users_projects_on_project_access", using: :btree
+ add_index "users_projects", ["project_id"], name: "index_users_projects_on_project_id", using: :btree
+ add_index "users_projects", ["user_id"], name: "index_users_projects_on_user_id", using: :btree
+
+ create_table "web_hooks", force: true do |t|
+ t.string "url"
+ t.integer "project_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "type", default: "ProjectHook"
+ t.integer "service_id"
+ end
+
+ create_table "wikis", force: true do |t|
+ t.string "title"
+ t.text "content"
+ t.integer "project_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "slug"
+ t.integer "user_id"
+ end
+
+ add_index "wikis", ["project_id"], name: "index_wikis_on_project_id", using: :btree
+ add_index "wikis", ["slug"], name: "index_wikis_on_slug", using: :btree
+
+ end
+
+ def down
+ raise "Can not revert initial migration"
+ end
+end
diff --git a/db/migrate/20130506095501_remove_project_id_from_key.rb b/db/migrate/20130506095501_remove_project_id_from_key.rb
index 4214fd45d14..6b794cfb5c1 100644
--- a/db/migrate/20130506095501_remove_project_id_from_key.rb
+++ b/db/migrate/20130506095501_remove_project_id_from_key.rb
@@ -4,7 +4,7 @@ class RemoveProjectIdFromKey < ActiveRecord::Migration
Key.where('project_id IS NOT NULL').update_all(type: 'DeployKey')
DeployKey.all.each do |key|
- project = Project.find_by_id(key.project_id)
+ project = Project.find_by(id: key.project_id)
if project
project.deploy_keys << key
print '.'
diff --git a/db/migrate/20140116231608_add_website_url_to_users.rb b/db/migrate/20140116231608_add_website_url_to_users.rb
new file mode 100644
index 00000000000..0996fdcad73
--- /dev/null
+++ b/db/migrate/20140116231608_add_website_url_to_users.rb
@@ -0,0 +1,5 @@
+class AddWebsiteUrlToUsers < ActiveRecord::Migration
+ def change
+ add_column :users, :website_url, :string, {:null => false, :default => ''}
+ end
+end
diff --git a/db/migrate/20140122112253_create_merge_request_diffs.rb b/db/migrate/20140122112253_create_merge_request_diffs.rb
new file mode 100644
index 00000000000..ef592305a23
--- /dev/null
+++ b/db/migrate/20140122112253_create_merge_request_diffs.rb
@@ -0,0 +1,12 @@
+class CreateMergeRequestDiffs < ActiveRecord::Migration
+ def change
+ create_table :merge_request_diffs do |t|
+ t.string :state, null: false, default: 'collected'
+ t.text :st_commits, null: true, limit: 2147483647
+ t.text :st_diffs, null: true, limit: 2147483647
+ t.integer :merge_request_id, null: false
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20140122114406_migrate_mr_diffs.rb b/db/migrate/20140122114406_migrate_mr_diffs.rb
new file mode 100644
index 00000000000..1595e2b6472
--- /dev/null
+++ b/db/migrate/20140122114406_migrate_mr_diffs.rb
@@ -0,0 +1,9 @@
+class MigrateMrDiffs < ActiveRecord::Migration
+ def self.up
+ execute "INSERT INTO merge_request_diffs ( merge_request_id, st_commits, st_diffs ) SELECT id, st_commits, st_diffs FROM merge_requests"
+ end
+
+ def self.down
+ MergeRequestDiff.delete_all
+ end
+end
diff --git a/db/migrate/20140122122549_remove_m_rdiff_fields.rb b/db/migrate/20140122122549_remove_m_rdiff_fields.rb
new file mode 100644
index 00000000000..8f863d85a68
--- /dev/null
+++ b/db/migrate/20140122122549_remove_m_rdiff_fields.rb
@@ -0,0 +1,21 @@
+class RemoveMRdiffFields < ActiveRecord::Migration
+ def up
+ remove_column :merge_requests, :st_commits
+ remove_column :merge_requests, :st_diffs
+ end
+
+ def down
+ add_column :merge_requests, :st_commits, :text, null: true, limit: 2147483647
+ add_column :merge_requests, :st_diffs, :text, null: true, limit: 2147483647
+
+ if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
+ execute "UPDATE merge_requests mr
+ SET (st_commits, st_diffs) = (md.st_commits, md.st_diffs)
+ FROM merge_request_diffs md
+ WHERE md.merge_request_id = mr.id"
+ else
+ execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_commits = md.st_commits WHERE md.merge_request_id = mr.id"
+ execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_diffs = md.st_diffs WHERE md.merge_request_id = mr.id"
+ end
+ end
+end
diff --git a/db/migrate/20140127170938_add_group_avatars.rb b/db/migrate/20140127170938_add_group_avatars.rb
new file mode 100644
index 00000000000..2911096dd5d
--- /dev/null
+++ b/db/migrate/20140127170938_add_group_avatars.rb
@@ -0,0 +1,5 @@
+class AddGroupAvatars < ActiveRecord::Migration
+ def change
+ add_column :namespaces, :avatar, :string
+ end
+end
diff --git a/db/migrate/20140209025651_create_emails.rb b/db/migrate/20140209025651_create_emails.rb
new file mode 100644
index 00000000000..cb78c4af11b
--- /dev/null
+++ b/db/migrate/20140209025651_create_emails.rb
@@ -0,0 +1,13 @@
+class CreateEmails < ActiveRecord::Migration
+ def change
+ create_table :emails do |t|
+ t.integer :user_id, null: false
+ t.string :email, null: false
+
+ t.timestamps
+ end
+
+ add_index :emails, :user_id
+ add_index :emails, :email, unique: true
+ end
+end
diff --git a/db/migrate/20140214102325_add_api_key_to_services.rb b/db/migrate/20140214102325_add_api_key_to_services.rb
new file mode 100644
index 00000000000..30eeca2c1f6
--- /dev/null
+++ b/db/migrate/20140214102325_add_api_key_to_services.rb
@@ -0,0 +1,5 @@
+class AddApiKeyToServices < ActiveRecord::Migration
+ def change
+ add_column :services, :api_key, :string
+ end
+end
diff --git a/db/migrate/20140304005354_add_index_merge_request_diffs_on_merge_request_id.rb b/db/migrate/20140304005354_add_index_merge_request_diffs_on_merge_request_id.rb
new file mode 100644
index 00000000000..65d28e8cb01
--- /dev/null
+++ b/db/migrate/20140304005354_add_index_merge_request_diffs_on_merge_request_id.rb
@@ -0,0 +1,5 @@
+class AddIndexMergeRequestDiffsOnMergeRequestId < ActiveRecord::Migration
+ def change
+ add_index :merge_request_diffs, :merge_request_id, unique: true
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e02799e0dbc..9f1de4d2120 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20131217102743) do
+ActiveRecord::Schema.define(version: 20140304005354) do
create_table "broadcast_messages", force: true do |t|
t.text "message", null: false
@@ -33,6 +33,16 @@ ActiveRecord::Schema.define(version: 20131217102743) do
add_index "deploy_keys_projects", ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree
+ create_table "emails", force: true do |t|
+ t.integer "user_id", null: false
+ t.string "email", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "emails", ["email"], name: "index_emails_on_email", unique: true, using: :btree
+ add_index "emails", ["user_id"], name: "index_emails_on_user_id", using: :btree
+
create_table "events", force: true do |t|
t.string "target_type"
t.integer "target_id"
@@ -95,21 +105,30 @@ ActiveRecord::Schema.define(version: 20131217102743) do
add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree
+ create_table "merge_request_diffs", force: true do |t|
+ t.string "state", default: "collected", null: false
+ t.text "st_commits", limit: 2147483647
+ t.text "st_diffs", limit: 2147483647
+ t.integer "merge_request_id", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "merge_request_diffs", ["merge_request_id"], name: "index_merge_request_diffs_on_merge_request_id", unique: true, using: :btree
+
create_table "merge_requests", force: true do |t|
- t.string "target_branch", null: false
- t.string "source_branch", null: false
- t.integer "source_project_id", null: false
+ t.string "target_branch", null: false
+ t.string "source_branch", null: false
+ t.integer "source_project_id", null: false
t.integer "author_id"
t.integer "assignee_id"
t.string "title"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.text "st_commits", limit: 2147483647
- t.text "st_diffs", limit: 2147483647
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "milestone_id"
t.string "state"
t.string "merge_status"
- t.integer "target_project_id", null: false
+ t.integer "target_project_id", null: false
t.integer "iid"
t.text "description"
end
@@ -145,6 +164,7 @@ ActiveRecord::Schema.define(version: 20131217102743) do
t.datetime "updated_at", null: false
t.string "type"
t.string "description", default: "", null: false
+ t.string "avatar"
end
add_index "namespaces", ["name"], name: "index_namespaces_on_name", using: :btree
@@ -222,6 +242,7 @@ ActiveRecord::Schema.define(version: 20131217102743) do
t.string "subdomain"
t.string "room"
t.text "recipients"
+ t.string "api_key"
end
add_index "services", ["project_id"], name: "index_services_on_project_id", using: :btree
@@ -301,6 +322,7 @@ ActiveRecord::Schema.define(version: 20131217102743) do
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
t.boolean "hide_no_ssh_key", default: false
+ t.string "website_url", default: "", null: false
end
add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
diff --git a/doc/api/README.md b/doc/api/README.md
index 517a9fae6f6..850666953a3 100644
--- a/doc/api/README.md
+++ b/doc/api/README.md
@@ -127,6 +127,8 @@ But when you want to create a link to web page - use `http:://host/project/issu
+ [Projects](projects.md)
+ [Project Snippets](project_snippets.md)
+ [Repositories](repositories.md)
++ [Repository Files](repository_files.md)
++ [Commits](commits.md)
+ [Merge Requests](merge_requests.md)
+ [Issues](issues.md)
+ [Milestones](milestones.md)
diff --git a/doc/api/commits.md b/doc/api/commits.md
new file mode 100644
index 00000000000..69b44a2e83b
--- /dev/null
+++ b/doc/api/commits.md
@@ -0,0 +1,95 @@
+# Commits API
+
+## List repository commits
+
+Get a list of repository commits in a project.
+
+```
+GET /projects/:id/repository/commits
+```
+
+Parameters:
+
++ `id` (required) - The ID of a project
++ `ref_name` (optional) - The name of a repository branch or tag or if not given the default branch
+
+```json
+[
+ {
+ "id": "ed899a2f4b50b4370feeea94676502b42383c746",
+ "short_id": "ed899a2f4b5",
+ "title": "Replace sanitize with escape once",
+ "author_name": "Dmitriy Zaporozhets",
+ "author_email": "dzaporozhets@sphereconsultinginc.com",
+ "created_at": "2012-09-20T11:50:22+03:00"
+ },
+ {
+ "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
+ "short_id": "6104942438c",
+ "title": "Sanitize for network graph",
+ "author_name": "randx",
+ "author_email": "dmitriy.zaporozhets@gmail.com",
+ "created_at": "2012-09-20T09:06:12+03:00"
+ }
+]
+```
+
+## Get a single commit
+
+Get a specific commit identified by the commit hash or name of a branch or tag.
+
+```
+GET /projects/:id/repository/commits/:sha
+```
+
+Parameters:
+
++ `id` (required) - The ID of a project
++ `sha` (required) - The commit hash or name of a repository branch or tag
+
+```json
+{
+ "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
+ "short_id": "6104942438c",
+ "title": "Sanitize for network graph",
+ "author_name": "randx",
+ "author_email": "dmitriy.zaporozhets@gmail.com",
+ "created_at": "2012-09-20T09:06:12+03:00",
+ "committed_date": "2012-09-20T09:06:12+03:00",
+ "authored_date": "2012-09-20T09:06:12+03:00",
+ "parent_ids" : [
+ "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
+ ]
+}
+```
+
+
+## Get the diff of a commit
+
+Get the diff of a commit in a project.
+
+```
+GET /projects/:id/repository/commits/:sha/diff
+```
+
+Parameters:
+
++ `id` (required) - The ID of a project
++ `sha` (required) - The name of a repository branch or tag or if not given the default branch
+
+```json
+[
+ {
+ "diff": "--- a/doc/update/5.4-to-6.0.md\n+++ b/doc/update/5.4-to-6.0.md\n@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
+ "new_path": "doc/update/5.4-to-6.0.md",
+ "old_path": "doc/update/5.4-to-6.0.md",
+ "a_mode": null,
+ "b_mode": "100644",
+ "new_file": false,
+ "renamed_file": false,
+ "deleted_file": false
+ }
+]
+```
+
+
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 559553a1108..e795298c672 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -162,7 +162,7 @@ GET /projects/:id/events
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
```json
@@ -231,6 +231,7 @@ POST /projects
Parameters:
+ `name` (required) - new project name
++ `namespace_id` (optional) - namespace for the new project (defaults to user)
+ `description` (optional) - short project description
+ `issues_enabled` (optional)
+ `wall_enabled` (optional)
@@ -290,7 +291,7 @@ GET /projects/:id/members
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `query` (optional) - Query string to search for members
@@ -304,7 +305,7 @@ GET /projects/:id/members/:user_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `user_id` (required) - The ID of a user
```json
@@ -332,7 +333,7 @@ POST /projects/:id/members
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `user_id` (required) - The ID of a user to add
+ `access_level` (required) - Project access level
@@ -347,7 +348,7 @@ PUT /projects/:id/members/:user_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `user_id` (required) - The ID of a team member
+ `access_level` (required) - Project access level
@@ -362,7 +363,7 @@ DELETE /projects/:id/members/:user_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `user_id` (required) - The ID of a team member
This method is idempotent and can be called multiple times with the same parameters.
@@ -383,7 +384,7 @@ GET /projects/:id/hooks
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
### Get project hook
@@ -396,7 +397,7 @@ GET /projects/:id/hooks/:hook_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `hook_id` (required) - The ID of a project hook
```json
@@ -422,7 +423,7 @@ POST /projects/:id/hooks
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `url` (required) - The hook URL
+ `push_events` - Trigger hook on push events
+ `issues_events` - Trigger hook on issues events
@@ -439,7 +440,7 @@ PUT /projects/:id/hooks/:hook_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `hook_id` (required) - The ID of a project hook
+ `url` (required) - The hook URL
+ `push_events` - Trigger hook on push events
@@ -458,7 +459,7 @@ DELETE /projects/:id/hooks/:hook_id
Parameters:
-+ `id` (required) - The ID or NAME of a project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `hook_id` (required) - The ID of hook to delete
Note the JSON response differs if the hook is available or not. If the project hook
@@ -477,7 +478,7 @@ GET /projects/:id/repository/branches
Parameters:
-+ `id` (required) - The ID of the project
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
```json
[
@@ -539,7 +540,7 @@ GET /projects/:id/repository/branches/:branch
Parameters:
-+ `id` (required) - The ID of the project.
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `branch` (required) - The name of the branch.
@@ -553,7 +554,7 @@ PUT /projects/:id/repository/branches/:branch/protect
Parameters:
-+ `id` (required) - The ID of the project.
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `branch` (required) - The name of the branch.
@@ -567,7 +568,7 @@ PUT /projects/:id/repository/branches/:branch/unprotect
Parameters:
-+ `id` (required) - The ID of the project.
++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
+ `branch` (required) - The name of the branch.
diff --git a/doc/api/repositories.md b/doc/api/repositories.md
index 35f7ad7ae95..65ea3615354 100644
--- a/doc/api/repositories.md
+++ b/doc/api/repositories.md
@@ -204,99 +204,6 @@ Parameters:
]
```
-
-## List repository commits
-
-Get a list of repository commits in a project.
-
-```
-GET /projects/:id/repository/commits
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-+ `ref_name` (optional) - The name of a repository branch or tag or if not given the default branch
-
-```json
-[
- {
- "id": "ed899a2f4b50b4370feeea94676502b42383c746",
- "short_id": "ed899a2f4b5",
- "title": "Replace sanitize with escape once",
- "author_name": "Dmitriy Zaporozhets",
- "author_email": "dzaporozhets@sphereconsultinginc.com",
- "created_at": "2012-09-20T11:50:22+03:00"
- },
- {
- "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
- "short_id": "6104942438c",
- "title": "Sanitize for network graph",
- "author_name": "randx",
- "author_email": "dmitriy.zaporozhets@gmail.com",
- "created_at": "2012-09-20T09:06:12+03:00"
- }
-]
-```
-
-## Get a single commit
-
-Get a specific commit identified by the commit hash or name of a branch or tag.
-
-```
-GET /projects/:id/repository/commits/:sha
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-+ `sha` (required) - The commit hash or name of a repository branch or tag
-
-```json
-{
- "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
- "short_id": "6104942438c",
- "title": "Sanitize for network graph",
- "author_name": "randx",
- "author_email": "dmitriy.zaporozhets@gmail.com",
- "created_at": "2012-09-20T09:06:12+03:00",
- "committed_date": "2012-09-20T09:06:12+03:00",
- "authored_date": "2012-09-20T09:06:12+03:00",
- "parent_ids" : [
- "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
- ]
-}
-```
-
-
-## Get the diff of a commit
-
-Get the diff of a commit in a project.
-
-```
-GET /projects/:id/repository/commits/:sha/diff
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-+ `sha` (required) - The name of a repository branch or tag or if not given the default branch
-
-```json
-[
- {
- "diff": "--- a/doc/update/5.4-to-6.0.md\n+++ b/doc/update/5.4-to-6.0.md\n@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
- "new_path": "doc/update/5.4-to-6.0.md",
- "old_path": "doc/update/5.4-to-6.0.md",
- "a_mode": null,
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false
- }
-]
-```
-
## List repository tree
Get a list of repository files and directories in a project.
@@ -388,42 +295,3 @@ GET /projects/:id/repository/archive
Parameters:
+ `id` (required) - The ID of a project
+ `sha` (optional) - The commit sha to download defaults to the tip of the default branch
-
-
-## Create new file in repository
-
-```
-POST /projects/:id/repository/files
-```
-
-Parameters:
-
-+ `file_path` (optional) - Full path to new file. Ex. lib/class.rb
-+ `branch_name` (required) - The name of branch
-+ `content` (required) - File content
-+ `commit_message` (required) - Commit message
-
-## Update existing file in repository
-
-```
-PUT /projects/:id/repository/files
-```
-
-Parameters:
-
-+ `file_path` (required) - Full path to file. Ex. lib/class.rb
-+ `branch_name` (required) - The name of branch
-+ `content` (required) - New file content
-+ `commit_message` (required) - Commit message
-
-## Delete existing file in repository
-
-```
-DELETE /projects/:id/repository/files
-```
-
-Parameters:
-
-+ `file_path` (required) - Full path to file. Ex. lib/class.rb
-+ `branch_name` (required) - The name of branch
-+ `commit_message` (required) - Commit message
diff --git a/doc/api/repository_files.md b/doc/api/repository_files.md
new file mode 100644
index 00000000000..cafab8c828f
--- /dev/null
+++ b/doc/api/repository_files.md
@@ -0,0 +1,102 @@
+# CRUD for repository files
+
+## Create, read, update and delete repository files using this API
+
+- - -
+
+## Get file from repository
+
+Allows you to receive information about file in repository like name, size, content.
+Note that file content is Base64 encoded.
+
+```
+GET /projects/:id/repository/files
+```
+
+Example response:
+
+```json
+{
+ "file_name": "key.rb",
+ "file_path": "app/models/key.rb",
+ "size": 1476,
+ "encoding": "base64",
+ "content": "IyA9PSBTY2hlbWEgSW5mb3...",
+ "ref": "master",
+ "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83",
+ "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50"
+}
+```
+
+Parameters:
+
++ `file_path` (required) - Full path to new file. Ex. lib/class.rb
++ `ref` (required) - The name of branch, tag or commit
+
+## Create new file in repository
+
+```
+POST /projects/:id/repository/files
+```
+
+Example response:
+
+```json
+{
+ "file_name": "app/project.rb",
+ "branch_name": "master",
+}
+```
+
+Parameters:
+
++ `file_path` (required) - Full path to new file. Ex. lib/class.rb
++ `branch_name` (required) - The name of branch
++ `encoding` (optional) - 'text' or 'base64'. Text is default.
++ `content` (required) - File content
++ `commit_message` (required) - Commit message
+
+## Update existing file in repository
+
+```
+PUT /projects/:id/repository/files
+```
+
+Example response:
+
+```json
+{
+ "file_name": "app/project.rb",
+ "branch_name": "master",
+}
+```
+
+Parameters:
+
++ `file_path` (required) - Full path to file. Ex. lib/class.rb
++ `branch_name` (required) - The name of branch
++ `encoding` (optional) - 'text' or 'base64'. Text is default.
++ `content` (required) - New file content
++ `commit_message` (required) - Commit message
+
+## Delete existing file in repository
+
+```
+DELETE /projects/:id/repository/files
+```
+
+Example response:
+
+```json
+{
+ "file_name": "app/project.rb",
+ "branch_name": "master",
+}
+```
+
+Parameters:
+
++ `file_path` (required) - Full path to file. Ex. lib/class.rb
++ `branch_name` (required) - The name of branch
++ `commit_message` (required) - Commit message
+
diff --git a/doc/api/session.md b/doc/api/session.md
index 162d4c8bf78..fd18d5c5e97 100644
--- a/doc/api/session.md
+++ b/doc/api/session.md
@@ -26,6 +26,7 @@ __You can login with both GitLab and LDAP credentials now__
"skype": "",
"linkedin": "",
"twitter": "",
+ "website_url": "",
"dark_scheme": false,
"theme_id": 1,
"is_admin": false,
diff --git a/doc/api/users.md b/doc/api/users.md
index 16479ea6e0d..4098da72b30 100644
--- a/doc/api/users.md
+++ b/doc/api/users.md
@@ -20,6 +20,7 @@ GET /users
"skype": "",
"linkedin": "",
"twitter": "",
+ "website_url": "",
"extern_uid": "john.smith",
"provider": "provider_name",
"theme_id": 1,
@@ -38,6 +39,7 @@ GET /users
"skype": "",
"linkedin": "",
"twitter": "",
+ "website_url": "",
"extern_uid": "jack.smith",
"provider": "provider_name",
"theme_id": 1,
@@ -74,6 +76,7 @@ Parameters:
"skype": "",
"linkedin": "",
"twitter": "",
+ "website_url": "",
"extern_uid": "john.smith",
"provider": "provider_name",
"theme_id": 1,
@@ -102,6 +105,7 @@ Parameters:
+ `skype` (optional) - Skype ID
+ `linkedin` (optional) - Linkedin
+ `twitter` (optional) - Twitter account
++ `website_url` (optional) - Website url
+ `projects_limit` (optional) - Number of projects user can create
+ `extern_uid` (optional) - External UID
+ `provider` (optional) - External provider name
@@ -127,6 +131,7 @@ Parameters:
+ `skype` - Skype ID
+ `linkedin` - Linkedin
+ `twitter` - Twitter account
++ `website_url` - Website url
+ `projects_limit` - Limit projects each user can create
+ `extern_uid` - External UID
+ `provider` - External provider name
@@ -174,6 +179,7 @@ GET /user
"skype": "",
"linkedin": "",
"twitter": "",
+ "website_url": "",
"theme_id": 1,
"color_scheme_id": 2,
"is_admin": false,
diff --git a/doc/development/architecture.md b/doc/development/architecture.md
index db22f0bda85..8a772344b79 100644
--- a/doc/development/architecture.md
+++ b/doc/development/architecture.md
@@ -1,23 +1,183 @@
-# GitLab project architecture
+# GitLab Architecture Overview
+---
-GitLab project consists of two parts: GitLab and GitLab shell.
+# Software delivery
-## GitLab
+There are two editions of GitLab: [Enterprise Edition](https://www.gitlab.com/features/) (EE) and [Community Edition](http://gitlab.org/gitlab-ce/) (CE).
+GitLab CE is delivered via git from the [gitlabhq repository](https://gitlab.com/gitlab-org/gitlab-ce/tree/master).
+New versions of GitLab are released in stable branches and the master branch is for bleeding edge development.
-Web application with background jobs workers.
-Provides you with UI and most of functionality.
-For some operations like repo creation - uses GitLab shell.
+EE releases are available not long after CE releases.
+To obtain the GitLab EE there is a [repository at gitlab.com](https://gitlab.com/subscribers/gitlab-ee).
+For more information about the release process see the section 'New versions and upgrading' in the readme.
-Uses:
- * Ruby as main language for application code and most libraries.
- * [Rails](http://rubyonrails.org/) web framework as main framework for application.
- * Mysql or postgres as main databases. Used for persistent data storage(users, project, issues etc).
- * Redis database. Used for cache and exchange data between some components.
- * Python2 because of [pygments](http://pygments.org/) as code syntax highlighter.
+Both EE and CE require an add-on component called gitlab-shell.
+It is obtained from the [gitlab-shell repository](https://gitlab.com/gitlab-org/gitlab-shell/tree/master).
+New versions are usually tags but staying on the master branch will give you the latest stable version.
+New releases are generally around the same time as GitLab CE releases with exception for informal security updates deemed critical.
-## GitLab shell
+# System Layout
-Command line ruby application. Used by GitLab through shell commands.
-It provides interface to all kind of manipulations with repositories and ssh keys.
-Full list of commands you can find in README of GitLab shell repo.
-Works on pure ruby and do not require any additional software.
+When referring to ~git in the picures it means the home directory of the git user which is typically /home/git.
+
+GitLab is primarily installed within the `/home/git` user home directory as `git` user.
+Within the home directory is where the gitlabhq server software resides as well as the repositories (though the repository location is configurable).
+The bare repositories are located in `/home/git/repositories`.
+GitLab is a ruby on rails application so the particulars of the inner workings can be learned by studying how a ruby on rails application works.
+To serve repositories over SSH there's an add-on application called gitlab-shell which is installed in `/home/git/gitlab-shell`.
+
+## Components
+
+![GitLab Diagram Overview](resources/gitlab_diagram_overview.png "GitLab Diagram Overview")
+
+A typical install of GitLab will be on Ubuntu Linux or RHEL/CentOS.
+It uses Nginx or Apache as a web front end to proxypass the Unicorn web server.
+By default, communication between Unicorn and the front end is via a Unix domain socket but forwarding requests via TCP is also supported.
+The web front end accesses `/home/git/gitlab/public` bypassing the Unicorn server to serve static pages, uploads (e.g. avatar images or attachments), and precompiled assets.
+GitLab serves web pages and a [GitLab API](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/api) using the Unicorn web server.
+It uses Sidekiq as a job queue which, in turn, uses redis as a non-persistent database backend for job information, meta data, and incomming jobs.
+The GitLab web app uses MySQL or PostgreSQL for persistent database information (e.g. users, permissions, issues, other meta data).
+GitLab stores the bare git repositories it serves in `/home/git/repositories` by default.
+It also keeps default branch and hook information with the bare repository.
+`/home/git/gitlab-satellites` keeps checked out repositories when performing actions such as a merge request, editing files in the web interface, etc.
+The satellite repository is used by the web interface for editing repositories and the wiki which is also a git repository.
+When serving repositories over HTTP/HTTPS GitLab utilizes the GitLab API to resolve authorization and access as well as serving git objects.
+
+The add-on component gitlab-shell serves repositories over SSH.
+It manages the SSH keys within `/home/git/.ssh/authorized_keys` which should not be manually edited.
+gitlab-shell accesses the bare repositories directly to serve git objects and communicates with redis to submit jobs to Sidekiq for GitLab to process.
+ gitlab-shell queries the GitLab API to determine authorization and access.
+
+## Installation Folder Summary
+
+To summarize here's the [directory structure of the `git` user home directory](../install/structure.md).
+
+
+## Processes
+
+ ps aux | grep '^git'
+
+GitLab has several components to operate.
+As a system user (i.e. any user that is not the `git` user) it requires a persistent database (MySQL/PostreSQL) and redis database.
+It also uses Apache httpd or nginx to proxypass Unicorn.
+As the `git` user it starts Sidekiq and Unicorn (a simple ruby HTTP server running on port `8080` by default).
+Under the gitlab user there are normally 4 processes: `unicorn_rails master` (1 process), `unicorn_rails worker` (2 processes), `sidekiq` (1 process).
+
+## Repository access
+
+Repositories get accessed via HTTP or SSH.
+HTTP cloning/push/pull utilizes the GitLab API and SSH cloning is handled by gitlab-shell (previously explained).
+
+# Troubleshooting
+
+See the README for more information.
+
+## Init scripts of the services
+
+The GitLab init script starts and stops Unicorn and Sidekiq.
+
+```
+/etc/init.d/gitlab
+Usage: service gitlab {start|stop|restart|reload|status}
+```
+
+Redis (key-value store/non-persistent database)
+
+```
+/etc/init.d/redis
+Usage: /etc/init.d/redis {start|stop|status|restart|condrestart|try-restart}
+```
+
+SSH daemon
+
+```
+/etc/init.d/sshd
+Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}
+```
+
+Web server (one of the following)
+
+```
+/etc/init.d/httpd
+Usage: httpd {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}
+
+$ /etc/init.d/nginx
+Usage: nginx {start|stop|restart|reload|force-reload|status|configtest}
+```
+
+Persistent database (one of the following)
+
+```
+/etc/init.d/mysqld
+Usage: /etc/init.d/mysqld {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
+
+$ /etc/init.d/postgresql
+Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]
+```
+
+## Log locations of the services
+
+Note: `/home/git/` is shorthand for `/home/git`.
+
+gitlabhq (includes Unicorn and Sidekiq logs)
+
+* `/home/git/gitlab/log/` contains `application.log`, `production.log`, `sidekiq.log`, `unicorn.stdout.log`, `githost.log`, `satellites.log`, and `unicorn.stderr.log` normally.
+
+gitlab-shell
+
+* `/home/git/gitlab-shell/gitlab-shell.log`
+
+ssh
+
+* `/var/log/auth.log` auth log (on Ubuntu).
+* `/var/log/secure` auth log (on RHEL).
+
+nginx
+
+* `/var/log/nginx/` contains error and access logs.
+
+Apache httpd
+
+* [Explanation of apache logs](http://httpd.apache.org/docs/2.2/logs.html).
+* `/var/log/apache2/` contains error and output logs (on Ubuntu).
+* `/var/log/httpd/` contains error and output logs (on RHEL).
+
+redis
+
+* `/var/log/redis/redis.log` there are also logrotated logs there.
+
+PostgreSQL
+
+* `/var/log/postgresql/*`
+
+MySQL
+
+* `/var/log/mysql/*`
+* `/var/log/mysql.*`
+
+## GitLab specific config files
+
+GitLab has configuration files located in `/home/git/gitlab/config/*`.
+Commonly referenced config files include:
+
+* `gitlab.yml` - GitLab configuration.
+* `unicorn.rb` - Unicorn web server settings.
+* `database.yml` - Database connection settings.
+
+gitlab-shell has a configuration file at `/home/git/gitlab-shell/config.yml`.
+
+## Maintenance Tasks
+
+[GitLab](https://gitlab.com/gitlab-org/gitlab-ce/tree/master) provides rake tasks with which you see version information and run a quick check on your configuration to ensure it is configured properly within the application.
+See [maintenance rake tasks](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/maintenance.md).
+In a nutshell, do the following:
+
+```
+sudo -i -u git
+cd gitlab
+bundle exec rake gitlab:env:info RAILS_ENV=production
+bundle exec rake gitlab:check RAILS_ENV=production
+```
+
+Note: It is recommended to log into the `git` user using `sudo -i -u git` or `sudo su - git`.
+While the sudo commands provided by gitlabhq work in Ubuntu they do not always work in RHEL.
diff --git a/doc/development/resources/gitlab_diagram_overview.odg b/doc/development/resources/gitlab_diagram_overview.odg
new file mode 100644
index 00000000000..b7e02f8fa78
--- /dev/null
+++ b/doc/development/resources/gitlab_diagram_overview.odg
Binary files differ
diff --git a/doc/development/resources/gitlab_diagram_overview.png b/doc/development/resources/gitlab_diagram_overview.png
new file mode 100644
index 00000000000..b5831cf0a4c
--- /dev/null
+++ b/doc/development/resources/gitlab_diagram_overview.png
Binary files differ
diff --git a/doc/development/shell_commands.md b/doc/development/shell_commands.md
new file mode 100644
index 00000000000..57b1172d5e6
--- /dev/null
+++ b/doc/development/shell_commands.md
@@ -0,0 +1,111 @@
+# Guidelines for shell commands in the GitLab codebase
+
+## Use File and FileUtils instead of shell commands
+
+Sometimes we invoke basic Unix commands via the shell when there is also a Ruby API for doing it.
+Use the Ruby API if it exists.
+http://www.ruby-doc.org/stdlib-2.0.0/libdoc/fileutils/rdoc/FileUtils.html#module-FileUtils-label-Module+Functions
+
+```ruby
+# Wrong
+system "mkdir -p tmp/special/directory"
+# Better (separate tokens)
+system *%W(mkdir -p tmp/special/directory)
+# Best (do not use a shell command)
+FileUtils.mkdir_p "tmp/special/directory"
+
+# Wrong
+contents = `cat #{filename}`
+# Correct
+contents = File.read(filename)
+```
+
+This coding style could have prevented CVE-2013-4490.
+
+## Bypass the shell by splitting commands into separate tokens
+
+When we pass shell commands as a single string to Ruby, Ruby will let `/bin/sh` evaluate the entire string.
+Essentially, we are asking the shell to evaluate a one-line script.
+This creates a risk for shell injection attacks.
+It is better to split the shell command into tokens ourselves.
+Sometimes we use the scripting capabilities of the shell to change the working directory or set environment variables.
+All of this can also be achieved securely straight from Ruby
+
+```ruby
+# Wrong
+system "cd /home/git/gitlab && bundle exec rake db:#{something} RAILS_ENV=production"
+# Correct
+system({'RAILS_ENV' => 'production'}, *%W(bundle exec rake db:#{something}), chdir: '/home/git/gitlab')
+
+# Wrong
+system "touch #{myfile}"
+# Better
+system "touch", myfile
+# Best (do not run a shell command at all)
+FileUtils.touch myfile
+```
+
+This coding style could have prevented CVE-2013-4546.
+
+## Separate options from arguments with --
+
+Make the difference between options and arguments clear to the argument parsers of system commands with `--`.
+This is supported by many but not all Unix commands.
+
+To understand what `--` does, consider the problem below.
+
+```
+# Example
+$ echo hello > -l
+$ cat -l
+cat: illegal option -- l
+usage: cat [-benstuv] [file ...]
+```
+
+In the example above, the argument parser of `cat` assumes that `-l` is an option.
+The solution in the example above is to make it clear to `cat` that `-l` is really an argument, not an option.
+Many Unix command line tools follow the convention of separating options from arguments with `--`.
+
+```
+# Example (continued)
+$ cat -- -l
+hello
+```
+
+In the GitLab codebase, we avoid the option/argument ambiguity by _always_ using `--`.
+
+```ruby
+# Wrong
+system(*%W(git branch -d #{branch_name}))
+# Correct
+system(*%W(git branch -d -- #{branch_name}))
+```
+
+This coding style could have prevented CVE-2013-4582.
+
+## Do not use the backticks
+
+Capturing the output of shell commands with backticks reads nicely, but you are forced to pass the command as one string to the shell.
+We explained above that this is unsafe.
+In the main GitLab codebase, the solution is to use `Gitlab::Popen.popen` instead.
+
+```ruby
+# Wrong
+logs = `cd #{repo_dir} && git log`
+# Correct
+logs, exit_status = Gitlab::Popen.popen(%W(git log), repo_dir)
+
+# Wrong
+user = `whoami`
+# Correct
+user, exit_status = Gitlab::Popen.popen(%W(whoami))
+```
+
+In other repositories, such as gitlab-shell you can also use `IO.popen`.
+
+```ruby
+# Safe IO.popen example
+logs = IO.popen(%W(git log), chdir: repo_dir).read
+```
+
+Note that unlike `Gitlab::Popen.popen`, `IO.popen` does not capture standard error.
diff --git a/doc/install/databases.md b/doc/install/database_mysql.md
index 1d9405dfa96..4cf9b94c1a0 100644
--- a/doc/install/databases.md
+++ b/doc/install/database_mysql.md
@@ -1,10 +1,6 @@
-# Setup Database
-
-GitLab supports the following databases:
-
-* MySQL (preferred)
-* PostgreSQL
+## Note
+We do not recommend using MySQL due to various issues. For example, case [(in)sensitivity](https://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html) and [problems](http://bugs.mysql.com/bug.php?id=65830) that [suggested](http://bugs.mysql.com/bug.php?id=50909) [fixes](http://bugs.mysql.com/bug.php?id=65830) [have](http://bugs.mysql.com/bug.php?id=63164).
## MySQL
@@ -16,7 +12,7 @@ GitLab supports the following databases:
# Secure your installation.
sudo mysql_secure_installation
-
+
# Login to MySQL
mysql -u root -p
@@ -47,25 +43,3 @@ GitLab supports the following databases:
mysql> \q
# You are done installing the database and can go back to the rest of the installation.
-
-
-## PostgreSQL
-
- # Install the database packages
- sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev
-
- # Login to PostgreSQL
- sudo -u postgres psql -d template1
-
- # Create a user for GitLab. (change $password to a real password)
- template1=# CREATE USER git;
-
- # Create the GitLab production database & grant all privileges on database
- template1=# CREATE DATABASE gitlabhq_production OWNER git;
-
- # Quit the database session
- template1=# \q
-
- # Try connecting to the new database with the new user
- sudo -u git -H psql -d gitlabhq_production
-
diff --git a/doc/install/installation.md b/doc/install/installation.md
index 6961e461482..d6e0a8a0012 100644
--- a/doc/install/installation.md
+++ b/doc/install/installation.md
@@ -2,15 +2,17 @@
Make sure you view this installation guide from the branch (version) of GitLab you would like to install. In most cases
this should be the highest numbered stable branch (example shown below).
-![capture](https://f.cloud.github.com/assets/1192780/564911/2f9f3e1e-c5b7-11e2-9f89-98e527d1adec.png)
+![capture](http://i.imgur.com/d2AlIVj.png)
If this is unclear check the [GitLab Blog](http://blog.gitlab.org/) for installation guide links by version.
# Important notes
-This installation guide was created for and tested on **Debian/Ubuntu** operating systems. Please read [`doc/install/requirements.md`](./requirements.md) for hardware and operating system requirements.
+This guide is long because it covers many cases and includes all commands you need, this is [one of the few installation scripts that actually works out of the box](https://twitter.com/robinvdvleuten/status/424163226532986880).
-This is the official installation guide to set up a production server. To set up a **development installation** or for many other installation options please consult [the installation section in the readme](https://github.com/gitlabhq/gitlabhq#installation).
+This installation guide was created for and tested on **Debian/Ubuntu** operating systems. Please read [doc/install/requirements.md](./requirements.md) for hardware and operating system requirements. An unofficial guide for RHEL/CentOS can be found in the [GitLab recipes repository](https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/install/centos).
+
+This is the official installation guide to set up a production server. To set up a **development installation** or for many other installation options please see [the installation section of the readme](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md#installation).
The following steps have been known to work. Please **use caution when you deviate** from this guide. Make sure you don't violate any assumptions GitLab makes about its environment. For example many people run into permission problems because they changed the location of directories or run services as the wrong user.
@@ -54,26 +56,6 @@ Install the required packages:
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate
-Make sure you have the right version of Python installed.
-
- # Install Python
- sudo apt-get install -y python
-
- # Make sure that Python is 2.5+ (3.x is not supported at the moment)
- python --version
-
- # If it's Python 3 you might need to install Python 2 separately
- sudo apt-get install -y python2.7
-
- # Make sure you can access Python via python2
- python2 --version
-
- # If you get a "command not found" error create a link to the python binary
- sudo ln -s /usr/bin/python /usr/bin/python2
-
- # For reStructuredText markup language support install required package:
- sudo apt-get install -y python-docutils
-
Make sure you have the right version of Git installed
# Install Git
@@ -92,8 +74,8 @@ Is the system packaged Git too old? Remove it and compile from source.
# Download and compile from source
cd /tmp
- curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
- cd git-1.8.4.1/
+ curl --progress https://git-core.googlecode.com/files/git-1.8.5.2.tar.gz | tar xz
+ cd git-1.8.5.2/
make prefix=/usr/local all
# Install into /usr/local/bin
@@ -111,6 +93,8 @@ Then select 'Internet Site' and press enter to confirm the hostname.
# 2. Ruby
+The use of ruby version managers such as [RVM](http://rvm.io/), [rbenv](https://github.com/sstephenson/rbenv) or [chruby](https://github.com/postmodern/chruby) with GitLab in production frequently leads to hard to diagnose problems. Version managers are not supported and we stronly advise everyone to follow the instructions below to use a system ruby.
+
Remove the old Ruby 1.8 if present
sudo apt-get remove ruby1.8
@@ -160,7 +144,25 @@ GitLab Shell is an ssh access and repository management software developed speci
# 5. Database
-To setup the MySQL/PostgreSQL database and dependencies please see [`doc/install/databases.md`](./databases.md).
+We recommend using a PostgreSQL database. For MySQL check [MySQL setup guide](doc/install/database_mysql.md).
+
+ # Install the database packages
+ sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev
+
+ # Login to PostgreSQL
+ sudo -u postgres psql -d template1
+
+ # Create a user for GitLab.
+ template1=# CREATE USER git;
+
+ # Create the GitLab production database & grant all privileges on database
+ template1=# CREATE DATABASE gitlabhq_production OWNER git;
+
+ # Quit the database session
+ template1=# \q
+
+ # Try connecting to the new database with the new user
+ sudo -u git -H psql -d gitlabhq_production
# 6. GitLab
@@ -171,13 +173,13 @@ To setup the MySQL/PostgreSQL database and dependencies please see [`doc/install
## Clone the Source
# Clone GitLab repository
- sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab
+ sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-6-stable gitlab
# Go to gitlab dir
cd /home/git/gitlab
**Note:**
-You can change `6-4-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server!
+You can change `6-6-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server!
## Configure it
@@ -232,8 +234,8 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup.
## Configure GitLab DB settings
- # Mysql
- sudo -u git cp config/database.yml.mysql config/database.yml
+ # PostgreSQL
+ sudo -u git cp config/database.yml.postgresql config/database.yml
# Make sure to update username/password in config/database.yml.
# You only need to adapt the production settings (first part).
@@ -243,10 +245,8 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup.
sudo -u git -H editor config/database.yml
or
-
- # PostgreSQL
- sudo -u git cp config/database.yml.postgresql config/database.yml
-
+ # Mysql
+ sudo -u git cp config/database.yml.mysql config/database.yml
# Make config/database.yml readable to git only
sudo -u git -H chmod o-rwx config/database.yml
@@ -255,18 +255,18 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup.
cd /home/git/gitlab
- # For MySQL (note, the option says "without ... postgres")
- sudo -u git -H bundle install --deployment --without development test postgres aws
-
- # Or for PostgreSQL (note, the option says "without ... mysql")
+ # For PostgreSQL (note, the option says "without ... mysql")
sudo -u git -H bundle install --deployment --without development test mysql aws
+ # Or if you use MySQL (note, the option says "without ... postgres")
+ sudo -u git -H bundle install --deployment --without development test postgres aws
+
## Initialize Database and Activate Advanced Features
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
- # Type 'yes' to create the database.
+ # Type 'yes' to create the database tables.
# When done you see 'Administrator account created:'
@@ -366,6 +366,15 @@ nobody can access your GitLab by using this login information later on.
# Advanced Setup Tips
+## Additional markup styles
+
+Apart from the always supported markdown style there are other rich text files that GitLab can display.
+But you might have to install a depency to do so.
+Please see the [github-markup gem readme](https://github.com/gitlabhq/markup#markups) for more information.
+For example, reStructuredText markup language support requires python-docutils:
+
+ sudo apt-get install -y python-docutils
+
## Custom Redis Connection
If you'd like Resque to connect to a Redis server on a non-standard port or on
diff --git a/doc/install/requirements.md b/doc/install/requirements.md
index e9c95ba2ef9..ea172733b11 100644
--- a/doc/install/requirements.md
+++ b/doc/install/requirements.md
@@ -1,6 +1,6 @@
# Operating Systems
-GitLab is developed for the Linux operating system.
+GitLab is developed for the Linux operating system. For the installations options and instructions please see [the installation section of the readme](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md#installation).
## GitLab officially supports
@@ -13,13 +13,13 @@ GitLab is developed for the Linux operating system.
- CentOS
- Oracle Linux
-## Not officially supported
+## Not officially supported are
- Arch Linux
- Fedora
- Gentoo
-On the above distributions it is pretty easy to install GitLab yourself.
+But on the above distributions it is pretty easy to install GitLab yourself.
## Unsupported Unix Systems
@@ -37,9 +37,8 @@ Please consider using a virtual machine to run GitLab.
# Ruby versions
GitLab requires Ruby (MRI) 1.9.3 or 2.0+.
-While it is generally possible to use other Rubies
-(like [JRuby](http://jruby.org/) or [Rubinius](http://rubini.us/))
-it might require some work since GitLab uses several Gems that have native extensions.
+You will have to use the standard MRI implementation of Ruby.
+We love [JRuby](http://jruby.org/) and [Rubinius](http://rubini.us/)) but GitLab needs several Gems that have native extensions.
# Hardware requirements
@@ -48,14 +47,14 @@ it might require some work since GitLab uses several Gems that have native exten
- 1 core works for under 100 users but the responsiveness might suffer
- **2 cores** is the **recommended** number of cores and supports up to 100 users
-- 4 cores supports about 1,000 users
+- 4 cores supports up to 1,000 users
- 8 cores supports up to 10,000 users
## Memory
- 512MB is too little memory, GitLab will be very slow and you will need 250MB of swap
- 768MB is the minimal memory size but we advise against this
-- 1GB supports up to 100 users if you do not have individual repo's over 250MB
+- 1GB supports up to 100 users (with individual repositories under 250MB, otherwise git memory usage necessitates using swap space)
- **2GB** is the **recommended** memory size and supports up to 1,000 users
- 4GB supports up to 10,000 users
@@ -71,8 +70,11 @@ Apart from a local hard drive you can also mount a volume that supports the netw
If you have enough RAM memory and a recent CPU the speed of GitLab is mainly limited by hard drive seek times. Having a fast drive (7200 RPM and up) or a solid state drive (SSD) will improve the responsiveness of GitLab.
-# Installation troubles and reporting success or failure
-If you have troubles installing GitLab following the [official installation guide](installation.md)
-or want to share your experience installing GitLab on a not officially supported
-platform, please follow the the [contribution guide](/CONTRIBUTING.md).
+# Supported webbrowsers
+
+- Chrome (Latest stable version)
+- Firefox (Latest released version)
+- Safari 7+ (Know problem: required fields in html5 do not work)
+- Opera (Latest released version)
+- IE 10+
diff --git a/doc/install/structure.md b/doc/install/structure.md
index f580ea159a2..67ca1895374 100644
--- a/doc/install/structure.md
+++ b/doc/install/structure.md
@@ -10,18 +10,12 @@ This is the directory structure you will end up with following the instructions
| |-- gitlab-shell
| |-- repositories
+* `/home/git/.ssh` - contains openssh settings. Specifically the `authorized_keys` file managed by gitlab-shell.
+* `/home/git/gitlab` - GitLab core software.
+* `/home/git/gitlab-satellites` - checked out repositories for merge requests and file editing from web UI. This can be treated as a temporary files directory.
+* `/home/git/gitlab-shell` - Core add-on component of gitlab. Maintains SSH cloning and other functionality.
+* `/home/git/repositories` - bare repositories for all projects organized by namespace. This is where the git repositories which are pushed/pulled are maintained for all projects. **This area is critical data for projects. [Keep a backup](../raketasks/backup_restore.md)**
-**/home/git/.ssh**
+*Note: the default locations for gitlab-satellites and repositories can be configured in `config/gitlab.yml` of gitlab and `config.yml` of gitlab-shell.*
-**/home/git/gitlab**
- This is where GitLab lives.
-
-**/home/git/gitlab-satellites**
- Contains a copy of all repositories with a working tree.
- It's used for merge requests, editing files, etc.
-
-**/home/git/repositories**
- Holds all your repositories in bare format.
- This is the place Git uses when you pull/push to your projects.
-
-You can change them in your `config/gitlab.yml` file.
+To see a more in-depth overview see the [GitLab architecture doc](../development/architecture.md).
diff --git a/doc/integration/external-issue-tracker.md b/doc/integration/external-issue-tracker.md
new file mode 100644
index 00000000000..02eadfd410a
--- /dev/null
+++ b/doc/integration/external-issue-tracker.md
@@ -0,0 +1,7 @@
+GitLab has a great issue tracker but you can also use an external issue tracker such as JIRA or Redmine. This is something that you can turn on per GitLab project. If for example you configure JIRA it provides the following functionality:
+
+- the 'Issues' link on the GitLab project pages takes you to the appropriate JIRA issue index;
+- clicking 'New issue' on the project dashboard creates a new JIRA issue;
+- textual references to PROJECT-1234 in comments, commit messages get turned into HTML links to the corresponding JIRA issue.
+
+![jira screenshot](jira-intergration-points.png)
diff --git a/doc/integration/jira-integration-points.png b/doc/integration/jira-integration-points.png
new file mode 100644
index 00000000000..0692a7b458a
--- /dev/null
+++ b/doc/integration/jira-integration-points.png
Binary files differ
diff --git a/doc/markdown/markdown.md b/doc/markdown/markdown.md
index 6b5308afc4f..f49f09756ab 100644
--- a/doc/markdown/markdown.md
+++ b/doc/markdown/markdown.md
@@ -1,41 +1,37 @@
----------------------------------------------
-Table of Contents
+Table of Contents
=================
----------------------------------------------
-[GitLab Flavored Markdown](#toc_3)
--------------------------------
-[Newlines](#toc_4)
-[Multiple underscores in words](#toc_5)
-[URL autolinking](#toc_6)
-[Code and Syntax Highlighting](#toc_7)
-[Emoji](#toc_8)
-[Special GitLab references](#toc_9)
-
-
-
-[Standard Markdown](#toc_10)
-------------------------------
-[Headers](#toc_11)
-[Emphasis](#toc_20)
-[Lists](#toc_21)
-[Links](#toc_22)
-[Images](#toc_23)
-[Blockquotes](#toc_24)
-[Inline HTML](#toc_25)
-[Horizontal Rule](#toc_26)
-[Line Breaks](#toc_27)
-[Tables](#toc_28)
-
-[References](#toc_29)
----------------------
+**[GitLab Flavored Markdown](#gitlab-flavored-markdown-gfm)**
+
+[Newlines](#newlines)
+[Multiple underscores in words](#multiple-underscores-in-words)
+[URL autolinking](#url-autolinking)
+[Code and Syntax Highlighting](#code-and-syntax-highlighting)
+[Emoji](#emoji)
+[Special GitLab references](#special-gitlab-references)
+
+**[Standard Markdown](#standard-markdown)**
+
+[Headers](#headers)
+[Emphasis](#emphasis)
+[Lists](#lists)
+[Links](#links)
+[Images](#images)
+[Blockquotes](#blockquotes)
+[Inline HTML](#inline-html)
+[Horizontal Rule](#horizontal-rule)
+[Line Breaks](#line-breaks)
+[Tables](#tables)
+
+**[References](#references)**
----------------------------------------------
-<a name="gfm" />
-GitLab Flavored Markdown (GFM)
+GitLab Flavored Markdown (GFM)
==============================
For GitLab we developed something we call "GitLab Flavored Markdown" (GFM). It extends the standard Markdown in a few significant ways to add some useful functionality.
@@ -49,7 +45,10 @@ You can use GFM in
* milestones
* wiki pages
-<a name="newlines" />
+You can also use other rich text files in GitLab.
+You might have to install a depency to do so.
+Please see the [github-markup gem readme](https://github.com/gitlabhq/markup#markups) for more information.
+
Newlines
--------
The biggest difference that GFM introduces is in the handling of linebreaks. With traditional Markdown you can hard wrap paragraphs of text and they will be combined into a single paragraph. We find this to be the cause of a huge number of unintentional formatting errors. GFM treats newlines in paragraph-like content as real line breaks, which is probably what you intended.
@@ -61,8 +60,7 @@ The next paragraph contains two phrases separated by a single newline character:
Roses are red
Violets are blue
-
-<a name="underscores" />
+
Multiple underscores in words
-----------------------------
It is not reasonable to italicize just _part_ of a word, especially when you're dealing with code and names that often appear with multiple underscores. Therefore, GFM ignores multiple underscores in words.
@@ -73,7 +71,6 @@ It is not reasonable to italicize just _part_ of a word, especially when you're
perform_complicated_task
do_this_and_do_that_and_another_thing
-<a name="autolink" />
URL autolinking
---------------
GFM will autolink standard URLs you copy and paste into your text.
@@ -83,12 +80,10 @@ So if you want to link to a URL (instead of a textural link), you can simply put
http://www.google.com
-<a name="code"/>
## Code and Syntax Highlighting
Blocks of code are either fenced by lines with three back-ticks <code>```</code>, or are indented with four spaces. Only the fenced code blocks support syntax highlighting.
-
```no-highlight
Inline `code` has `back-ticks around` it.
```
@@ -101,14 +96,14 @@ Example:
var s = "JavaScript syntax highlighting";
alert(s);
```
-
+
```python
def function():
#indenting works just fine in the fenced code block
s = "Python syntax highlighting"
print s
```
-
+
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
@@ -116,7 +111,7 @@ Example:
```
```
- No language indicated, so no syntax highlighting.
+ No language indicated, so no syntax highlighting.
s = "There is no highlighting for this."
But let's throw in a <b>tag</b>.
```
@@ -147,7 +142,6 @@ s = "There is no highlighting for this."
But let's throw in a <b>tag</b>.
```
-<a name="emoji"/>
Emoji
-----
@@ -159,7 +153,7 @@ Emoji
If you are :new: to this, don't be :fearful:. You can easily join the emoji :circus_tent:. All you need to do is to :book: up on the supported codes.
- Consult the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/) for a list of all supported emoji codes. :thumbsup:
+ Consult the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/) for a list of all supported emoji codes. :thumbsup:
Sometimes you want to be :cool: and add some :sparkles: to your :speech_balloon:. Well we have a :gift: for you:
@@ -169,9 +163,8 @@ You can use it to point out a :bug: or warn about :monkey:patches. And if someon
If you are :new: to this, don't be :fearful:. You can easily join the emoji :circus_tent:. All you need to do is to :book: up on the supported codes.
-Consult the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/) for a list of all supported emoji codes. :thumbsup:
+Consult the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/) for a list of all supported emoji codes. :thumbsup:
-<a name="special"/>
Special GitLab References
-----
@@ -179,7 +172,6 @@ GFM recognized special references.
You can easily reference e.g. a team member, an issue, or a commit within a project.
GFM will turn that reference into a link so you can navigate between them easily.
-
GFM will recognize the following:
* @foo : for team members
@@ -189,13 +181,10 @@ GFM will recognize the following:
* 1234567 : for commits
* \[file\](path/to/file) : for file references
-<a name="standard"/>
-
----------------------------------
# Standard Markdown
----------------------------------
-<a name="headers"/>
## Headers
```no-highlight
@@ -230,7 +219,54 @@ Alt-H1
Alt-H2
------
-<a name="emphasis"/>
+### Header IDs and links
+
+All markdown rendered headers automatically get IDs, except for comments.
+
+On hover a link to those IDs becomes visible to make it easier to copy the link to the header to give it to someone else.
+
+The IDs are generated from the content of the header according to the following rules:
+
+1) remove the heading hashes `#` and process the rest of the line as it would be processed if it were not a header
+2) from the result, remove all HTML tags, but keep their inner content
+3) convert all characters to lowercase
+4) convert all characters except `[a-z0-9_-]` into hyphens `-`
+5) transform multiple adjacent hyphens into a single hyphen
+6) remove trailing and heading hyphens
+
+For example:
+
+```
+###### ..Ab_c-d. e [anchor](url) ![alt text](url)..
+```
+
+which renders as:
+
+###### ..Ab_c-d. e [anchor](url) ![alt text](url)..
+
+will first be converted by step 1) into a string like:
+
+```
+..Ab_c-d. e &lt;a href="url">anchor&lt;/a> &lt;img src="url" alt="alt text"/>..
+```
+
+After removing the tags in step 2) we get:
+
+```
+..Ab_c-d. e anchor ..
+```
+
+And applying all the other steps gives the id:
+
+```
+ab_c-d-e-anchor
+```
+
+Note in particular how:
+
+- for markdown anchors `[text](url)`, only the `text` is used
+- markdown images `![alt](url)` are completely ignored
+
## Emphasis
```no-highlight
@@ -251,18 +287,16 @@ Combined emphasis with **asterisks and _underscores_**.
Strikethrough uses two tildes. ~~Scratch this.~~
-
-<a name="lists"/>
## Lists
```no-highlight
1. First ordered list item
2. Another item
- * Unordered sub-list.
+ * Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
1. Ordered sub-list
-4. And another item.
-
+4. And another item.
+
Some text that should be aligned with the above item.
* Unordered list can use asterisks
@@ -272,18 +306,17 @@ Strikethrough uses two tildes. ~~Scratch this.~~
1. First ordered list item
2. Another item
- * Unordered sub-list.
+ * Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
1. Ordered sub-list
-4. And another item.
-
+4. And another item.
+
Some text that should be aligned with the above item.
* Unordered list can use asterisks
- Or minuses
+ Or pluses
-<a name="links"/>
## Links
There are two ways to create links.
@@ -320,30 +353,28 @@ Some text to show that the reference links can follow later.
[1]: http://slashdot.org
[link text itself]: http://www.reddit.com
-<a name="images"/>
## Images
Here's our logo (hover to see the title text):
- Inline-style:
- ![alt text](/assets/logo-white.png "Logo Title Text 1")
+ Inline-style:
+ ![alt text](assets/logo-white.png)
- Reference-style:
- ![alt text][logo]
+ Reference-style:
+ ![alt text1][logo]
- [logo]: /assets/logo-white.png "Logo Title Text 2"
+ [logo]: assets/logo-white.png
Here's our logo (hover to see the title text):
-Inline-style:
+Inline-style:
![alt text](/assets/logo-white.png "Logo Title Text 1")
-Reference-style:
+Reference-style:
![alt text][logo]
[logo]: /assets/logo-white.png "Logo Title Text 2"
-<a name="blockquotes"/>
## Blockquotes
```no-highlight
@@ -352,7 +383,7 @@ Reference-style:
Quote break.
-> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
+> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
```
> Blockquotes are very handy in email to emulate reply text.
@@ -360,12 +391,11 @@ Quote break.
Quote break.
-> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
+> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
-<a name="html"/>
## Inline HTML
-You can also use raw HTML in your Markdown, and it'll mostly work pretty well.
+You can also use raw HTML in your Markdown, and it'll mostly work pretty well.
```no-highlight
<dl>
@@ -385,7 +415,6 @@ You can also use raw HTML in your Markdown, and it'll mostly work pretty well.
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
</dl>
-<a name="hr"/>
## Horizontal Rule
```
@@ -418,10 +447,9 @@ ___
Underscores
-<a name="lines"/>
## Line Breaks
-My basic recommendation for learning how line breaks work is to experiment and discover -- hit &lt;Enter&gt; once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend.
+My basic recommendation for learning how line breaks work is to experiment and discover -- hit &lt;Enter&gt; once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend.
Here are some things to try out:
@@ -438,11 +466,9 @@ Here's a line for us to start with.
This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
-This line is also begins a separate paragraph, but...
+This line is also begins a separate paragraph, but...
This line is only separated by a single newline, so it's a separate line in the *same paragraph*.
-
-<a name="tables"/>
## Tables
Tables aren't part of the core Markdown spec, but they are part of GFM and Markdown Here supports them.
@@ -461,10 +487,8 @@ Code above produces next output:
| cell 1 | cell 2 |
| cell 3 | cell 4 |
-
------------
-<a name="references"/>
## References
* This document leveraged heavily from the [Markdown-Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
diff --git a/doc/permissions/permissions.md b/doc/permissions/permissions.md
new file mode 100644
index 00000000000..73e1728a559
--- /dev/null
+++ b/doc/permissions/permissions.md
@@ -0,0 +1,45 @@
+Users have different abilities depending on the access level they have in a particular group or project.
+If a user is both in a project group and in the project itself, the highest permission level is used.
+If a user is a GitLab administrator they receive all permissions.
+
+---
+
+#### Project:
+
+
+| Action| Guest | Reporter | Developer | Master | Owner|
+|-------|-------|----------|-----------|--------|------|
+|Create new issue|✓|✓|✓|✓|✓|
+|Leave comments|✓|✓|✓|✓|✓|
+|Write on project wall|✓|✓|✓|✓|✓|
+|Pull project code| |✓|✓|✓|✓|
+|Download project| |✓|✓|✓|✓|
+|Create code snippets| |✓|✓|✓|✓|
+|Create new merge request| ||✓|✓|✓|
+|Create new branches| ||✓|✓|✓|
+|Push to non-protected branches| ||✓|✓|✓|
+|Remove non-protected branches| ||✓|✓|✓|
+|Add tags| ||✓|✓|✓|
+|Write a wiki| ||✓|✓|✓|
+|Manage issue tracker| ||✓|✓|✓|
+|Add new team members| |||✓|✓|
+|Push to protected branches| |||✓|✓|
+|Remove protected branches| |||✓|✓|
+|Edit project| |||✓|✓|
+|Add Deploy Keys to project| |||✓|✓|
+|Confiure Project Hooks| |||✓|✓|
+|Switch visibility level| ||||✓|
+|Transfer project to another namespace| ||||✓|
+|Remove project| ||||✓|
+
+#### Group
+
+|Action|Guest|Reporter|Developer|Master|Owner|
+|------|-----|--------|---------|------|-----|
+|Browse group|✓|✓|✓|✓|✓|
+|Edit group|||||✓|
+|create project in group|||||✓|
+|Manage group members|||||✓|
+|Remove group|||||✓|
+
+Any user can remove himself from a group, unless he is the last Owner of the group.
diff --git a/doc/public_access/public_access.md b/doc/public_access/public_access.md
new file mode 100644
index 00000000000..bf9d2784aff
--- /dev/null
+++ b/doc/public_access/public_access.md
@@ -0,0 +1,28 @@
+Gitlab allows you to open selected projects to be accessed **publicly** or **internally**.
+Projects with either of these visibility levels will be listen in the [public access directory](/public).
+Internal projects will only be available to authenticated users.
+
+#### Public projects
+Public projects can be cloned **without any** authentication.
+It will also be listen on the [public access directory](/public).
+**Any logged in user** will have [Guest](/help/permissions) permissions on the repository.
+
+#### Internal projects
+Internal projects can be cloned by any logged in user.
+It will also be listed on the [public access directory](/public) for logged in users.
+Any logged in user will have [Guest](/help/permissions) permissions on the repository.
+
+#### How to change project visibility
+1. Go to your project dashboard
+2. Click on the "Edit" tab
+3. Change "Visibility Level"
+
+#### Visibility of users
+The public page of users, located at `/u/username` is visible if either:
+
+* You are logged in.
+* You are logged out, and the target user is authorized to (is Guest, Reporter, etc.) at least one public project.
+
+Otherwise, you will be redirected to the sign in page.
+
+When visiting the public page of an user, you will only see listed projects which you can view yourself.
diff --git a/doc/raketasks/backup_restore.md b/doc/raketasks/backup_restore.md
index d2da64f3d3c..bdff6ad5da8 100644
--- a/doc/raketasks/backup_restore.md
+++ b/doc/raketasks/backup_restore.md
@@ -78,3 +78,18 @@ Restoring repositories:
- Restoring repository abcd... [DONE]
Deleting tmp directories...[DONE]
```
+
+### Configure cron to make daily backups
+
+```
+cd /home/git/gitlab
+sudo -u git -H editor config/gitlab.yml # Enable keep_time in the backup section to automatically delete old backups
+sudo -u git crontab -e # Edit the crontab for the git user
+```
+
+Add the following lines at the bottom:
+
+```
+# Create a full backup of the GitLab repositories and SQL database every day at 2am
+0 2 * * * cd /home/git/gitlab && PATH=/usr/local/bin:/usr/bin:/bin bundle exec rake gitlab:backup:create RAILS_ENV=production
+```
diff --git a/doc/raketasks/user_management.md b/doc/raketasks/user_management.md
index 8fa2ed1311c..e8232082916 100644
--- a/doc/raketasks/user_management.md
+++ b/doc/raketasks/user_management.md
@@ -1,6 +1,6 @@
### Add user as a developer to all projects
-```
+```bash
bundle exec rake gitlab:import:user_to_projects[username@domain.tld]
```
@@ -11,6 +11,22 @@ Notes:
* admin users are added as masters
-```
+```bash
bundle exec rake gitlab:import:all_users_to_all_projects
```
+
+### Add user as a developer to all groups
+
+```
+bundle exec rake gitlab:import:user_to_groups[username@domain.tld]
+```
+
+### Add all users to all groups
+
+Notes:
+
+* admin users are added as owners so they can add additional users to the group
+
+```
+bundle exec rake gitlab:import:all_users_to_all_groups
+```
diff --git a/doc/release/monthly.md b/doc/release/monthly.md
index bad7794d421..28fc260b334 100644
--- a/doc/release/monthly.md
+++ b/doc/release/monthly.md
@@ -58,15 +58,19 @@ Check if changed since last release (~22nd of last month depending on when last
After making the release branch new commits are cherry-picked from master. When the release gets closer we get more selective what is cherry-picked. The days of the month are approximately as follows:
-* 17th: feature freeze (branch and stop merging new features)
-* 18th: UI freeze (stop cherry-picking changes to the user interface)
-* 19th: code freeze (stop cherry-picking non-essential code improvements)
-* 20th: release candidate 1 (tag and tweet about x.x.rc1)
-* 21st: release candidate 2 (optional, only if rc1 had problems)
-* 22nd: release (update VERSION and CHANGELOG, tag, blog and tweet)
+* 17th: feature freeze (stop merging new features in master)
+* 18th: UI freeze (stop merging changes to the user interface)
+* 19th: code freeze (stop merging non-essential code improvements)
+* 20th: release candidate 1 (VERSION x.x.0.rc1, tag and tweet about x.x.0.rc1)
+* 21st: optional release candidate 2 (x.x.0.rc2, only if rc1 had problems)
+* 22nd: release (VERSION x.x.0, create x-x-stable branch, tag, blog and tweet)
+* 23nd: optional patch releases (x.x.1, x.x.2, etc., only if there are serious problems)
+* 24-end of month: release Enterprise Edition and upgrade GitLab Cloud
+* 1-7th: official merge window (see contributing guide)
+* 8-16th: bugfixes and sponsored features
# Write a blog post
* Mention what GitLab is on the second line: GitLab is open source software to collaborate on code.
* Select and thank the the Most Valuable Person (MVP) of this release.
-* Add a note if there are security fixes: This release fixes an important security issue and we advise everyone to upgrade as soon as possible.
+* Add a note if there are security fixes: This release fixes an important security issue and we advise everyone to upgrade as soon as possible. \ No newline at end of file
diff --git a/doc/release/security.md b/doc/release/security.md
index a77cbae3eaa..7ec3991de85 100644
--- a/doc/release/security.md
+++ b/doc/release/security.md
@@ -22,7 +22,7 @@ Please report suspected security vulnerabilities in private to support@gitlab.co
1. Push the code and the tags to all the CE and EE repositories
1. Apply the patch to GitLab Cloud and the private GitLab development server
1. Merge and publish the blog posts
-1. Send tweets about the release from @gitlabhq and @git_lab
+1. Send tweets about the release from @gitlabhq
1. Send out an email to the subscribers mailing list on MailChimp
1. Send out an email to [the community google mailing list](https://groups.google.com/forum/#!forum/gitlabhq)
1. Send out an email to [the GitLab newsletter list](http://gitlab.us5.list-manage.com/subscribe?u=498dccd07cf3e9482bee33ba4&id=98a9a4992c)
diff --git a/doc/security/password_length_limits.md b/doc/security/password_length_limits.md
new file mode 100644
index 00000000000..c8d66e9636c
--- /dev/null
+++ b/doc/security/password_length_limits.md
@@ -0,0 +1,10 @@
+# Custom password length limits
+
+If you want to enforce longer user passwords you can create an extra Devise initializer with the steps below.
+If you do not use the `devise_password_length.rb` initializer the password length is set to a minimum of 8 characters in `config/initializers/devise.rb`.
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H cp config/initializers/devise_password_length.rb.example config/initializers/devise_password_length.rb
+sudo -u git -H editor config/initializers/devise_password_length.rb # inspect and edit the new password length limits
+```
diff --git a/doc/ssh/ssh.md b/doc/ssh/ssh.md
new file mode 100644
index 00000000000..0a38bc16b49
--- /dev/null
+++ b/doc/ssh/ssh.md
@@ -0,0 +1,24 @@
+SSH key allows you to establish a secure connection between your computer and GitLab
+
+
+Before generating an SSH key, check if your system already has one by running `cat ~/.ssh/id_rsa.pub`
+If your see a long string starting with `ssh-rsa` or `ssh-dsa`, you can skip the ssh-keygen step.
+
+
+To generate a new SSH key just open your terminal and use code below. The ssh-keygen command prompts you for a location and filename to store the key pair and for a password.
+When prompted for the location and filename you can press enter to use the default.
+It is a best practice to use a password for an SSH key but it is not required and you can skip creating a password by pressing enter.
+Note that the password you choose here can't be altered or retrieved.
+
+```bash
+ssh-keygen -t rsa -C "$your_email"
+```
+
+Use the code below to show your public key.
+
+```bash
+cat ~/.ssh/id_rsa.pub
+```
+
+Copy-paste the key to the 'My SSH Keys' section under the 'SSH' tab in your user profile.
+Please copy the complete key starting with `ssh-` and ending with your username and host.
diff --git a/app/views/admin/hooks/_data_ex.html.erb b/doc/system_hooks/system_hooks.md
index 5b16dfb398a..fe32ca1a9fa 100644
--- a/app/views/admin/hooks/_data_ex.html.erb
+++ b/doc/system_hooks/system_hooks.md
@@ -1,5 +1,12 @@
-<% data_ex_str = <<eos
-1. Project created:
+Your GitLab instance can perform HTTP POST requests on the following events: `create_project`, `delete_project`, `create_user`, `delete_user` and `change_team_member`.
+
+System hooks can be used, e.g. for logging or changing information in a LDAP server.
+
+#### Hooks request example:
+
+**Project created:**
+
+```json
{
"created_at": "2012-07-21T07:30:54Z",
"event_name": "project_create",
@@ -10,8 +17,11 @@
"path_with_namespace": "jsmith/stormcloud",
"project_id": 74,
}
+```
+
+**Project destroyed:**
-2. Project destroyed:
+```json
{
"created_at": "2012-07-21T07:30:58Z",
"event_name": "project_destroy",
@@ -22,8 +32,11 @@
"path_with_namespace": "jsmith/underscore",
"project_id": 73,
}
+```
-3. New Team Member:
+**New Team Member:**
+
+```ruby
{
"created_at": "2012-07-21T07:30:56Z",
"event_name": "user_add_to_team",
@@ -34,8 +47,11 @@
"user_email": "johnsmith@gmail.com",
"user_name": "John Smith",
}
+```
+
+**Team Member Removed:**
-4. Team Member Removed:
+```json
{
"created_at": "2012-07-21T07:30:56Z",
"event_name": "user_remove_from_team",
@@ -46,8 +62,11 @@
"user_email": "johnsmith@gmail.com",
"user_name": "John Smith",
}
+```
+
+**User created:**
-5. User created:
+```json
{
"created_at": "2012-07-21T07:44:07Z",
"email": "js@gitlabhq.com",
@@ -55,8 +74,11 @@
"name": "John Smith",
"user_id": 41
}
+```
-6. User removed:
+**User removed:**
+
+```json
{
"created_at": "2012-07-21T07:44:07Z",
"email": "js@gitlabhq.com",
@@ -64,8 +86,4 @@
"name": "John Smith",
"user_id": 41
}
-
-eos
-%>
-<% js_lexer = Pygments::Lexer[:js] %>
-<%= raw js_lexer.highlight(data_ex_str) %>
+```
diff --git a/doc/update/5.4-to-6.0.md b/doc/update/5.4-to-6.0.md
index bcba3ee4d05..312e9a46080 100644
--- a/doc/update/5.4-to-6.0.md
+++ b/doc/update/5.4-to-6.0.md
@@ -87,14 +87,14 @@ sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Note: We switched from Puma in GitLab 5.4 to unicorn in GitLab 6.0.
-* Make `/home/git/gitlab/config/gitlab.yml` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/masterconfig/gitlab.yml.example but with your settings.
-* Make `/home/git/gitlab/config/unicorn.rb` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/masterconfig/unicorn.rb.example but with your settings.
+* Make `/home/git/gitlab/config/gitlab.yml` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example but with your settings.
+* Make `/home/git/gitlab/config/unicorn.rb` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/unicorn.rb.example but with your settings.
### 7. Update Init script
```bash
sudo rm /etc/init.d/gitlab
-sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-0-stable/lib/support/init.d/gitlab
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
```
diff --git a/doc/update/6.0-to-6.1.md b/doc/update/6.0-to-6.1.md
index 53bb69ddff8..b7fd7634859 100644
--- a/doc/update/6.0-to-6.1.md
+++ b/doc/update/6.0-to-6.1.md
@@ -30,8 +30,9 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
```bash
cd /home/git/gitlab
-sudo -u git -H git fetch
+sudo -u git -H git fetch --all
sudo -u git -H git checkout 6-1-stable
+# For GitLab Enterprise Edition: sudo -u git -H git checkout 6-1-stable-ee
```
### 3. Update gitlab-shell
@@ -70,7 +71,7 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
```bash
sudo rm /etc/init.d/gitlab
-sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-1-stable/lib/support/init.d/gitlab
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
```
diff --git a/doc/update/6.0-to-6.4.md b/doc/update/6.0-to-6.5.md
index c1c5abed6d6..e01cc589a83 100644
--- a/doc/update/6.0-to-6.4.md
+++ b/doc/update/6.0-to-6.5.md
@@ -1,4 +1,4 @@
-# From 6.0 to 6.4
+# From 6.0 to 6.5
# In 6.1 we remove a lot of deprecated code.
# You should update to 6.0 before installing 6.1 or higher so all the necessary conversions are run.
@@ -27,8 +27,9 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
```bash
cd /home/git/gitlab
-sudo -u git -H git fetch
-sudo -u git -H git checkout 6-4-stable
+sudo -u git -H git fetch --all
+sudo -u git -H git checkout 6-5-stable
+# For GitLab Enterprise Edition: sudo -u git -H git checkout 6-5-stable-ee
```
@@ -52,10 +53,10 @@ sudo -u git -H git checkout v1.8.0 # Addresses multiple critical security vulner
```bash
cd /home/git/gitlab
-# MySQL
+# MySQL installations (note: the line below states '--without ... postgres')
sudo -u git -H bundle install --without development test postgres --deployment
-#PostgreSQL
+# PostgreSQL installations (note: the line below states '--without ... mysql')
sudo -u git -H bundle install --without development test mysql --deployment
@@ -71,17 +72,17 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
TIP: to see what changed in gitlab.yml.example in this release use next command:
```
-git diff 6-0-stable:config/gitlab.yml.example 6-4-stable:config/gitlab.yml.example
+git diff 6-0-stable:config/gitlab.yml.example 6-5-stable:config/gitlab.yml.example
```
-* Make `/home/git/gitlab/config/gitlab.yml` same as https://gitlab.com/gitlab-org/gitlab-ce/blob/6-4-stable/config/gitlab.yml.example but with your settings.
-* Make `/home/git/gitlab/config/unicorn.rb` same as https://gitlab.com/gitlab-org/gitlab-ce/blob/6-4-stable/config/unicorn.rb.example but with your settings.
+* Make `/home/git/gitlab/config/gitlab.yml` same as https://gitlab.com/gitlab-org/gitlab-ce/blob/6-5-stable/config/gitlab.yml.example but with your settings.
+* Make `/home/git/gitlab/config/unicorn.rb` same as https://gitlab.com/gitlab-org/gitlab-ce/blob/6-5-stable/config/unicorn.rb.example but with your settings.
* Copy rack attack middleware config
```bash
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
```
-* Uncomment `config.middleware.use Rack::Attack` in `/home/git/gitlab/config/application.rb`
+
* Set up logrotate
```bash
@@ -91,9 +92,7 @@ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
### 7. Update Init script
```bash
-sudo rm /etc/init.d/gitlab
-sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-4-stable/lib/support/init.d/gitlab
-sudo chmod +x /etc/init.d/gitlab
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
```
### 8. Start application
diff --git a/doc/update/6.1-to-6.2.md b/doc/update/6.1-to-6.2.md
index a3849faf065..3c453a5ab42 100644
--- a/doc/update/6.1-to-6.2.md
+++ b/doc/update/6.1-to-6.2.md
@@ -23,8 +23,9 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
```bash
cd /home/git/gitlab
-sudo -u git -H git fetch
+sudo -u git -H git fetch --all
sudo -u git -H git checkout 6-2-stable # Latest version of 6-2-stable addresses CVE-2013-4489
+# For GitLab Enterprise Edition: sudo -u git -H git checkout 6-2-stable-ee
```
### 3. Update gitlab-shell
@@ -86,7 +87,7 @@ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
```bash
sudo rm /etc/init.d/gitlab
-sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-2-stable/lib/support/init.d/gitlab
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
```
diff --git a/doc/update/6.2-to-6.3.md b/doc/update/6.2-to-6.3.md
index 5b02b4cb4dd..7f916047369 100644
--- a/doc/update/6.2-to-6.3.md
+++ b/doc/update/6.2-to-6.3.md
@@ -20,8 +20,9 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
```bash
cd /home/git/gitlab
-sudo -u git -H git fetch
+sudo -u git -H git fetch --all
sudo -u git -H git checkout 6-3-stable
+# For GitLab Enterprise Edition: sudo -u git -H git checkout 6-3-stable-ee
```
### 3. Update gitlab-shell (and its config)
diff --git a/doc/update/6.3-to-6.4.md b/doc/update/6.3-to-6.4.md
index 69d184722cb..cfe75a6f149 100644
--- a/doc/update/6.3-to-6.4.md
+++ b/doc/update/6.3-to-6.4.md
@@ -9,14 +9,17 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
### 1. Stop server
- sudo service gitlab stop
+```bash
+sudo service gitlab stop
+````
### 2. Get latest code
```bash
cd /home/git/gitlab
-sudo -u git -H git fetch
+sudo -u git -H git fetch --all
sudo -u git -H git checkout 6-4-stable
+# For GitLab Enterprise Edition: sudo -u git -H git checkout 6-4-stable-ee
```
### 3. Update gitlab-shell (and its config)
@@ -51,18 +54,24 @@ sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
### 5. Start application
- sudo service gitlab start
- sudo service nginx restart
+```bash
+sudo service gitlab start
+sudo service nginx restart
+```
-### 8. Check application status
+### 6. Check application status
Check if GitLab and its environment are configured correctly:
- sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
+```bash
+sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
+```
To make sure you didn't miss anything run a more thorough check with:
- sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
+```bash
+sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
+```
If all items are green, then congratulations upgrade complete!
diff --git a/doc/update/6.4-to-6.5.md b/doc/update/6.4-to-6.5.md
new file mode 100644
index 00000000000..c88be3582cf
--- /dev/null
+++ b/doc/update/6.4-to-6.5.md
@@ -0,0 +1,94 @@
+# From 6.4 to 6.5
+
+### 0. Backup
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
+```
+
+### 1. Stop server
+
+ sudo service gitlab stop
+
+### 2. Get latest code
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H git fetch --all
+```
+
+For Gitlab Community Edition:
+
+```bash
+sudo -u git -H git checkout 6-5-stable
+```
+
+OR
+
+For GitLab Enterprise Edition:
+
+```bash
+sudo -u git -H git checkout 6-5-stable-ee
+```
+
+### 3. Update gitlab-shell (and its config)
+
+```bash
+cd /home/git/gitlab-shell
+sudo -u git -H git fetch
+sudo -u git -H git checkout v1.8.0
+```
+
+### 4. Install libs, migrations, etc.
+
+```bash
+cd /home/git/gitlab
+
+# MySQL installations (note: the line below states '--without ... postgres')
+sudo -u git -H bundle install --without development test postgres --deployment
+
+# PostgreSQL installations (note: the line below states '--without ... mysql')
+sudo -u git -H bundle install --without development test mysql --deployment
+
+
+# Run database migrations
+sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
+
+# Clean up assets and cache
+sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
+
+# Update init.d script
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
+```
+
+### 5. Start application
+
+ sudo service gitlab start
+ sudo service nginx restart
+
+### 6. Check application status
+
+Check if GitLab and its environment are configured correctly:
+
+ sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
+
+To make sure you didn't miss anything run a more thorough check with:
+
+ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
+
+If all items are green, then congratulations upgrade is complete!
+
+## Things went south? Revert to previous version (6.4)
+
+### 1. Revert the code to the previous version
+Follow the [`upgrade guide from 6.3 to 6.4`](6.3-to-6.4.md), except for the database migration
+(The backup is already migrated to the previous version)
+
+### 2. Restore from the backup:
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production
+```
+If you have more than one backup *.tar file(s) please add `BACKUP=timestamp_of_backup` to the command above.
diff --git a/doc/update/6.5-to-6.6.md b/doc/update/6.5-to-6.6.md
new file mode 100644
index 00000000000..589c18c27c2
--- /dev/null
+++ b/doc/update/6.5-to-6.6.md
@@ -0,0 +1,94 @@
+# From 6.5 to 6.6
+
+### 0. Backup
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
+```
+
+### 1. Stop server
+
+ sudo service gitlab stop
+
+### 2. Get latest code
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H git fetch --all
+```
+
+For Gitlab Community Edition:
+
+```bash
+sudo -u git -H git checkout 6-6-stable
+```
+
+OR
+
+For GitLab Enterprise Edition:
+
+```bash
+sudo -u git -H git checkout 6-6-stable-ee
+```
+
+### 3. Update gitlab-shell (and its config)
+
+```bash
+cd /home/git/gitlab-shell
+sudo -u git -H git fetch
+sudo -u git -H git checkout v1.8.0
+```
+
+### 4. Install libs, migrations, etc.
+
+```bash
+cd /home/git/gitlab
+
+# MySQL installations (note: the line below states '--without ... postgres')
+sudo -u git -H bundle install --without development test postgres --deployment
+
+# PostgreSQL installations (note: the line below states '--without ... mysql')
+sudo -u git -H bundle install --without development test mysql --deployment
+
+
+# Run database migrations
+sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
+
+# Clean up assets and cache
+sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
+
+# Update init.d script
+sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
+```
+
+### 5. Start application
+
+ sudo service gitlab start
+ sudo service nginx restart
+
+### 6. Check application status
+
+Check if GitLab and its environment are configured correctly:
+
+ sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
+
+To make sure you didn't miss anything run a more thorough check with:
+
+ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
+
+If all items are green, then congratulations upgrade is complete!
+
+## Things went south? Revert to previous version (6.5)
+
+### 1. Revert the code to the previous version
+Follow the [`upgrade guide from 6.4 to 6.5`](6.4-to-6.5.md), except for the database migration
+(The backup is already migrated to the previous version)
+
+### 2. Restore from the backup:
+
+```bash
+cd /home/git/gitlab
+sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production
+```
+If you have more than one backup *.tar file(s) please add `BACKUP=timestamp_of_backup` to the command above.
diff --git a/doc/update/patch_versions.md b/doc/update/patch_versions.md
index b284ff48365..21b93c0b929 100644
--- a/doc/update/patch_versions.md
+++ b/doc/update/patch_versions.md
@@ -38,12 +38,12 @@ Replace LATEST_TAG with the latest GitLab Shell tag you want to upgrade to, for
```bash
cd /home/git/gitlab
-# MySQL
-sudo -u git -H bundle install --without development test postgres --deployment
-
#PostgreSQL
sudo -u git -H bundle install --without development test mysql --deployment
+# MySQL
+sudo -u git -H bundle install --without development test postgres --deployment
+
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
diff --git a/doc/update/ruby.md b/doc/update/ruby.md
index 3fc068c0ae2..9d0cafb3f05 100644
--- a/doc/update/ruby.md
+++ b/doc/update/ruby.md
@@ -41,7 +41,7 @@ Just to be sure we will reinstall the gems used by GitLab. Note that the `bundle
```bash
cd /home/git/gitlab
sudo -u git -H rm -rf vendor/bundle # remove existing Gem bundle
-sudo -u git -H bundle install --deployment --without development test postgres aws # Assuming MySQL
+sudo -u git -H bundle install --deployment --without development test mysql aws # Assuming PostgreSQL
```
### 6. Start GitLab
diff --git a/doc/update/upgrader.md b/doc/update/upgrader.md
index 1f51005a8e9..305ef961be5 100644
--- a/doc/update/upgrader.md
+++ b/doc/update/upgrader.md
@@ -1,10 +1,11 @@
# GitLab Upgrader
-GitLab Upgrader - ruby script that allows you easily upgrade GitLab to latest minor version.
-Ex. it can update your application from 6.4 to latest GitLab 6 version (like 6.5.1).
-You still need to create backup and manually restart GitLab but all other operations can be done by upgrade tool.
+GitLab Upgrader - a ruby script that allows you easily upgrade GitLab to latest minor version.
+For example it can update your application from 6.4 to latest GitLab 6 version (like 6.6.1).
+You still need to create a a backup and manually restart GitLab after runnning the script but all other operations are done by this upgrade script.
+If you have local changes to your GitLab repository the script will stash them and you need to use `git stash pop` after running the script.
-__GitLab Upgrader is available only for version 6.4.2 or higher__
+__GitLab Upgrader is available only for GitLab version 6.4.2 or higher__
### 0. Backup
@@ -20,11 +21,22 @@ __GitLab Upgrader is available only for version 6.4.2 or higher__
cd /home/git/gitlab
sudo -u git -H ruby script/upgrade.rb
- # it also supports -y option to avouid user input
+ # to perform a non-interactive install (no user input required) you can add -y
# sudo -u git -H ruby script/upgrade.rb -y
-
### 3. Start application
sudo service gitlab start
sudo service nginx restart
+
+### 4. Check application status
+
+Check if GitLab and its environment are configured correctly:
+
+ sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
+
+To make sure you didn't miss anything run a more thorough check with:
+
+ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
+
+If all items are green, then congratulations upgrade is complete!
diff --git a/doc/web_hooks/web_hooks.md b/doc/web_hooks/web_hooks.md
new file mode 100644
index 00000000000..ac52cf59f21
--- /dev/null
+++ b/doc/web_hooks/web_hooks.md
@@ -0,0 +1,112 @@
+Project web hooks allow you to trihher an url if new code is pushed or a new issue is created.
+
+---
+
+You can configure web hook to listen for specific events like pushes, issues, merge requests.
+GitLab will send POST request with data to web hook url.
+Web Hooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
+
+---
+
+#### Push events
+Triggered when you push to the repository except pushing tags.
+
+**Request body:**
+
+```json
+{
+ "before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
+ "after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
+ "ref": "refs/heads/master",
+ "user_id": 4,
+ "user_name": "John Smith",
+ "project_id": 15,
+ "repository": {
+ "name": "Diaspora",
+ "url": "git@localhost:diaspora.git",
+ "description": "",
+ "homepage": "http://localhost/diaspora"
+ },
+ "commits": [
+ {
+ "id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
+ "message": "Update Catalan translation to e38cb41.",
+ "timestamp": "2011-12-12T14:27:31+02:00",
+ "url": "http://localhost/diaspora/commits/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
+ "author": {
+ "name": "Jordi Mallach",
+ "email": "jordi@softcatala.org"
+ }
+ },
+ {
+ "id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
+ "message": "fixed readme",
+ "timestamp": "2012-01-03T23:36:29+02:00",
+ "url": "http://localhost/diaspora/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
+ "author": {
+ "name": "GitLab dev user",
+ "email": "gitlabdev@dv6700.(none)"
+ }
+ }
+ ],
+ "total_commits_count": 4
+}
+```
+
+#### Issues events
+
+Triggered when a new issue is created or an existing issue was updated/closed/reopened.
+
+**Request body:**
+
+```json
+{
+ "object_kind": "issue",
+ "object_attributes": {
+ "id": 301,
+ "title": "New API: create/update/delete file",
+ "assignee_id": 51,
+ "author_id": 51,
+ "project_id": 14,
+ "created_at": "2013-12-03T17:15:43Z",
+ "updated_at": "2013-12-03T17:15:43Z",
+ "position": 0,
+ "branch_name": null,
+ "description": "Create new API for manipulations with repository",
+ "milestone_id": null,
+ "state": "opened",
+ "iid": 23
+ }
+}
+```
+
+#### Merge request events
+
+Triggered when a new merge request is created or an existing merge request was updated/merges/closed.
+
+**Request body:**
+
+```json
+{
+ "object_kind": "merge_request",
+ "object_attributes": {
+ "id": 99,
+ "target_branch": "master",
+ "source_branch": "ms-viewport",
+ "source_project_id": 14,
+ "author_id": 51,
+ "assignee_id": 6,
+ "title": "MS-Viewport",
+ "created_at": "2013-12-03T17:23:34Z",
+ "updated_at": "2013-12-03T17:23:34Z",
+ "st_commits": null,
+ "st_diffs": null,
+ "milestone_id": null,
+ "state": "opened",
+ "merge_status": "unchecked",
+ "target_project_id": 14,
+ "iid": 1,
+ "description": ""
+ }
+}
+```
diff --git a/doc/workflow/workflow.md b/doc/workflow/workflow.md
new file mode 100644
index 00000000000..1c238f74957
--- /dev/null
+++ b/doc/workflow/workflow.md
@@ -0,0 +1,26 @@
+1. Clone project
+
+ ```bash
+ git clone git@example.com:project-name.git
+ ```
+2. Create branch with your feature
+
+ ```bash
+ git checkout -b $feature_name
+ ```
+
+3. Write code. Comit changes
+
+ ```bash
+ git commit -am "My feature is ready"
+ ```
+
+4. Push your branch to GitLab
+
+ ```bash
+ git push origin $feature_name
+ ```
+
+5. Review your code on Commits page
+6. Create a merge request
+7. Your team lead will review the code &amp; merge it to the main branch
diff --git a/features/admin/groups.feature b/features/admin/groups.feature
index 6fed9a34869..352c1b3803f 100644
--- a/features/admin/groups.feature
+++ b/features/admin/groups.feature
@@ -2,7 +2,7 @@ Feature: Admin Groups
Background:
Given I sign in as an admin
And I have group with projects
- And Create gitlab user "John"
+ And User "John Doe" exists
And I visit admin groups page
Scenario: See group list
@@ -17,5 +17,5 @@ Feature: Admin Groups
@javascript
Scenario: Add user into projects in group
When I visit admin group page
- When I select user "John" from user list as "Reporter"
- Then I should see "John" in team list in every project as "Reporter"
+ When I select user "John Doe" from user list as "Reporter"
+ Then I should see "John Doe" in team list in every project as "Reporter"
diff --git a/features/admin/users.feature b/features/admin/users.feature
index 7f503cf9235..ce9f32f50d9 100644
--- a/features/admin/users.feature
+++ b/features/admin/users.feature
@@ -14,3 +14,9 @@ Feature: Admin Users
And Click save
Then See username error message
And Not changed form action url
+
+ Scenario: Edit my user attributes
+ Given I visit admin users page
+ And click edit on my user
+ When I submit modified user
+ Then I see user attributes changed
diff --git a/features/dashboard/help.feature b/features/dashboard/help.feature
new file mode 100644
index 00000000000..02ec688f804
--- /dev/null
+++ b/features/dashboard/help.feature
@@ -0,0 +1,8 @@
+Feature: Help
+ Background:
+ Given I sign in as a user
+ And I visit the "Rake Tasks" help page
+
+ Scenario: The markdown should be rendered correctly
+ Then I should see "Rake Tasks" page markdown rendered
+ And Header "Rebuild project satellites" should have correct ids and links
diff --git a/features/group.feature b/features/group.feature
new file mode 100644
index 00000000000..71282fb75ba
--- /dev/null
+++ b/features/group.feature
@@ -0,0 +1,115 @@
+Feature: Groups
+ Background:
+ Given I sign in as "John Doe"
+ And "John Doe" is owner of group "Owned"
+ And "John Doe" is guest of group "Guest"
+
+ @javascript
+ Scenario: I should see group "Owned" dashboard list
+ When I visit group "Owned" page
+ Then I should see group "Owned" projects list
+ And I should see projects activity feed
+
+ Scenario: Create a group from dasboard
+ When I visit group "Owned" page
+ And I visit dashboard page
+ And I click new group link
+ And submit form with new group "Samurai" info
+ Then I should be redirected to group "Samurai" page
+ And I should see newly created group "Samurai"
+
+ Scenario: I should see group "Owned" issues list
+ Given project from group "Owned" has issues assigned to me
+ When I visit group "Owned" issues page
+ Then I should see issues from group "Owned" assigned to me
+
+ Scenario: I should see group "Owned" merge requests list
+ Given project from group "Owned" has merge requests assigned to me
+ When I visit group "Owned" merge requests page
+ Then I should see merge requests from group "Owned" assigned to me
+
+ @javascript
+ Scenario: I should add user to projects in group "Owned"
+ Given User "Mary Jane" exists
+ When I visit group "Owned" members page
+ And I select user "Mary Jane" from list with role "Reporter"
+ Then I should see user "Mary Jane" in team list
+
+ Scenario: I should see edit group "Owned" page
+ When I visit group "Owned" settings page
+ And I change group "Owned" name to "new-name"
+ Then I should see new group "Owned" name
+
+ Scenario: I edit group "Owned" avatar
+ When I visit group "Owned" settings page
+ And I change group "Owned" avatar
+ And I visit group "Owned" settings page
+ Then I should see new group "Owned" avatar
+ And I should see the "Remove avatar" button
+
+ Scenario: I remove group "Owned" avatar
+ When I visit group "Owned" settings page
+ And I have group "Owned" avatar
+ And I visit group "Owned" settings page
+ And I remove group "Owned" avatar
+ Then I should not see group "Owned" avatar
+ And I should not see the "Remove avatar" button
+
+ # Leave
+
+ @javascript
+ Scenario: Owner should be able to remove himself from group if he is not the last owner
+ Given "Mary Jane" is owner of group "Owned"
+ When I visit group "Owned" members page
+ Then I should see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+ When I click on the "Remove User From Group" button for "John Doe"
+ And I visit group "Owned" members page
+ Then I should not see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+
+ @javascript
+ Scenario: Owner should not be able to remove himself from group if he is the last owner
+ Given "Mary Jane" is guest of group "Owned"
+ When I visit group "Owned" members page
+ Then I should see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+ Then I should not see the "Remove User From Group" button for "Mary Jane"
+
+ @javascript
+ Scenario: Guest should be able to remove himself from group
+ Given "Mary Jane" is guest of group "Guest"
+ When I visit group "Guest" members page
+ Then I should see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+ When I click on the "Remove User From Group" button for "John Doe"
+ When I visit group "Guest" members page
+ Then I should not see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+
+ @javascript
+ Scenario: Guest should be able to remove himself from group even if he is the only user in the group
+ When I visit group "Guest" members page
+ Then I should see user "John Doe" in team list
+ When I click on the "Remove User From Group" button for "John Doe"
+ When I visit group "Guest" members page
+ Then I should not see user "John Doe" in team list
+
+ # Remove others
+
+ Scenario: Owner should be able to remove other users from group
+ Given "Mary Jane" is owner of group "Owned"
+ When I visit group "Owned" members page
+ Then I should see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+ When I click on the "Remove User From Group" button for "Mary Jane"
+ When I visit group "Owned" members page
+ Then I should see user "John Doe" in team list
+ Then I should not see user "Mary Jane" in team list
+
+ Scenario: Guest should not be able to remove other users from group
+ Given "Mary Jane" is guest of group "Guest"
+ When I visit group "Guest" members page
+ Then I should see user "John Doe" in team list
+ Then I should see user "Mary Jane" in team list
+ Then I should not see the "Remove User From Group" button for "Mary Jane"
diff --git a/features/group/create_group.feature b/features/group/create_group.feature
deleted file mode 100644
index b77f3599e6a..00000000000
--- a/features/group/create_group.feature
+++ /dev/null
@@ -1,11 +0,0 @@
-Feature: Groups
- Background:
- Given I sign in as a user
-
- Scenario: Create a group from dasboard
- Given I have group with projects
- And I visit dashboard page
- When I click new group link
- And submit form with new group info
- Then I should be redirected to group page
- And I should see newly created group
diff --git a/features/group/group.feature b/features/group/group.feature
deleted file mode 100644
index 9fec19a4dc1..00000000000
--- a/features/group/group.feature
+++ /dev/null
@@ -1,33 +0,0 @@
-Feature: Groups
- Background:
- Given I sign in as a user
- And I have group with projects
-
- @javascript
- Scenario: I should see group dashboard list
- When I visit group page
- Then I should see projects list
- And I should see projects activity feed
-
- Scenario: I should see group issues list
- Given project from group has issues assigned to me
- When I visit group issues page
- Then I should see issues from this group assigned to me
-
- Scenario: I should see group merge requests list
- Given project from group has merge requests assigned to me
- When I visit group merge requests page
- Then I should see merge requests from this group assigned to me
-
- @javascript
- Scenario: I should add user to projects in Group
- Given I have new user "John"
- When I visit group members page
- And I select user "John" from list with role "Reporter"
- Then I should see user "John" in team list
-
- Scenario: I should see edit group page
- When I visit group settings page
- And I change group name
- Then I should see new group name
-
diff --git a/features/profile/emails.feature b/features/profile/emails.feature
new file mode 100644
index 00000000000..148fc766081
--- /dev/null
+++ b/features/profile/emails.feature
@@ -0,0 +1,25 @@
+Feature: Profile Emails
+ Background:
+ Given I sign in as a user
+ And I visit profile emails page
+
+ Scenario: I should see emails
+ Then I should see my emails
+
+ Scenario: Add new email
+ Given I submit new email "my@email.com"
+ Then I should see new email "my@email.com"
+ And I should see my emails
+
+ Scenario: Add duplicate email
+ Given I submit duplicate email @user.email
+ Then I should not have @user.email added
+ And I should see my emails
+
+ Scenario: Remove email
+ Given I submit new email "my@email.com"
+ Then I should see new email "my@email.com"
+ And I should see my emails
+ Then I click link "Remove" for "my@email.com"
+ Then I should not see email "my@email.com"
+ And I should see my emails
diff --git a/features/profile/group.feature b/features/profile/group.feature
new file mode 100644
index 00000000000..70b682e2913
--- /dev/null
+++ b/features/profile/group.feature
@@ -0,0 +1,47 @@
+Feature: Profile Group
+ Background:
+ Given I sign in as "John Doe"
+ And "John Doe" is owner of group "Owned"
+ And "John Doe" is guest of group "Guest"
+
+ # Leave groups
+
+ @javascript
+ Scenario: Owner should be able to leave from group if he is not the last owner
+ Given "Mary Jane" is owner of group "Owned"
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should see group "Guest" in group list
+ When I click on the "Leave" button for group "Owned"
+ And I visit profile groups page
+ Then I should not see group "Owned" in group list
+ Then I should see group "Guest" in group list
+
+ @javascript
+ Scenario: Owner should not be able to leave from group if he is the last owner
+ Given "Mary Jane" is guest of group "Owned"
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should see group "Guest" in group list
+ Then I should not see the "Leave" button for group "Owned"
+
+ @javascript
+ Scenario: Guest should be able to leave from group
+ Given "Mary Jane" is guest of group "Guest"
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should see group "Guest" in group list
+ When I click on the "Leave" button for group "Guest"
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should not see group "Guest" in group list
+
+ @javascript
+ Scenario: Guest should be able to leave from group even if he is the only user in the group
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should see group "Guest" in group list
+ When I click on the "Leave" button for group "Guest"
+ When I visit profile groups page
+ Then I should see group "Owned" in group list
+ Then I should not see group "Guest" in group list
diff --git a/features/profile/profile.feature b/features/profile/profile.feature
index 6b0421a20b3..44bb190f624 100644
--- a/features/profile/profile.feature
+++ b/features/profile/profile.feature
@@ -6,10 +6,17 @@ Feature: Profile
Given I visit profile page
Then I should see my profile info
+ Scenario: I can see groups I belong to
+ Given I have group with projects
+ When I visit profile page
+ And I click on my profile picture
+ Then I should see my user page
+ And I should see groups I belong to
+
Scenario: I edit profile
Given I visit profile page
- Then I change my contact info
- And I should see new contact info
+ Then I change my profile info
+ And I should see new profile info
Scenario: I change my password without old one
Given I visit profile password page
diff --git a/features/project/commits/branches.feature b/features/project/commits/branches.feature
index 4fa4dc26a1b..fcf8b7694f4 100644
--- a/features/project/commits/branches.feature
+++ b/features/project/commits/branches.feature
@@ -16,11 +16,7 @@ Feature: Project Browse branches
Given I click link "Protected"
Then I should see "Shop" protected branches list
- # @wip
- # Scenario: I can download project by branch
-
- # @wip
- # Scenario: I can view protected branches
-
- # @wip
- # Scenario: I can manage protected branches
+ Scenario: I create a branch
+ Given I click new branch link
+ When I submit new branch form
+ Then I should see new branch created
diff --git a/features/project/commits/commits_user_lookup.feature b/features/project/commits/commits_user_lookup.feature
new file mode 100644
index 00000000000..f3864c0ab38
--- /dev/null
+++ b/features/project/commits/commits_user_lookup.feature
@@ -0,0 +1,14 @@
+Feature: Project Browse Commits User Lookup
+ Background:
+ Given I sign in as a user
+ And I own a project
+ And I have the user that authored the commits
+ And I visit my project's commits page
+
+ Scenario: I browse commit from list
+ Given I click on commit link
+ Then I see commit info
+
+ Scenario: I browse another commit from list
+ Given I click on another commit link
+ Then I see other commit info \ No newline at end of file
diff --git a/features/project/forked_merge_requests.feature b/features/project/forked_merge_requests.feature
index 966905645a2..2d94b98c90b 100644
--- a/features/project/forked_merge_requests.feature
+++ b/features/project/forked_merge_requests.feature
@@ -32,3 +32,9 @@ Feature: Project Forked Merge Requests
And I fill out an invalid "Merge Request On Forked Project" merge request
And I submit the merge request
Then I should see validation errors
+
+ @javascript
+ Scenario: Merge request should target fork repository by default
+ Given I visit project "Forked Shop" merge requests page
+ And I click link "New Merge Request"
+ Then the target repository should be the original repository \ No newline at end of file
diff --git a/features/project/issues/filter_labels.feature b/features/project/issues/filter_labels.feature
new file mode 100644
index 00000000000..8df7a119e84
--- /dev/null
+++ b/features/project/issues/filter_labels.feature
@@ -0,0 +1,26 @@
+Feature: Project Filter Labels
+ Background:
+ Given I sign in as a user
+ And I own project "Shop"
+ And project "Shop" has issue "Bugfix1" with tags: "bug", "feature"
+ And project "Shop" has issue "Bugfix2" with tags: "bug", "enhancement"
+ And project "Shop" has issue "Feature1" with tags: "feature"
+ Given I visit project "Shop" issues page
+
+ Scenario: I should see project issues
+ Then I should see "bug" in labels filter
+ And I should see "feature" in labels filter
+ And I should see "enhancement" in labels filter
+
+ Scenario: I filter by one label
+ Given I click link "bug"
+ Then I should see "Bugfix1" in issues list
+ And I should see "Bugfix2" in issues list
+ And I should not see "Feature1" in issues list
+
+ Scenario: I filter by two labels
+ Given I click link "bug"
+ And I click link "feature"
+ Then I should see "Bugfix1" in issues list
+ And I should not see "Bugfix2" in issues list
+ And I should not see "Feature1" in issues list
diff --git a/features/project/issues/issues.feature b/features/project/issues/issues.feature
index 67986784bc7..033051991e2 100644
--- a/features/project/issues/issues.feature
+++ b/features/project/issues/issues.feature
@@ -55,3 +55,15 @@ Feature: Project Issues
And I fill in issue search with ".3"
Then I should see "Release 0.3" in issues
And I should not see "Release 0.4" in issues
+
+ # Markdown
+
+ Scenario: Headers inside the description should have ids generated for them.
+ Given I visit issue page "Release 0.4"
+ Then Header "Description header" should have correct id and link
+
+ @javascript
+ Scenario: Headers inside comments should not have ids generated for them.
+ Given I visit issue page "Release 0.4"
+ And I leave a comment with a header containing "Comment with a header"
+ Then The comment with the header should not have an ID
diff --git a/features/project/issues/milestones.feature b/features/project/issues/milestones.feature
index 2f38acf14d0..e67b5d2d860 100644
--- a/features/project/issues/milestones.feature
+++ b/features/project/issues/milestones.feature
@@ -22,3 +22,9 @@ Feature: Project Milestones
Given the milestone has open and closed issues
And I click link "v2.2"
Then I should see 3 issues
+
+ # Markdown
+
+ Scenario: Headers inside the description should have ids generated for them.
+ Given I click link "v2.2"
+ Then Header "Description header" should have correct id and link
diff --git a/features/project/merge_requests.feature b/features/project/merge_requests.feature
index 63f27c3acc3..435c47a276c 100644
--- a/features/project/merge_requests.feature
+++ b/features/project/merge_requests.feature
@@ -29,7 +29,13 @@ Feature: Project Merge Requests
And I click link "Close"
Then I should see closed merge request "Bug NS-04"
- @javascript
+ Scenario: I reopen merge request page
+ Given I click link "Bug NS-04"
+ And I click link "Close"
+ Then I should see closed merge request "Bug NS-04"
+ When I click link "Reopen"
+ Then I should see reopened merge request "Bug NS-04"
+
Scenario: I submit new unassigned merge request
Given I click link "New Merge Request"
And I submit new merge request "Wiki Feature"
@@ -55,15 +61,37 @@ Feature: Project Merge Requests
Given project "Shop" have "Bug NS-05" open merge request with diffs inside
And I visit merge request page "Bug NS-05"
And I click on the first commit in the merge request
- And I leave a comment like "Line is wrong" on line 185 of the first file
+ And I leave a comment like "Line is wrong" on line 185 of the first file in commit
And I switch to the merge request's comments tab
- Then I should see a discussion has started on commit bcf03b5de6c:L185
+ Then I should see a discussion has started on commit b1e6a9dbf1:L185
@javascript
Scenario: I comment on a commit in merge request
Given project "Shop" have "Bug NS-05" open merge request with diffs inside
And I visit merge request page "Bug NS-05"
And I click on the first commit in the merge request
- And I leave a comment on the diff page
+ And I leave a comment on the diff page in commit
And I switch to the merge request's comments tab
- Then I should see a discussion has started on commit bcf03b5de6c
+ Then I should see a discussion has started on commit b1e6a9dbf1
+
+ @javascript
+ Scenario: I accept merge request with custom commit message
+ Given project "Shop" have "Bug NS-05" open merge request with diffs inside
+ And merge request "Bug NS-05" is mergeable
+ And I visit merge request page "Bug NS-05"
+ And merge request is mergeable
+ Then I modify merge commit message
+ And I accept this merge request
+ Then I should see merged request
+
+ # Markdown
+
+ Scenario: Headers inside the description should have ids generated for them.
+ When I visit merge request page "Bug NS-04"
+ Then Header "Description header" should have correct id and link
+
+ @javascript
+ Scenario: Headers inside comments should not have ids generated for them.
+ Given I visit merge request page "Bug NS-04"
+ And I leave a comment with a header containing "Comment with a header"
+ Then The comment with the header should not have an ID
diff --git a/features/project/source/markdown_render.feature b/features/project/source/markdown_render.feature
index 8b4b89e85af..970a9e57864 100644
--- a/features/project/source/markdown_render.feature
+++ b/features/project/source/markdown_render.feature
@@ -4,6 +4,13 @@ Feature: Project markdown render
And I own project "Delta"
Given I visit project source page
+ # Tree README
+
+ Scenario: Tree view should have correct links in README
+ Given I go directory which contains README file
+ And I click on a relative link in README
+ Then I should see the correct markdown
+
Scenario: I browse files from master branch
Then I should see files from repository in master
And I should see rendered README which contains correct links
@@ -16,6 +23,24 @@ Feature: Project markdown render
And I click on Rake tasks in README
Then I should see correct directory rendered
+ Scenario: I view README in master branch to see reference links to directory
+ Then I should see files from repository in master
+ And I should see rendered README which contains correct links
+ And I click on GitLab API doc directory in README
+ Then I should see correct doc/api directory rendered
+
+ Scenario: I view README in master branch to see reference links to file
+ Then I should see files from repository in master
+ And I should see rendered README which contains correct links
+ And I click on Maintenance in README
+ Then I should see correct maintenance file rendered
+
+ Scenario: README headers should have header links
+ Then I should see rendered README which contains correct links
+ And Header "Application details" should have correct id and link
+
+ # Blob
+
Scenario: I navigate to doc directory to view documentation in master
And I navigate to the doc/api/README
And I see correct file rendered
@@ -28,6 +53,12 @@ Feature: Project markdown render
And I click on raketasks in doc/api/README
Then I should see correct directory rendered
+ Scenario: I navigate to doc directory to view user doc in master
+ And I navigate to the doc/api/README
+ And Header "GitLab API" should have correct id and link
+
+ # Markdown branch
+
Scenario: I browse files from markdown branch
When I visit markdown branch
Then I should see files from repository in markdown branch
@@ -56,6 +87,32 @@ Feature: Project markdown render
And I click on raketasks in doc/api/README
Then I should see correct directory rendered for markdown branch
+ Scenario: Tree markdown links view empty urls should have correct urls
+ When I visit markdown branch
+ Then The link with text "empty" should have url "tree/markdown"
+ When I visit markdown branch "README.md" blob
+ Then The link with text "empty" should have url "blob/markdown/README.md"
+ When I visit markdown branch "d" tree
+ Then The link with text "empty" should have url "tree/markdown/d"
+ When I visit markdown branch "d/README.md" blob
+ Then The link with text "empty" should have url "blob/markdown/d/README.md"
+
+ # "ID" means "#id" on the tests below, because we are unable to escape the hash sign.
+ # which Spinach interprets as the start of a comment.
+ Scenario: All markdown links with ids should have correct urls
+ When I visit markdown branch
+ Then The link with text "ID" should have url "tree/markdownID"
+ Then The link with text "/ID" should have url "tree/markdownID"
+ Then The link with text "README.mdID" should have url "blob/markdown/README.mdID"
+ Then The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"
+ When I visit markdown branch "README.md" blob
+ Then The link with text "ID" should have url "blob/markdown/README.mdID"
+ Then The link with text "/ID" should have url "blob/markdown/README.mdID"
+ Then The link with text "README.mdID" should have url "blob/markdown/README.mdID"
+ Then The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"
+
+ # Wiki
+
Scenario: I create a wiki page with different links
Given I go to wiki page
And I add various links to the wiki page
@@ -69,12 +126,7 @@ Feature: Project markdown render
And I click on Rake tasks link
Then I see Rake tasks directory
- Scenario: I visit the help page with markdown
- Given I visit to the help page
- And I select a page with markdown
- Then I should see a help page with markdown
-
- Scenario: Tree view should have correct links in README
- Given I go directory which contains README file
- And I click on a relative link in README
- Then I should see the correct markdown
+ Scenario: Wiki headers should have should have ids generated for them.
+ Given I go to wiki page
+ And I add a header to the wiki page
+ Then Wiki header should have correct id and link
diff --git a/features/public/public_groups.feature b/features/public/public_groups.feature
new file mode 100644
index 00000000000..7f1ec718e35
--- /dev/null
+++ b/features/public/public_groups.feature
@@ -0,0 +1,118 @@
+Feature: Public Projects Feature
+ Background:
+ Given group "TestGroup" has private project "Enterprise"
+
+ Scenario: I should not see group with private projects as visitor
+ When I visit group "TestGroup" page
+ Then I should be redirected to sign in page
+
+ Scenario: I should not see group with private projects group as user
+ When I sign in as a user
+ And I visit group "TestGroup" page
+ Then page status code should be 404
+
+ Scenario: I should not see group with private and internal projects as visitor
+ Given group "TestGroup" has internal project "Internal"
+ When I visit group "TestGroup" page
+ Then I should be redirected to sign in page
+
+ Scenario: I should see group with private and internal projects as user
+ Given group "TestGroup" has internal project "Internal"
+ When I sign in as a user
+ And I visit group "TestGroup" page
+ Then I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group issues for internal project as user
+ Given group "TestGroup" has internal project "Internal"
+ When I sign in as a user
+ And I visit group "TestGroup" issues page
+ And I change filter to Everyone's
+ Then I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group merge requests for internal project as user
+ Given group "TestGroup" has internal project "Internal"
+ When I sign in as a user
+ And I visit group "TestGroup" merge requests page
+ And I change filter to Everyone's
+ Then I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group's members as user
+ Given group "TestGroup" has internal project "Internal"
+ And "John Doe" is owner of group "TestGroup"
+ When I sign in as a user
+ And I visit group "TestGroup" members page
+ Then I should see group member "John Doe"
+ And I should not see member roles
+
+ Scenario: I should see group with private, internal and public projects as visitor
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I visit group "TestGroup" page
+ Then I should see project "Community" items
+ And I should not see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group issues for public project as visitor
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I visit group "TestGroup" issues page
+ Then I should see project "Community" items
+ And I should not see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group merge requests for public project as visitor
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I visit group "TestGroup" merge requests page
+ Then I should see project "Community" items
+ And I should not see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group's members as visitor
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ And "John Doe" is owner of group "TestGroup"
+ When I visit group "TestGroup" members page
+ Then I should see group member "John Doe"
+ And I should not see member roles
+
+ Scenario: I should see group with private, internal and public projects as user
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I sign in as a user
+ And I visit group "TestGroup" page
+ Then I should see project "Community" items
+ And I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group issues for internal and public projects as user
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I sign in as a user
+ And I visit group "TestGroup" issues page
+ And I change filter to Everyone's
+ Then I should see project "Community" items
+ And I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group merge requests for internal and public projects as user
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ When I sign in as a user
+ And I visit group "TestGroup" merge requests page
+ And I change filter to Everyone's
+ Then I should see project "Community" items
+ And I should see project "Internal" items
+ And I should not see project "Enterprise" items
+
+ Scenario: I should see group's members as user
+ Given group "TestGroup" has internal project "Internal"
+ Given group "TestGroup" has public project "Community"
+ And "John Doe" is owner of group "TestGroup"
+ When I sign in as a user
+ And I visit group "TestGroup" members page
+ Then I should see group member "John Doe"
+ And I should not see member roles
diff --git a/features/public/public_projects.feature b/features/public/public_projects.feature
index d6574ca900e..57fe834b4bf 100644
--- a/features/public/public_projects.feature
+++ b/features/public/public_projects.feature
@@ -62,3 +62,40 @@ Feature: Public Projects Feature
Given public empty project "Empty Public Project"
When I visit empty project page
Then I should see empty public project details
+
+ Scenario: I visit public project issues page as a non authorized user
+ Given I visit project "Community" page
+ And I visit "Community" issues page
+ Then I should see list of issues for "Community" project
+
+ Scenario: I visit public project issues page as authorized user
+ Given I sign in as a user
+ Given I visit project "Community" page
+ And I visit "Community" issues page
+ Then I should see list of issues for "Community" project
+
+ Scenario: I visit internal project issues page as authorized user
+ Given I sign in as a user
+ Given I visit project "Internal" page
+ And I visit "Internal" issues page
+ Then I should see list of issues for "Internal" project
+
+ Scenario: I visit public project merge requests page as an authorized user
+ Given I sign in as a user
+ Given I visit project "Community" page
+ And I visit "Community" merge requests page
+ And project "Community" has "Bug fix" open merge request
+ Then I should see list of merge requests for "Community" project
+
+ Scenario: I visit public project merge requests page as a non authorized user
+ Given I visit project "Community" page
+ And I visit "Community" merge requests page
+ And project "Community" has "Bug fix" open merge request
+ Then I should see list of merge requests for "Community" project
+
+ Scenario: I visit internal project merge requests page as an authorized user
+ Given I sign in as a user
+ Given I visit project "Internal" page
+ And I visit "Internal" merge requests page
+ And project "Internal" has "Feature implemented" open merge request
+ Then I should see list of merge requests for "Internal" project
diff --git a/features/steps/admin/admin_groups.rb b/features/steps/admin/admin_groups.rb
index b4591f227e3..9c1bcfefb9c 100644
--- a/features/steps/admin/admin_groups.rb
+++ b/features/steps/admin/admin_groups.rb
@@ -1,6 +1,7 @@
class AdminGroups < Spinach::FeatureSteps
include SharedAuthentication
include SharedPaths
+ include SharedUser
include SharedActiveTab
include Select2Helper
@@ -20,10 +21,6 @@ class AdminGroups < Spinach::FeatureSteps
@project.team << [current_user, :master]
end
- And 'Create gitlab user "John"' do
- create(:user, name: "John")
- end
-
And 'submit form with new group info' do
fill_in 'group_name', with: 'gitlab'
fill_in 'group_description', with: 'Group description'
@@ -39,8 +36,8 @@ class AdminGroups < Spinach::FeatureSteps
current_path.should == admin_group_path(Group.last)
end
- When 'I select user "John" from user list as "Reporter"' do
- user = User.find_by_name("John")
+ When 'I select user "John Doe" from user list as "Reporter"' do
+ user = User.find_by(name: "John Doe")
select2(user.id, from: "#user_ids", multiple: true)
within "#new_team_member" do
select "Reporter", from: "group_access"
@@ -48,9 +45,9 @@ class AdminGroups < Spinach::FeatureSteps
click_button "Add users into group"
end
- Then 'I should see "John" in team list in every project as "Reporter"' do
+ Then 'I should see "John Doe" in team list in every project as "Reporter"' do
within ".group-users-list" do
- page.should have_content "John"
+ page.should have_content "John Doe"
page.should have_content "Reporter"
end
end
diff --git a/features/steps/admin/admin_users.rb b/features/steps/admin/admin_users.rb
index 33c1344eaeb..659008dd875 100644
--- a/features/steps/admin/admin_users.rb
+++ b/features/steps/admin/admin_users.rb
@@ -31,4 +31,17 @@ class AdminUsers < Spinach::FeatureSteps
And 'Not changed form action url' do
page.should have_selector %(form[action="/admin/users/#{@user.username}"])
end
+
+ step 'I submit modified user' do
+ check :user_can_create_group
+ click_button 'Save'
+ end
+
+ step 'I see user attributes changed' do
+ page.should have_content 'Can create groups: Yes'
+ end
+
+ step 'click edit on my user' do
+ find("#edit_user_#{current_user.id}").click
+ end
end
diff --git a/features/steps/dashboard/dashboard.rb b/features/steps/dashboard/dashboard.rb
index bde32128b92..3526006c94a 100644
--- a/features/steps/dashboard/dashboard.rb
+++ b/features/steps/dashboard/dashboard.rb
@@ -43,7 +43,7 @@ class Dashboard < Spinach::FeatureSteps
end
And 'user with name "John Doe" left project "Shop"' do
- user = User.find_by_name "John Doe"
+ user = User.find_by(name: "John Doe")
Event.create(
project: project,
author_id: user.id,
@@ -85,6 +85,6 @@ class Dashboard < Spinach::FeatureSteps
end
def project
- @project ||= Project.find_by_name "Shop"
+ @project ||= Project.find_by(name: "Shop")
end
end
diff --git a/features/steps/dashboard/dashboard_issues.rb b/features/steps/dashboard/dashboard_issues.rb
index a458acdae07..1344edfa80b 100644
--- a/features/steps/dashboard/dashboard_issues.rb
+++ b/features/steps/dashboard/dashboard_issues.rb
@@ -66,7 +66,7 @@ class DashboardIssues < Spinach::FeatureSteps
def project
@project ||= begin
- project =create :project_with_code
+ project =create :project
project.team << [current_user, :master]
project
end
diff --git a/features/steps/dashboard/dashboard_merge_requests.rb b/features/steps/dashboard/dashboard_merge_requests.rb
index 73286532b93..62d84506c49 100644
--- a/features/steps/dashboard/dashboard_merge_requests.rb
+++ b/features/steps/dashboard/dashboard_merge_requests.rb
@@ -66,7 +66,7 @@ class DashboardMergeRequests < Spinach::FeatureSteps
def project
@project ||= begin
- project =create :project_with_code
+ project =create :project
project.team << [current_user, :master]
project
end
diff --git a/features/steps/dashboard/dashboard_with_archived_projects.rb b/features/steps/dashboard/dashboard_with_archived_projects.rb
index 700f4b426c3..1bc69555b56 100644
--- a/features/steps/dashboard/dashboard_with_archived_projects.rb
+++ b/features/steps/dashboard/dashboard_with_archived_projects.rb
@@ -4,7 +4,7 @@ class DashboardWithArchivedProjects < Spinach::FeatureSteps
include SharedProject
When 'project "Forum" is archived' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
project.update_attribute(:archived, true)
end
diff --git a/features/steps/group/group.rb b/features/steps/group/group.rb
index bcadf21c233..81472d1ca35 100644
--- a/features/steps/group/group.rb
+++ b/features/steps/group/group.rb
@@ -1,45 +1,35 @@
class Groups < Spinach::FeatureSteps
include SharedAuthentication
include SharedPaths
+ include SharedGroup
+ include SharedUser
include Select2Helper
- Then 'I should see projects list' do
- current_user.authorized_projects.each do |project|
+ Then 'I should see group "Owned" projects list' do
+ Group.find_by(name: "Owned").projects.each do |project|
page.should have_link project.name
end
end
- And 'I have group with projects' do
- @group = create(:group)
- @group.add_owner(current_user)
- @project = create(:project, namespace: @group)
- @event = create(:closed_issue_event, project: @project)
-
- @project.team << [current_user, :master]
- end
-
And 'I should see projects activity feed' do
page.should have_content 'closed issue'
end
- Then 'I should see issues from this group assigned to me' do
+ Then 'I should see issues from group "Owned" assigned to me' do
assigned_to_me(:issues).each do |issue|
page.should have_content issue.title
end
end
- Then 'I should see merge requests from this group assigned to me' do
+ Then 'I should see merge requests from group "Owned" assigned to me' do
assigned_to_me(:merge_requests).each do |issue|
page.should have_content issue.title[0..80]
end
end
- Given 'I have new user "John"' do
- create(:user, name: "John")
- end
-
- And 'I select user "John" from list with role "Reporter"' do
- user = User.find_by_name("John")
+ And 'I select user "Mary Jane" from list with role "Reporter"' do
+ user = User.find_by(name: "Mary Jane") || create(:user, name: "Mary Jane")
+ click_link 'Add members'
within ".users-group-form" do
select2(user.id, from: "#user_ids", multiple: true)
select "Reporter", from: "group_access"
@@ -47,19 +37,34 @@ class Groups < Spinach::FeatureSteps
click_button "Add users into group"
end
- Then 'I should see user "John" in team list' do
+ Then 'I should see user "John Doe" in team list' do
+ projects_with_access = find(".ui-box .well-list")
+ projects_with_access.should have_content("John Doe")
+ end
+
+ Then 'I should not see user "John Doe" in team list' do
+ projects_with_access = find(".ui-box .well-list")
+ projects_with_access.should_not have_content("John Doe")
+ end
+
+ Then 'I should see user "Mary Jane" in team list' do
projects_with_access = find(".ui-box .well-list")
- projects_with_access.should have_content("John")
+ projects_with_access.should have_content("Mary Jane")
end
- Given 'project from group has issues assigned to me' do
+ Then 'I should not see user "Mary Jane" in team list' do
+ projects_with_access = find(".ui-box .well-list")
+ projects_with_access.should_not have_content("Mary Jane")
+ end
+
+ Given 'project from group "Owned" has issues assigned to me' do
create :issue,
project: project,
assignee: current_user,
author: current_user
end
- Given 'project from group has merge requests assigned to me' do
+ Given 'project from group "Owned" has merge requests assigned to me' do
create :merge_request,
source_project: project,
target_project: project,
@@ -71,44 +76,94 @@ class Groups < Spinach::FeatureSteps
click_link "New group"
end
- And 'submit form with new group info' do
+ And 'submit form with new group "Samurai" info' do
fill_in 'group_name', with: 'Samurai'
fill_in 'group_description', with: 'Tokugawa Shogunate'
click_button "Create group"
end
- Then 'I should see newly created group' do
+ Then 'I should be redirected to group "Samurai" page' do
+ current_path.should == group_path(Group.last)
+ end
+
+ Then 'I should see newly created group "Samurai"' do
page.should have_content "Samurai"
page.should have_content "Tokugawa Shogunate"
page.should have_content "You will only see events from projects in this group"
end
- Then 'I should be redirected to group page' do
- current_path.should == group_path(Group.last)
- end
-
- And 'I change group name' do
+ And 'I change group "Owned" name to "new-name"' do
fill_in 'group_name', with: 'new-name'
click_button "Save group"
end
- Then 'I should see new group name' do
+ Then 'I should see new group "Owned" name' do
within ".navbar-gitlab" do
page.should have_content "group: new-name"
end
end
- protected
+ step 'I change group "Owned" avatar' do
+ attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
+ click_button "Save group"
+ Group.find_by(name: "Owned").reload
+ end
- def current_group
- @group ||= Group.first
+ step 'I should see new group "Owned" avatar' do
+ Group.find_by(name: "Owned").avatar.should be_instance_of AttachmentUploader
+ Group.find_by(name: "Owned").avatar.url.should == "/uploads/group/avatar/#{ Group.find_by(name:"Owned").id }/gitlab_logo.png"
end
- def project
- current_group.projects.first
+ step 'I should see the "Remove avatar" button' do
+ page.should have_link("Remove avatar")
+ end
+
+ step 'I have group "Owned" avatar' do
+ attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
+ click_button "Save group"
+ Group.find_by(name: "Owned").reload
+ end
+
+ step 'I remove group "Owned" avatar' do
+ click_link "Remove avatar"
+ Group.find_by(name: "Owned").reload
+ end
+
+ step 'I should not see group "Owned" avatar' do
+ Group.find_by(name: "Owned").avatar?.should be_false
+ end
+
+ step 'I should not see the "Remove avatar" button' do
+ page.should_not have_link("Remove avatar")
+ end
+
+ step 'I click on the "Remove User From Group" button for "John Doe"' do
+ find(:css, 'li', text: "John Doe").find(:css, 'a.btn-remove').click
+ # poltergeist always confirms popups.
end
+ step 'I click on the "Remove User From Group" button for "Mary Jane"' do
+ find(:css, 'li', text: "Mary Jane").find(:css, 'a.btn-remove').click
+ # poltergeist always confirms popups.
+ end
+
+ step 'I should not see the "Remove User From Group" button for "John Doe"' do
+ find(:css, 'li', text: "John Doe").should_not have_selector(:css, 'a.btn-remove')
+ # poltergeist always confirms popups.
+ end
+
+ step 'I should not see the "Remove User From Group" button for "Mary Jane"' do
+ find(:css, 'li', text: "Mary Jane").should_not have_selector(:css, 'a.btn-remove')
+ # poltergeist always confirms popups.
+ end
+
+ protected
+
def assigned_to_me key
project.send(key).where(assignee_id: current_user.id)
end
+
+ def project
+ Group.find_by(name: "Owned").projects.first
+ end
end
diff --git a/features/steps/help.rb b/features/steps/help.rb
new file mode 100644
index 00000000000..aa147fd65ce
--- /dev/null
+++ b/features/steps/help.rb
@@ -0,0 +1,21 @@
+class Spinach::Features::Help < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedPaths
+ include SharedMarkdown
+
+ step 'I visit the help page' do
+ visit help_path
+ end
+
+ step 'I visit the "Rake Tasks" help page' do
+ visit help_raketasks_path
+ end
+
+ step 'I should see "Rake Tasks" page markdown rendered' do
+ page.should have_content "GitLab provides some specific rake tasks to enable special features or perform maintenance tasks"
+ end
+
+ step 'Header "Rebuild project satellites" should have correct ids and links' do
+ header_should_have_correct_id_and_link(3, 'Rebuild project satellites', 'rebuild-project-satellites')
+ end
+end
diff --git a/features/steps/profile/group.rb b/features/steps/profile/group.rb
new file mode 100644
index 00000000000..03144104c7e
--- /dev/null
+++ b/features/steps/profile/group.rb
@@ -0,0 +1,44 @@
+class ProfileGroup < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedGroup
+ include SharedPaths
+ include SharedUser
+
+ # Leave
+
+ step 'I click on the "Leave" button for group "Owned"' do
+ find(:css, 'li', text: "Owner").find(:css, 'i.icon-signout').click
+ # poltergeist always confirms popups.
+ end
+
+ step 'I click on the "Leave" button for group "Guest"' do
+ find(:css, 'li', text: "Guest").find(:css, 'i.icon-signout').click
+ # poltergeist always confirms popups.
+ end
+
+ step 'I should not see the "Leave" button for group "Owned"' do
+ find(:css, 'li', text: "Owner").should_not have_selector(:css, 'i.icon-signout')
+ # poltergeist always confirms popups.
+ end
+
+ step 'I should not see the "Leave" button for groupr "Guest"' do
+ find(:css, 'li', text: "Guest").should_not have_selector(:css, 'i.icon-signout')
+ # poltergeist always confirms popups.
+ end
+
+ step 'I should see group "Owned" in group list' do
+ page.should have_content("Owned")
+ end
+
+ step 'I should not see group "Owned" in group list' do
+ page.should_not have_content("Owned")
+ end
+
+ step 'I should see group "Guest" in group list' do
+ page.should have_content("Guest")
+ end
+
+ step 'I should not see group "Guest" in group list' do
+ page.should_not have_content("Guest")
+ end
+end
diff --git a/features/steps/profile/profile.rb b/features/steps/profile/profile.rb
index 7bb4aebde28..879bcf41b40 100644
--- a/features/steps/profile/profile.rb
+++ b/features/steps/profile/profile.rb
@@ -6,18 +6,20 @@ class Profile < Spinach::FeatureSteps
page.should have_content "Profile settings"
end
- step 'I change my contact info' do
+ step 'I change my profile info' do
fill_in "user_skype", with: "testskype"
fill_in "user_linkedin", with: "testlinkedin"
fill_in "user_twitter", with: "testtwitter"
+ fill_in "user_website_url", with: "testurl"
click_button "Save changes"
@user.reload
end
- step 'I should see new contact info' do
+ step 'I should see new profile info' do
@user.skype.should == 'testskype'
@user.linkedin.should == 'testlinkedin'
@user.twitter.should == 'testtwitter'
+ @user.website_url.should == 'testurl'
end
step 'I change my avatar' do
@@ -171,4 +173,17 @@ class Profile < Spinach::FeatureSteps
page.should have_content current_user.name
end
end
+
+ step 'I have group with projects' do
+ @group = create(:group)
+ @group.add_owner(current_user)
+ @project = create(:project, namespace: @group)
+ @event = create(:closed_issue_event, project: @project)
+
+ @project.team << [current_user, :master]
+ end
+
+ step 'I should see groups I belong to' do
+ page.should have_css('.profile-groups-avatars', visible: true)
+ end
end
diff --git a/features/steps/profile/profile_emails.rb b/features/steps/profile/profile_emails.rb
new file mode 100644
index 00000000000..99588c85991
--- /dev/null
+++ b/features/steps/profile/profile_emails.rb
@@ -0,0 +1,48 @@
+class ProfileEmails < Spinach::FeatureSteps
+ include SharedAuthentication
+
+ Then 'I visit profile emails page' do
+ visit profile_emails_path
+ end
+
+ Then 'I should see my emails' do
+ page.should have_content(@user.email)
+ @user.emails.each do |email|
+ page.should have_content(email.email)
+ end
+ end
+
+ And 'I submit new email "my@email.com"' do
+ fill_in "email_email", with: "my@email.com"
+ click_button "Add"
+ end
+
+ Then 'I should see new email "my@email.com"' do
+ email = @user.emails.find_by(email: "my@email.com")
+ email.should_not be_nil
+ page.should have_content("my@email.com")
+ end
+
+ Then 'I should not see email "my@email.com"' do
+ email = @user.emails.find_by(email: "my@email.com")
+ email.should be_nil
+ page.should_not have_content("my@email.com")
+ end
+
+ Then 'I click link "Remove" for "my@email.com"' do
+ # there should only be one remove button at this time
+ click_link "Remove"
+ # force these to reload as they have been cached
+ @user.emails.reload
+ end
+
+ And 'I submit duplicate email @user.email' do
+ fill_in "email_email", with: @user.email
+ click_button "Add"
+ end
+
+ Then 'I should not have @user.email added' do
+ email = @user.emails.find_by(email: @user.email)
+ email.should be_nil
+ end
+end
diff --git a/features/steps/profile/profile_notifications.rb b/features/steps/profile/profile_notifications.rb
index 7a41687dfde..e884df3098e 100644
--- a/features/steps/profile/profile_notifications.rb
+++ b/features/steps/profile/profile_notifications.rb
@@ -8,6 +8,5 @@ class ProfileNotifications < Spinach::FeatureSteps
step 'I should see global notifications settings' do
page.should have_content "Notifications settings"
- page.should have_content "Global setting"
end
end
diff --git a/features/steps/profile/profile_ssh_keys.rb b/features/steps/profile/profile_ssh_keys.rb
index 65bfc505d85..65ca824bb5b 100644
--- a/features/steps/profile/profile_ssh_keys.rb
+++ b/features/steps/profile/profile_ssh_keys.rb
@@ -18,7 +18,7 @@ class ProfileSshKeys < Spinach::FeatureSteps
end
Then 'I should see new ssh key "Laptop"' do
- key = Key.find_by_title("Laptop")
+ key = Key.find_by(title: "Laptop")
page.should have_content(key.title)
page.should have_content(key.key)
current_path.should == profile_key_path(key)
diff --git a/features/steps/project/deploy_keys.rb b/features/steps/project/deploy_keys.rb
index 7f7492bfd6d..914da31322f 100644
--- a/features/steps/project/deploy_keys.rb
+++ b/features/steps/project/deploy_keys.rb
@@ -34,7 +34,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps
end
step 'other project has deploy key' do
- @second_project = create :project, namespace: current_user.namespace
+ @second_project = create :project, namespace: create(:group)
@second_project.team << [current_user, :master]
create(:deploy_keys_project, project: @second_project)
end
diff --git a/features/steps/project/project_active_tab.rb b/features/steps/project/project_active_tab.rb
index e04a17168be..dcc252f4765 100644
--- a/features/steps/project/project_active_tab.rb
+++ b/features/steps/project/project_active_tab.rb
@@ -57,7 +57,9 @@ class ProjectActiveTab < Spinach::FeatureSteps
end
Given 'I click the "Edit" tab' do
- click_link('Edit')
+ within '.project-settings-nav' do
+ click_link('Project')
+ end
end
Given 'I click the "Hooks" tab' do
@@ -73,7 +75,7 @@ class ProjectActiveTab < Spinach::FeatureSteps
end
Then 'the active sub nav should be Edit' do
- ensure_active_sub_nav('Edit Project')
+ ensure_active_sub_nav('Project')
end
Then 'the active sub nav should be Hooks' do
diff --git a/features/steps/project/project_archived.rb b/features/steps/project/project_archived.rb
index 149d293cd08..dfbe762c438 100644
--- a/features/steps/project/project_archived.rb
+++ b/features/steps/project/project_archived.rb
@@ -4,17 +4,17 @@ class ProjectArchived < Spinach::FeatureSteps
include SharedPaths
When 'project "Forum" is archived' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
project.update_attribute(:archived, true)
end
When 'project "Shop" is archived' do
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
project.update_attribute(:archived, true)
end
When 'I visit project "Forum" page' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
visit project_path(project)
end
diff --git a/features/steps/project/project_browse_branches.rb b/features/steps/project/project_browse_branches.rb
index e77825411f3..30c8cef80c8 100644
--- a/features/steps/project/project_browse_branches.rb
+++ b/features/steps/project/project_browse_branches.rb
@@ -3,33 +3,49 @@ class ProjectBrowseBranches < Spinach::FeatureSteps
include SharedProject
include SharedPaths
- Then 'I should see "Shop" recent branches list' do
+ step 'I should see "Shop" recent branches list' do
page.should have_content "Branches"
page.should have_content "master"
end
- Given 'I click link "All"' do
+ step 'I click link "All"' do
click_link "All"
end
- Then 'I should see "Shop" all branches list' do
+ step 'I should see "Shop" all branches list' do
page.should have_content "Branches"
page.should have_content "master"
end
- Given 'I click link "Protected"' do
+ step 'I click link "Protected"' do
click_link "Protected"
end
- Then 'I should see "Shop" protected branches list' do
+ step 'I should see "Shop" protected branches list' do
within ".protected-branches-list" do
page.should have_content "stable"
page.should_not have_content "master"
end
end
- And 'project "Shop" has protected branches' do
- project = Project.find_by_name("Shop")
+ step 'project "Shop" has protected branches' do
+ project = Project.find_by(name: "Shop")
project.protected_branches.create(name: "stable")
end
+
+ step 'I click new branch link' do
+ click_link "New branch"
+ end
+
+ step 'I submit new branch form' do
+ fill_in 'branch_name', with: 'deploy_keys'
+ fill_in 'ref', with: 'master'
+ click_button 'Create branch'
+ end
+
+ step 'I should see new branch created' do
+ within '.all-branches' do
+ page.should have_content 'deploy_keys'
+ end
+ end
end
diff --git a/features/steps/project/project_browse_commits_user_lookup.rb b/features/steps/project/project_browse_commits_user_lookup.rb
new file mode 100644
index 00000000000..328be373553
--- /dev/null
+++ b/features/steps/project/project_browse_commits_user_lookup.rb
@@ -0,0 +1,35 @@
+class ProjectBrowseCommitsUserLookup < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedProject
+ include SharedPaths
+
+ Given 'I have the user that authored the commits' do
+ @user = create(:user, email: 'dmitriy.zaporozhets@gmail.com')
+ create(:email, { user: @user, email: 'dzaporozhets@sphereconsultinginc.com' })
+ end
+
+ Given 'I click on commit link' do
+ visit project_commit_path(@project, ValidCommit::ID)
+ end
+
+ Given 'I click on another commit link' do
+ visit project_commit_path(@project, ValidCommitWithAltEmail::ID)
+ end
+
+ Then 'I see commit info' do
+ page.should have_content ValidCommit::MESSAGE
+ check_author_link(ValidCommit::AUTHOR_EMAIL)
+ end
+
+ Then 'I see other commit info' do
+ page.should have_content ValidCommitWithAltEmail::MESSAGE
+ check_author_link(ValidCommitWithAltEmail::AUTHOR_EMAIL)
+ end
+
+ def check_author_link(email)
+ author_link = find('.commit-author-link')
+ author_link['href'].should == user_path(@user)
+ author_link['data-original-title'].should == email
+ find('.commit-author-name').text.should == @user.name
+ end
+end
diff --git a/features/steps/project/project_filter_labels.rb b/features/steps/project/project_filter_labels.rb
new file mode 100644
index 00000000000..5926d69d6c7
--- /dev/null
+++ b/features/steps/project/project_filter_labels.rb
@@ -0,0 +1,70 @@
+class ProjectFilterLabels < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedProject
+ include SharedPaths
+
+ Then 'I should see "bug" in labels filter' do
+ within ".labels-filter" do
+ page.should have_content "bug"
+ end
+ end
+
+ And 'I should see "feature" in labels filter' do
+ within ".labels-filter" do
+ page.should have_content "feature"
+ end
+ end
+
+ And 'I should see "enhancement" in labels filter' do
+ within ".labels-filter" do
+ page.should have_content "enhancement"
+ end
+ end
+
+ Then 'I should see "Bugfix1" in issues list' do
+ within ".issues-list" do
+ page.should have_content "Bugfix1"
+ end
+ end
+
+ And 'I should see "Bugfix2" in issues list' do
+ within ".issues-list" do
+ page.should have_content "Bugfix2"
+ end
+ end
+
+ And 'I should not see "Bugfix2" in issues list' do
+ within ".issues-list" do
+ page.should_not have_content "Bugfix2"
+ end
+ end
+
+ And 'I should not see "Feature1" in issues list' do
+ within ".issues-list" do
+ page.should_not have_content "Feature1"
+ end
+ end
+
+ Given 'I click link "bug"' do
+ click_link "bug"
+ end
+
+ Given 'I click link "feature"' do
+ click_link "feature"
+ end
+
+ And 'project "Shop" has issue "Bugfix1" with tags: "bug", "feature"' do
+ project = Project.find_by(name: "Shop")
+ create(:issue, title: "Bugfix1", project: project, label_list: ['bug', 'feature'])
+ end
+
+ And 'project "Shop" has issue "Bugfix2" with tags: "bug", "enhancement"' do
+ project = Project.find_by(name: "Shop")
+ create(:issue, title: "Bugfix2", project: project, label_list: ['bug', 'enhancement'])
+ end
+
+ And 'project "Shop" has issue "Feature1" with tags: "feature"' do
+ project = Project.find_by(name: "Shop")
+ create(:issue, title: "Feature1", project: project, label_list: 'feature')
+ end
+end
diff --git a/features/steps/project/project_fork.rb b/features/steps/project/project_fork.rb
index 858c7d11b32..c00d9014b1d 100644
--- a/features/steps/project/project_fork.rb
+++ b/features/steps/project/project_fork.rb
@@ -11,22 +11,22 @@ class ForkProject < Spinach::FeatureSteps
end
step 'I am a member of project "Shop"' do
- @project = Project.find_by_name "Shop"
- @project ||= create(:project_with_code, name: "Shop", group: create(:group))
+ @project = Project.find_by(name: "Shop")
+ @project ||= create(:project, name: "Shop", group: create(:group))
@project.team << [@user, :reporter]
end
step 'I should see the forked project page' do
page.should have_content "Project was successfully forked."
current_path.should include current_user.namespace.path
- @forked_project = Project.find_by_namespace_id(current_user.namespace.path)
+ @forked_project = Project.find_by(namespace_id: current_user.namespace.path)
end
step 'I already have a project named "Shop" in my namespace' do
current_user.namespace ||= create(:namespace)
current_user.namespace.should_not be_nil
current_user.namespace.path.should_not be_nil
- @my_project = create(:project_with_code, name: "Shop", namespace: current_user.namespace)
+ @my_project = create(:project, name: "Shop", namespace: current_user.namespace)
end
step 'I should see a "Name has already been taken" warning' do
diff --git a/features/steps/project/project_forked_merge_requests.rb b/features/steps/project/project_forked_merge_requests.rb
index d34aeac30bb..df69cb75437 100644
--- a/features/steps/project/project_forked_merge_requests.rb
+++ b/features/steps/project/project_forked_merge_requests.rb
@@ -6,16 +6,16 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
include Select2Helper
step 'I am a member of project "Shop"' do
- @project = Project.find_by_name "Shop"
- @project ||= create(:project_with_code, name: "Shop")
+ @project = Project.find_by(name: "Shop")
+ @project ||= create(:project, name: "Shop")
@project.team << [@user, :reporter]
end
step 'I have a project forked off of "Shop" called "Forked Shop"' do
@forking_user = @user
forked_project_link = build(:forked_project_link)
- @forked_project = Project.find_by_name "Forked Shop"
- @forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
+ @forked_project = Project.find_by(name: "Forked Shop")
+ @forked_project ||= create(:project, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
forked_project_link.forked_from_project = @project
forked_project_link.forked_to_project = @forked_project
@@ -114,7 +114,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
end
step 'project "Forked Shop" has push event' do
- @forked_project = Project.find_by_name("Forked Shop")
+ @forked_project = Project.find_by(name: "Forked Shop")
data = {
before: "0000000000000000000000000000000000000000",
@@ -159,8 +159,11 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
step 'I fill out an invalid "Merge Request On Forked Project" merge request' do
#If this isn't filled in the rest of the validations won't be triggered
fill_in "merge_request_title", with: "Merge Request On Forked Project"
+
+ select "Select branch", from: "merge_request_target_branch"
+
find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
- find(:select, "merge_request_target_project_id", {}).value.should == @forked_project.id.to_s
+ find(:select, "merge_request_target_project_id", {}).value.should == project.id.to_s
find(:select, "merge_request_source_branch", {}).value.should == ""
find(:select, "merge_request_target_branch", {}).value.should == ""
end
@@ -168,11 +171,14 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
step 'I should see validation errors' do
page.should have_content "Source branch can't be blank"
page.should have_content "Target branch can't be blank"
- page.should have_content "Branch conflict You can not use same project/branch for source and target"
+ end
+
+ step 'the target repository should be the original repository' do
+ page.should have_select("merge_request_target_project_id", selected: project.path_with_namespace)
end
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
# Verify a link is generated against the correct project
diff --git a/features/steps/project/project_graph.rb b/features/steps/project/project_graph.rb
index 50942b3cbb3..89fe5fdeadf 100644
--- a/features/steps/project/project_graph.rb
+++ b/features/steps/project/project_graph.rb
@@ -7,7 +7,7 @@ class ProjectGraph < Spinach::FeatureSteps
end
When 'I visit project "Shop" graph page' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
visit project_graph_path(project, "master")
end
end
diff --git a/features/steps/project/project_hooks.rb b/features/steps/project/project_hooks.rb
index 36555fb8e8c..19ff3244543 100644
--- a/features/steps/project/project_hooks.rb
+++ b/features/steps/project/project_hooks.rb
@@ -1,9 +1,12 @@
+require 'webmock'
+
class ProjectHooks < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
include RSpec::Matchers
include RSpec::Mocks::ExampleMethods
+ include WebMock::API
Given 'project has hook' do
@hook = create(:project_hook, project: current_project)
@@ -25,8 +28,7 @@ class ProjectHooks < Spinach::FeatureSteps
end
When 'I click test hook button' do
- test_hook_context = double(execute: true)
- TestHookContext.should_receive(:new).and_return(test_hook_context)
+ stub_request(:post, @hook.url).to_return(status: 200)
click_link 'Test Hook'
end
diff --git a/features/steps/project/project_issue_tracker.rb b/features/steps/project/project_issue_tracker.rb
index a05d7a0bc37..c2fd4e15c9e 100644
--- a/features/steps/project/project_issue_tracker.rb
+++ b/features/steps/project/project_issue_tracker.rb
@@ -4,8 +4,8 @@ class ProjectIssueTracker < Spinach::FeatureSteps
include SharedPaths
step 'project "Shop" has issues enabled' do
- @project = Project.find_by_name "Shop"
- @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
+ @project = Project.find_by(name: "Shop")
+ @project ||= create(:project, name: "Shop", namespace: @user.namespace)
@project.issues_enabled = true
end
diff --git a/features/steps/project/project_issues.rb b/features/steps/project/project_issues.rb
index 801fff78a52..a92fd50584d 100644
--- a/features/steps/project/project_issues.rb
+++ b/features/steps/project/project_issues.rb
@@ -3,6 +3,7 @@ class ProjectIssues < Spinach::FeatureSteps
include SharedProject
include SharedNote
include SharedPaths
+ include SharedMarkdown
Given 'I should see "Release 0.4" in issues' do
page.should have_content "Release 0.4"
@@ -54,7 +55,7 @@ class ProjectIssues < Spinach::FeatureSteps
end
Then 'I should see issue "500 error on profile"' do
- issue = Issue.find_by_title("500 error on profile")
+ issue = Issue.find_by(title: "500 error on profile")
page.should have_content issue.title
page.should have_content issue.author_name
page.should have_content issue.project.name
@@ -81,14 +82,14 @@ class ProjectIssues < Spinach::FeatureSteps
end
Given 'project "Shop" has milestone "v2.2"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
milestone = create(:milestone, title: "v2.2", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
And 'project "Shop" has milestone "v3.0"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
milestone = create(:milestone, title: "v3.0", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
@@ -104,28 +105,30 @@ class ProjectIssues < Spinach::FeatureSteps
end
When 'I select first assignee from "Shop" project' do
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
first_assignee = project.users.first
select first_assignee.name, from: "assignee_id"
end
Then 'I should see first assignee from "Shop" as selected assignee' do
issues_assignee_selector = "#issue_assignee_id_chzn > a"
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
assignee_name = project.users.first.name
page.find(issues_assignee_selector).should have_content(assignee_name)
end
And 'project "Shop" have "Release 0.4" open issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:issue,
title: "Release 0.4",
project: project,
- author: project.users.first)
+ author: project.users.first,
+ description: "# Description header"
+ )
end
And 'project "Shop" have "Tweet control" open issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:issue,
title: "Tweet control",
project: project,
@@ -133,7 +136,7 @@ class ProjectIssues < Spinach::FeatureSteps
end
And 'project "Shop" have "Release 0.3" closed issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:closed_issue,
title: "Release 0.3",
project: project,
diff --git a/features/steps/project/project_labels.rb b/features/steps/project/project_labels.rb
index 915190f3dae..0907cdb526f 100644
--- a/features/steps/project/project_labels.rb
+++ b/features/steps/project/project_labels.rb
@@ -16,7 +16,7 @@ class ProjectLabels < Spinach::FeatureSteps
end
And 'project "Shop" have issues tags: "bug", "feature"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
['bug', 'feature'].each do |label|
create(:issue, project: project, label_list: label)
end
diff --git a/features/steps/project/project_markdown_render.rb b/features/steps/project/project_markdown_render.rb
index da044e46ebd..8fbf2753aa7 100644
--- a/features/steps/project/project_markdown_render.rb
+++ b/features/steps/project/project_markdown_render.rb
@@ -1,10 +1,14 @@
+# If you need to modify the existing seed repository for your tests,
+# it is recommended that you make the changes on the `markdown` branch of the seed project repository,
+# which should only be used by tests in this file. See `/spec/factories.rb#project` for more info.
class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
include SharedAuthentication
include SharedPaths
+ include SharedMarkdown
And 'I own project "Delta"' do
- @project = Project.find_by_name "Delta"
- @project ||= create(:project_with_code, name: "Delta", namespace: @user.namespace)
+ @project = Project.find_by(name: "Delta")
+ @project ||= create(:project, name: "Delta", namespace: @user.namespace)
@project.team << [@user, :master]
end
@@ -21,6 +25,8 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
page.should have_link "GitLab API website"
page.should have_link "Rake tasks"
page.should have_link "backup and restore procedure"
+ page.should have_link "GitLab API doc directory"
+ page.should have_link "Maintenance"
end
And 'I click on Gitlab API in README' do
@@ -42,6 +48,37 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
page.should have_content "maintenance.md"
end
+ And 'I click on GitLab API doc directory in README' do
+ click_link "GitLab API doc directory"
+ end
+
+ Then 'I should see correct doc/api directory rendered' do
+ current_path.should == project_tree_path(@project, "master/doc/api")
+ page.should have_content "README.md"
+ page.should have_content "users.md"
+ end
+
+ And 'I click on Maintenance in README' do
+ click_link "Maintenance"
+ end
+
+ Then 'I should see correct maintenance file rendered' do
+ current_path.should == project_blob_path(@project, "master/doc/raketasks/maintenance.md")
+ page.should have_content "bundle exec rake gitlab:env:info RAILS_ENV=production"
+ end
+
+ And 'I click on link "empty" in the README' do
+ within('.readme-holder') do
+ click_link "empty"
+ end
+ end
+
+ And 'I click on link "id" in the README' do
+ within('.readme-holder') do
+ click_link "#id"
+ end
+ end
+
And 'I navigate to the doc/api/README' do
click_link "doc"
click_link "api"
@@ -68,10 +105,24 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
click_link "Rake tasks"
end
+ # Markdown branch
+
When 'I visit markdown branch' do
visit project_tree_path(@project, "markdown")
end
+ When 'I visit markdown branch "README.md" blob' do
+ visit project_blob_path(@project, "markdown/README.md")
+ end
+
+ When 'I visit markdown branch "d" tree' do
+ visit project_tree_path(@project, "markdown/d")
+ end
+
+ When 'I visit markdown branch "d/README.md" blob' do
+ visit project_blob_path(@project, "markdown/d/README.md")
+ end
+
Then 'I should see files from repository in markdown branch' do
current_path.should == project_tree_path(@project, "markdown")
page.should have_content "Gemfile"
@@ -102,6 +153,50 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
page.should have_content "Get a list of users."
end
+ # Expected link contents
+
+ Then 'The link with text "empty" should have url "tree/markdown"' do
+ find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown")
+ end
+
+ Then 'The link with text "empty" should have url "blob/markdown/README.md"' do
+ find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md")
+ end
+
+ Then 'The link with text "empty" should have url "tree/markdown/d"' do
+ find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown/d")
+ end
+
+ Then 'The link with text "empty" should have url "blob/markdown/d/README.md"' do
+ find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/d/README.md")
+ end
+
+ Then 'The link with text "ID" should have url "tree/markdownID"' do
+ find('a', text: /^#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
+ end
+
+ Then 'The link with text "/ID" should have url "tree/markdownID"' do
+ find('a', text: /^\/#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
+ end
+
+ Then 'The link with text "README.mdID" should have url "blob/markdown/README.mdID"' do
+ find('a', text: /^README.md#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
+ end
+
+ Then 'The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"' do
+ find('a', text: /^d\/README.md#id$/)['href'] == current_host + project_blob_path(@project, "d/markdown/README.md") + '#id'
+ end
+
+ Then 'The link with text "ID" should have url "blob/markdown/README.mdID"' do
+ find('a', text: /^#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
+ end
+
+ Then 'The link with text "/ID" should have url "blob/markdown/README.mdID"' do
+ find('a', text: /^\/#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
+ end
+
+ # Wiki
+
Given 'I go to wiki page' do
click_link "Wiki"
current_path.should == project_wiki_path(@project, "home")
@@ -118,6 +213,16 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
page.should have_content "test GitLab API doc Rake tasks"
end
+ step 'I add a header to the wiki page' do
+ fill_in "wiki[content]", with: "# Wiki header\n"
+ fill_in "wiki[message]", with: "Add header to wiki"
+ click_button "Create page"
+ end
+
+ step 'Wiki header should have correct id and link' do
+ header_should_have_correct_id_and_link(1, 'Wiki header', 'wiki-header')
+ end
+
And 'I click on test link' do
click_link "test"
end
@@ -151,18 +256,6 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
page.should have_content "maintenance.md"
end
- Given 'I visit to the help page' do
- visit help_path
- end
-
- And 'I select a page with markdown' do
- click_link "Rake Tasks"
- end
-
- Then 'I should see a help page with markdown' do
- page.should have_content "GitLab provides some specific rake tasks to enable special features or perform maintenance tasks"
- end
-
Given 'I go directory which contains README file' do
visit project_tree_path(@project, "master/doc/api")
current_path.should == project_tree_path(@project, "master/doc/api")
@@ -176,4 +269,12 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
current_path.should == project_blob_path(@project, "master/doc/api/users.md")
page.should have_content "List users"
end
+
+ step 'Header "Application details" should have correct id and link' do
+ header_should_have_correct_id_and_link(2, 'Application details', 'application-details')
+ end
+
+ step 'Header "GitLab API" should have correct id and link' do
+ header_should_have_correct_id_and_link(1, 'GitLab API', 'gitlab-api')
+ end
end
diff --git a/features/steps/project/project_merge_requests.rb b/features/steps/project/project_merge_requests.rb
index 7b0f8cc7ad2..813e7439b2c 100644
--- a/features/steps/project/project_merge_requests.rb
+++ b/features/steps/project/project_merge_requests.rb
@@ -3,88 +3,83 @@ class ProjectMergeRequests < Spinach::FeatureSteps
include SharedProject
include SharedNote
include SharedPaths
+ include SharedMarkdown
- Given 'I click link "New Merge Request"' do
+ step 'I click link "New Merge Request"' do
click_link "New Merge Request"
end
- Given 'I click link "Bug NS-04"' do
+ step 'I click link "Bug NS-04"' do
click_link "Bug NS-04"
end
- Given 'I click link "All"' do
+ step 'I click link "All"' do
click_link "All"
end
- Given 'I click link "Closed"' do
+ step 'I click link "Closed"' do
click_link "Closed"
end
- Then 'I should see merge request "Wiki Feature"' do
+ step 'I should see merge request "Wiki Feature"' do
within '.merge-request' do
page.should have_content "Wiki Feature"
end
end
- Then 'I should see closed merge request "Bug NS-04"' do
- merge_request = MergeRequest.find_by_title!("Bug NS-04")
+ step 'I should see closed merge request "Bug NS-04"' do
+ merge_request = MergeRequest.find_by!(title: "Bug NS-04")
merge_request.closed?.should be_true
page.should have_content "Closed by"
end
- Then 'I should see merge request "Bug NS-04"' do
+ step 'I should see merge request "Bug NS-04"' do
page.should have_content "Bug NS-04"
end
- Then 'I should see "Bug NS-04" in merge requests' do
+ step 'I should see "Bug NS-04" in merge requests' do
page.should have_content "Bug NS-04"
end
- Then 'I should see "Feature NS-03" in merge requests' do
+ step 'I should see "Feature NS-03" in merge requests' do
page.should have_content "Feature NS-03"
end
- And 'I should not see "Feature NS-03" in merge requests' do
+ step 'I should not see "Feature NS-03" in merge requests' do
page.should_not have_content "Feature NS-03"
end
- And 'I should not see "Bug NS-04" in merge requests' do
+ step 'I should not see "Bug NS-04" in merge requests' do
page.should_not have_content "Bug NS-04"
end
- And 'I click link "Close"' do
- click_link "Close"
+ step 'I click link "Close"' do
+ within '.page-title' do
+ click_link "Close"
+ end
end
- And 'I submit new merge request "Wiki Feature"' do
+ step 'I submit new merge request "Wiki Feature"' do
fill_in "merge_request_title", with: "Wiki Feature"
-
- # this must come first, so that the target branch is set
- # by the time the "select" for "notes_refactoring" is executed
- select project.path_with_namespace, from: "merge_request_target_project_id"
select "master", from: "merge_request_source_branch"
-
- find(:select, "merge_request_target_project_id", {}).value.should == project.id.to_s
- find(:select, "merge_request_source_project_id", {}).value.should == project.id.to_s
-
- # using "notes_refactoring" because "Bug NS-04" uses master/stable,
- # this will fail merge_request validation if the branches are the same
- find(:select, "merge_request_target_branch", {}).find(:option, "notes_refactoring", {}).value.should == "notes_refactoring"
select "notes_refactoring", from: "merge_request_target_branch"
-
click_button "Submit merge request"
end
- And 'project "Shop" have "Bug NS-04" open merge request' do
+ step 'project "Shop" have "Bug NS-04" open merge request' do
create(:merge_request,
title: "Bug NS-04",
source_project: project,
target_project: project,
- author: project.users.first)
+ source_branch: 'stable',
+ target_branch: 'master',
+ author: project.users.first,
+ description: "# Description header"
+ )
end
- And 'project "Shop" have "Bug NS-05" open merge request with diffs inside' do
+ step 'project "Shop" have "Bug NS-05" open merge request with diffs inside' do
create(:merge_request_with_diffs,
title: "Bug NS-05",
source_project: project,
@@ -92,7 +87,7 @@ class ProjectMergeRequests < Spinach::FeatureSteps
author: project.users.first)
end
- And 'project "Shop" have "Feature NS-03" closed merge request' do
+ step 'project "Shop" have "Feature NS-03" closed merge request' do
create(:closed_merge_request,
title: "Feature NS-03",
source_project: project,
@@ -100,71 +95,113 @@ class ProjectMergeRequests < Spinach::FeatureSteps
author: project.users.first)
end
- And 'I switch to the diff tab' do
+ step 'I switch to the diff tab' do
visit diffs_project_merge_request_path(project, merge_request)
end
- And 'I switch to the merge request\'s comments tab' do
+ step 'I switch to the merge request\'s comments tab' do
visit project_merge_request_path(project, merge_request)
end
- And 'I click on the first commit in the merge request' do
- click_link merge_request.commits.first.short_id(8)
+ step 'I click on the first commit in the merge request' do
+ within '.first-commits' do
+ click_link merge_request.commits.first.short_id(8)
+ end
end
- And 'I leave a comment on the diff page' do
+ step 'I leave a comment on the diff page' do
init_diff_note
+ leave_comment "One comment to rule them all"
+ end
- within('.js-discussion-note-form') do
- fill_in "note_note", with: "One comment to rule them all"
- click_button "Add Comment"
- end
-
- within ".note-text" do
- page.should have_content "One comment to rule them all"
- end
+ step 'I leave a comment on the diff page in commit' do
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ leave_comment "One comment to rule them all"
end
- And 'I leave a comment like "Line is wrong" on line 185 of the first file' do
+ step 'I leave a comment like "Line is wrong" on line 185 of the first file' do
init_diff_note
+ leave_comment "Line is wrong"
+ end
- within(".js-discussion-note-form") do
- fill_in "note_note", with: "Line is wrong"
- click_button "Add Comment"
- end
-
- within ".note-text" do
- page.should have_content "Line is wrong"
- end
+ step 'I leave a comment like "Line is wrong" on line 185 of the first file in commit' do
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ leave_comment "Line is wrong"
end
- Then 'I should see a discussion has started on line 185' do
+ step 'I should see a discussion has started on line 185' do
page.should have_content "#{current_user.name} started a discussion on this merge request diff"
page.should have_content "app/assets/stylesheets/tree.scss:L185"
page.should have_content "Line is wrong"
end
- Then 'I should see a discussion has started on commit bcf03b5de6c:L185' do
+ step 'I should see a discussion has started on commit b1e6a9dbf1:L185' do
page.should have_content "#{current_user.name} started a discussion on commit"
page.should have_content "app/assets/stylesheets/tree.scss:L185"
page.should have_content "Line is wrong"
end
- Then 'I should see a discussion has started on commit bcf03b5de6c' do
- page.should have_content "#{current_user.name} started a discussion on commit bcf03b5de6c"
+ step 'I should see a discussion has started on commit b1e6a9dbf1' do
+ page.should have_content "#{current_user.name} started a discussion on commit"
page.should have_content "One comment to rule them all"
page.should have_content "app/assets/stylesheets/tree.scss:L185"
end
+ step 'merge request is mergeable' do
+ page.should have_content 'You can accept this request automatically'
+ end
+
+ step 'I modify merge commit message' do
+ find('.modify-merge-commit-link').click
+ fill_in 'merge_commit_message', with: "wow such merge"
+ end
+
+ step 'merge request "Bug NS-05" is mergeable' do
+ merge_request.mark_as_mergeable
+ end
+
+ step 'I accept this merge request' do
+ click_button "Accept Merge Request"
+ end
+
+ step 'I should see merged request' do
+ within '.issue-box' do
+ page.should have_content "Merged"
+ end
+ end
+
+ step 'I click link "Reopen"' do
+ within '.page-title' do
+ click_link "Reopen"
+ end
+ end
+
+ step 'I should see reopened merge request "Bug NS-04"' do
+ within '.state-label' do
+ page.should have_content "Open"
+ end
+ end
+
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
def merge_request
- @merge_request ||= MergeRequest.find_by_title!("Bug NS-05")
+ @merge_request ||= MergeRequest.find_by!(title: "Bug NS-05")
end
def init_diff_note
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
+ end
+
+ def leave_comment(message)
+ within(".js-discussion-note-form") do
+ fill_in "note_note", with: message
+ click_button "Add Comment"
+ end
+
+ within ".note-text" do
+ page.should have_content message
+ end
end
end
diff --git a/features/steps/project/project_milestones.rb b/features/steps/project/project_milestones.rb
index c4d0d176f3a..9ce18fbaabd 100644
--- a/features/steps/project/project_milestones.rb
+++ b/features/steps/project/project_milestones.rb
@@ -2,9 +2,10 @@ class ProjectMilestones < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
+ include SharedMarkdown
Then 'I should see milestone "v2.2"' do
- milestone = @project.milestones.find_by_title("v2.2")
+ milestone = @project.milestones.find_by(title: "v2.2")
page.should have_content(milestone.title[0..10])
page.should have_content(milestone.expires_at)
page.should have_content("Browse Issues")
@@ -24,22 +25,25 @@ class ProjectMilestones < Spinach::FeatureSteps
end
Then 'I should see milestone "v2.3"' do
- milestone = @project.milestones.find_by_title("v2.3")
+ milestone = @project.milestones.find_by(title: "v2.3")
page.should have_content(milestone.title[0..10])
page.should have_content(milestone.expires_at)
page.should have_content("Browse Issues")
end
And 'project "Shop" has milestone "v2.2"' do
- project = Project.find_by_name("Shop")
- milestone = create(:milestone, title: "v2.2", project: project)
-
+ project = Project.find_by(name: "Shop")
+ milestone = create(:milestone,
+ title: "v2.2",
+ project: project,
+ description: "# Description header"
+ )
3.times { create(:issue, project: project, milestone: milestone) }
end
Given 'the milestone has open and closed issues' do
- project = Project.find_by_name("Shop")
- milestone = project.milestones.find_by_title('v2.2')
+ project = Project.find_by(name: "Shop")
+ milestone = project.milestones.find_by(title: 'v2.2')
# 3 Open issues created above; create one closed issue
create(:closed_issue, project: project, milestone: milestone)
diff --git a/features/steps/project/project_network_graph.rb b/features/steps/project/project_network_graph.rb
index bc228e6e68a..1c5cfcc6c68 100644
--- a/features/steps/project/project_network_graph.rb
+++ b/features/steps/project/project_network_graph.rb
@@ -1,5 +1,6 @@
class ProjectNetworkGraph < Spinach::FeatureSteps
include SharedAuthentication
+ include SharedPaths
include SharedProject
Then 'page should have network graph' do
@@ -10,7 +11,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
# Stub Graph max_size to speed up test (10 commits vs. 650)
Network::Graph.stub(max_count: 10)
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
visit project_network_path(project, "master")
end
diff --git a/features/steps/project/project_snippets.rb b/features/steps/project/project_snippets.rb
index 82ff895970e..c3a76bea269 100644
--- a/features/steps/project/project_snippets.rb
+++ b/features/steps/project/project_snippets.rb
@@ -90,10 +90,10 @@ class ProjectSnippets < Spinach::FeatureSteps
end
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
def project_snippet
- @project_snippet ||= ProjectSnippet.find_by_title!("Snippet One")
+ @project_snippet ||= ProjectSnippet.find_by!(title: "Snippet one")
end
end
diff --git a/features/steps/project/project_team_management.rb b/features/steps/project/project_team_management.rb
index efebba1be24..ffc5016529f 100644
--- a/features/steps/project/project_team_management.rb
+++ b/features/steps/project/project_team_management.rb
@@ -10,7 +10,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
And 'I should see "Sam" in team list' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
page.should have_content(user.name)
page.should have_content(user.username)
end
@@ -20,7 +20,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
And 'I select "Mike" as "Reporter"' do
- user = User.find_by_name("Mike")
+ user = User.find_by(name: "Mike")
select2(user.id, from: "#user_ids", multiple: true)
within "#new_team_member" do
@@ -42,7 +42,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
And 'I change "Sam" role to "Reporter"' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
within "#user_#{user.id}" do
select "Reporter", from: "team_member_project_access"
end
@@ -59,7 +59,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
And 'I should not see "Sam" in team list' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
page.should_not have_content(user.name)
page.should_not have_content(user.username)
end
@@ -73,19 +73,19 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
And '"Sam" is "Shop" developer' do
- user = User.find_by_name("Sam")
- project = Project.find_by_name("Shop")
+ user = User.find_by(name: "Sam")
+ project = Project.find_by(name: "Shop")
project.team << [user, :developer]
end
Given 'I own project "Website"' do
- @project = create(:project, name: "Website", namespace: @user.namespace)
+ @project = create(:empty_project, name: "Website", namespace: @user.namespace)
@project.team << [@user, :master]
end
And '"Mike" is "Website" reporter' do
- user = User.find_by_name("Mike")
- project = Project.find_by_name("Website")
+ user = User.find_by(name: "Mike")
+ project = Project.find_by(name: "Website")
project.team << [user, :reporter]
end
@@ -94,13 +94,13 @@ class ProjectTeamManagement < Spinach::FeatureSteps
end
When 'I submit "Website" project for import team' do
- project = Project.find_by_name("Website")
+ project = Project.find_by(name: "Website")
select project.name_with_namespace, from: 'source_project_id'
click_button 'Import'
end
step 'I click cancel link for "Sam"' do
- within "#user_#{User.find_by_name('Sam').id}" do
+ within "#user_#{User.find_by(name: 'Sam').id}" do
click_link('Remove user from team')
end
end
diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb
index 4ac53075704..76ffea1bb6f 100644
--- a/features/steps/project/redirects.rb
+++ b/features/steps/project/redirects.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
include SharedProject
step 'public project "Community"' do
- create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
+ create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
end
step 'private project "Enterprise"' do
@@ -12,7 +12,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
end
step 'I visit project "Community" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project)
end
@@ -23,12 +23,12 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
end
step 'I visit project "Enterprise" page' do
- project = Project.find_by_name('Enterprise')
+ project = Project.find_by(name: 'Enterprise')
visit project_path(project)
end
step 'I visit project "CommunityDoesNotExist" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project) + 'DoesNotExist'
end
end
diff --git a/features/steps/public/groups_feature.rb b/features/steps/public/groups_feature.rb
new file mode 100644
index 00000000000..015deca5427
--- /dev/null
+++ b/features/steps/public/groups_feature.rb
@@ -0,0 +1,93 @@
+class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedPaths
+ include SharedGroup
+ include SharedProject
+
+ step 'group "TestGroup" has private project "Enterprise"' do
+ group_has_project("TestGroup", "Enterprise", Gitlab::VisibilityLevel::PRIVATE)
+ end
+
+ step 'group "TestGroup" has internal project "Internal"' do
+ group_has_project("TestGroup", "Internal", Gitlab::VisibilityLevel::INTERNAL)
+ end
+
+ step 'group "TestGroup" has public project "Community"' do
+ group_has_project("TestGroup", "Community", Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ step '"John Doe" is owner of group "TestGroup"' do
+ group = Group.find_by(name: "TestGroup") || create(:group, name: "TestGroup")
+ user = create(:user, name: "John Doe")
+ group.add_user(user, Gitlab::Access::OWNER)
+ end
+
+ step 'I visit group "TestGroup" page' do
+ visit group_path(Group.find_by(name: "TestGroup"))
+ end
+
+ step 'I visit group "TestGroup" issues page' do
+ visit issues_group_path(Group.find_by(name: "TestGroup"))
+ end
+
+ step 'I visit group "TestGroup" merge requests page' do
+ visit merge_requests_group_path(Group.find_by(name: "TestGroup"))
+ end
+
+ step 'I visit group "TestGroup" members page' do
+ visit members_group_path(Group.find_by(name: "TestGroup"))
+ end
+
+ step 'I should not see project "Enterprise" items' do
+ page.should_not have_content "Enterprise"
+ end
+
+ step 'I should see project "Internal" items' do
+ page.should have_content "Internal"
+ end
+
+ step 'I should not see project "Internal" items' do
+ page.should_not have_content "Internal"
+ end
+
+ step 'I should see project "Community" items' do
+ page.should have_content "Community"
+ end
+
+ step 'I change filter to Everyone\'s' do
+ click_link "Everyone's"
+ end
+
+ step 'I should see group member "John Doe"' do
+ page.should have_content "John Doe"
+ end
+
+ step 'I should not see member roles' do
+ page.body.should_not match(%r{owner|developer|reporter|guest}i)
+ end
+
+ protected
+
+ def group_has_project(groupname, projectname, visibility_level)
+ group = Group.find_by(name: groupname) || create(:group, name: groupname)
+ project = create(:project,
+ namespace: group,
+ name: projectname,
+ path: "#{groupname}-#{projectname}",
+ visibility_level: visibility_level
+ )
+ create(:issue,
+ title: "#{projectname} feature",
+ project: project
+ )
+ create(:merge_request,
+ title: "#{projectname} feature implemented",
+ source_project: project,
+ target_project: project
+ )
+ create(:closed_issue_event,
+ project: project
+ )
+ end
+end
+
diff --git a/features/steps/public/projects_feature.rb b/features/steps/public/projects_feature.rb
index 47e52f47d07..eb1d235f435 100644
--- a/features/steps/public/projects_feature.rb
+++ b/features/steps/public/projects_feature.rb
@@ -3,12 +3,8 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
include SharedPaths
include SharedProject
- step 'I should see project "Community"' do
- page.should have_content "Community"
- end
-
- step 'I should not see project "Enterprise"' do
- page.should_not have_content "Enterprise"
+ step 'public empty project "Empty Public Project"' do
+ create :empty_project, name: 'Empty Public Project', visibility_level: Gitlab::VisibilityLevel::PUBLIC
end
step 'I should see project "Empty Public Project"' do
@@ -24,21 +20,13 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
page.should have_content 'README.md'
end
- step 'public project "Community"' do
- create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
- end
-
- step 'public empty project "Empty Public Project"' do
- create :project, name: 'Empty Public Project', visibility_level: Gitlab::VisibilityLevel::PUBLIC
- end
-
step 'I visit empty project page' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
visit project_path(project)
end
step 'I visit project "Community" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project)
end
@@ -47,25 +35,21 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
end
step 'I should see empty public project details with http clone info' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
page.all(:css, '.git-empty .clone').each do |element|
element.text.should include(project.http_url_to_repo)
end
end
step 'I should see empty public project details with ssh clone info' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
page.all(:css, '.git-empty .clone').each do |element|
element.text.should include(project.url_to_repo)
end
end
- step 'private project "Enterprise"' do
- create :project, name: 'Enterprise'
- end
-
step 'I visit project "Enterprise" page' do
- project = Project.find_by_name('Enterprise')
+ project = Project.find_by(name: 'Enterprise')
visit project_path(project)
end
@@ -75,20 +59,8 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
end
end
- step 'internal project "Internal"' do
- create :project_with_code, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL
- end
-
- step 'I should see project "Internal"' do
- page.should have_content "Internal"
- end
-
- step 'I should not see project "Internal"' do
- page.should_not have_content "Internal"
- end
-
step 'I visit project "Internal" page' do
- project = Project.find_by_name('Internal')
+ project = Project.find_by(name: 'Internal')
visit project_path(project)
end
@@ -99,13 +71,102 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
end
step 'I should see an http link to the repository' do
- project = Project.find_by_name 'Community'
+ project = Project.find_by(name: 'Community')
page.should have_field('project_clone', with: project.http_url_to_repo)
end
step 'I should see an ssh link to the repository' do
- project = Project.find_by_name 'Community'
+ project = Project.find_by(name: 'Community')
page.should have_field('project_clone', with: project.url_to_repo)
end
+
+ step 'I visit "Community" issues page' do
+ create(:issue,
+ title: "Bug",
+ project: public_project
+ )
+ create(:issue,
+ title: "New feature",
+ project: public_project
+ )
+ visit project_issues_path(public_project)
+ end
+
+
+ step 'I should see list of issues for "Community" project' do
+ page.should have_content "Bug"
+ page.should have_content public_project.name
+ page.should have_content "New feature"
+ end
+
+ step 'I visit "Internal" issues page' do
+ create(:issue,
+ title: "Internal Bug",
+ project: internal_project
+ )
+ create(:issue,
+ title: "New internal feature",
+ project: internal_project
+ )
+ visit project_issues_path(internal_project)
+ end
+
+
+ step 'I should see list of issues for "Internal" project' do
+ page.should have_content "Internal Bug"
+ page.should have_content internal_project.name
+ page.should have_content "New internal feature"
+ end
+
+ step 'I visit "Community" merge requests page' do
+ visit project_merge_requests_path(public_project)
+ end
+
+ step 'project "Community" has "Bug fix" open merge request' do
+ create(:merge_request,
+ title: "Bug fix for public project",
+ source_project: public_project,
+ target_project: public_project,
+ )
+ end
+
+ step 'I should see list of merge requests for "Community" project' do
+ page.should have_content public_project.name
+ page.should have_content public_merge_request.source_project.name
+ end
+
+ step 'I visit "Internal" merge requests page' do
+ visit project_merge_requests_path(internal_project)
+ end
+
+ step 'project "Internal" has "Feature implemented" open merge request' do
+ create(:merge_request,
+ title: "Feature implemented",
+ source_project: internal_project,
+ target_project: internal_project
+ )
+ end
+
+ step 'I should see list of merge requests for "Internal" project' do
+ page.should have_content internal_project.name
+ page.should have_content internal_merge_request.source_project.name
+ end
+
+ def internal_project
+ @internal_project ||= Project.find_by!(name: 'Internal')
+ end
+
+ def public_project
+ @public_project ||= Project.find_by!(name: 'Community')
+ end
+
+
+ def internal_merge_request
+ @internal_merge_request ||= MergeRequest.find_by!(title: 'Feature implemented')
+ end
+
+ def public_merge_request
+ @public_merge_request ||= MergeRequest.find_by!(title: 'Bug fix for public project')
+ end
end
diff --git a/features/steps/shared/authentication.rb b/features/steps/shared/authentication.rb
index df05754c287..b8c11ce0a23 100644
--- a/features/steps/shared/authentication.rb
+++ b/features/steps/shared/authentication.rb
@@ -12,6 +12,14 @@ module SharedAuthentication
login_as :admin
end
+ step 'I sign in as "John Doe"' do
+ login_with(user_exists("John Doe"))
+ end
+
+ step 'I sign in as "Mary Jane"' do
+ login_with(user_exists("Mary Jane"))
+ end
+
step 'I should be redirected to sign in page' do
current_path.should == new_user_session_path
end
diff --git a/features/steps/shared/diff_note.rb b/features/steps/shared/diff_note.rb
index 9c39a226e1b..f80d8d06475 100644
--- a/features/steps/shared/diff_note.rb
+++ b/features/steps/shared/diff_note.rb
@@ -2,7 +2,7 @@ module SharedDiffNote
include Spinach::DSL
Given 'I cancel the diff comment' do
- within(".file") do
+ within(".diff-file") do
find(".js-close-discussion-note-form").click
end
end
@@ -13,14 +13,14 @@ module SharedDiffNote
end
Given 'I haven\'t written any diff comment text' do
- within(".file") do
+ within(".diff-file") do
fill_in "note[note]", with: ""
end
end
Given 'I leave a diff comment like "Typo, please fix"' do
find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_29_14"]').click
- within(".file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
+ within(".diff-file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
fill_in "note[note]", with: "Typo, please fix"
find(".js-comment-button").trigger("click")
sleep 0.05
@@ -29,7 +29,7 @@ module SharedDiffNote
Given 'I preview a diff comment text like "Should fix it :smile:"' do
find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_29_14"]').click
- within(".file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
+ within(".diff-file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
fill_in "note[note]", with: "Should fix it :smile:"
find(".js-note-preview-button").trigger("click")
end
@@ -38,7 +38,7 @@ module SharedDiffNote
Given 'I preview another diff comment text like "DRY this up"' do
find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_57_41"]').click
- within(".file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_57_41']") do
+ within(".diff-file form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_57_41']") do
fill_in "note[note]", with: "DRY this up"
find(".js-note-preview-button").trigger("click")
end
@@ -53,13 +53,13 @@ module SharedDiffNote
end
Given 'I write a diff comment like ":-1: I don\'t like this"' do
- within(".file") do
+ within(".diff-file") do
fill_in "note[note]", with: ":-1: I don\'t like this"
end
end
Given 'I submit the diff comment' do
- within(".file") do
+ within(".diff-file") do
click_button("Add Comment")
end
end
@@ -67,49 +67,49 @@ module SharedDiffNote
Then 'I should not see the diff comment form' do
- within(".file") do
+ within(".diff-file") do
page.should_not have_css("form.new_note")
end
end
Then 'I should not see the diff comment preview button' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-note-preview-button", visible: false)
end
end
Then 'I should not see the diff comment text field' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-note-text", visible: false)
end
end
Then 'I should only see one diff form' do
- within(".file") do
+ within(".diff-file") do
page.should have_css("form.new_note", count: 1)
end
end
Then 'I should see a diff comment form with ":-1: I don\'t like this"' do
- within(".file") do
+ within(".diff-file") do
page.should have_field("note[note]", with: ":-1: I don\'t like this")
end
end
Then 'I should see a diff comment saying "Typo, please fix"' do
- within(".file .note") do
+ within(".diff-file .note") do
page.should have_content("Typo, please fix")
end
end
Then 'I should see a discussion reply button' do
- within(".file") do
+ within(".diff-file") do
page.should have_link("Reply")
end
end
Then 'I should see a temporary diff comment form' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-temp-notes-holder form.new_note")
end
end
@@ -119,37 +119,37 @@ module SharedDiffNote
end
Then 'I should see an empty diff comment form' do
- within(".file") do
+ within(".diff-file") do
page.should have_field("note[note]", with: "")
end
end
Then 'I should see the cancel comment button' do
- within(".file form") do
+ within(".diff-file form") do
page.should have_css(".js-close-discussion-note-form", text: "Cancel")
end
end
Then 'I should see the diff comment preview' do
- within(".file form") do
+ within(".diff-file form") do
page.should have_css(".js-note-preview", visible: false)
end
end
Then 'I should see the diff comment edit button' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-note-edit-button", visible: true)
end
end
Then 'I should see the diff comment preview button' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-note-preview-button", visible: true)
end
end
Then 'I should see two separate previews' do
- within(".file") do
+ within(".diff-file") do
page.should have_css(".js-note-preview", visible: true, count: 2)
page.should have_content("Should fix it")
page.should have_content("DRY this up")
diff --git a/features/steps/shared/group.rb b/features/steps/shared/group.rb
new file mode 100644
index 00000000000..6b4c47312a7
--- /dev/null
+++ b/features/steps/shared/group.rb
@@ -0,0 +1,36 @@
+module SharedGroup
+ include Spinach::DSL
+
+ step '"John Doe" is owner of group "Owned"' do
+ is_member_of("John Doe", "Owned", Gitlab::Access::OWNER)
+ end
+
+ step '"John Doe" is guest of group "Guest"' do
+ is_member_of("John Doe", "Guest", Gitlab::Access::GUEST)
+ end
+
+ step '"Mary Jane" is owner of group "Owned"' do
+ is_member_of("Mary Jane", "Owned", Gitlab::Access::OWNER)
+ end
+
+ step '"Mary Jane" is guest of group "Owned"' do
+ is_member_of("Mary Jane", "Owned", Gitlab::Access::GUEST)
+ end
+
+ step '"Mary Jane" is guest of group "Guest"' do
+ is_member_of("Mary Jane", "Guest", Gitlab::Access::GUEST)
+ end
+
+ protected
+
+ def is_member_of(username, groupname, role)
+ @project_count ||= 0
+ user = User.find_by(name: username) || create(:user, name: username)
+ group = Group.find_by(name: groupname) || create(:group, name: groupname)
+ group.add_user(user, role)
+ project ||= create(:project, namespace: group, path: "project#{@project_count}")
+ event ||= create(:closed_issue_event, project: project)
+ project.team << [user, :master]
+ @project_count += 1
+ end
+end
diff --git a/features/steps/shared/markdown.rb b/features/steps/shared/markdown.rb
new file mode 100644
index 00000000000..782f3f0920b
--- /dev/null
+++ b/features/steps/shared/markdown.rb
@@ -0,0 +1,12 @@
+module SharedMarkdown
+ include Spinach::DSL
+
+ def header_should_have_correct_id_and_link(level, text, id, parent = ".wiki")
+ page.find(:css, "#{parent} h#{level}##{id}").text.should == text
+ page.find(:css, "#{parent} h#{level}##{id} > :last-child")[:href].should =~ /##{id}$/
+ end
+
+ step 'Header "Description header" should have correct id and link' do
+ header_should_have_correct_id_and_link(1, 'Description header', 'description-header')
+ end
+end
diff --git a/features/steps/shared/note.rb b/features/steps/shared/note.rb
index da08da9420d..36b81b74186 100644
--- a/features/steps/shared/note.rb
+++ b/features/steps/shared/note.rb
@@ -102,4 +102,21 @@ module SharedNote
page.should have_content("XML attached")
end
end
+
+ # Markdown
+
+ step 'I leave a comment with a header containing "Comment with a header"' do
+ within(".js-main-target-form") do
+ fill_in "note[note]", with: "# Comment with a header"
+ click_button "Add Comment"
+ sleep 0.05
+ end
+ end
+
+ step 'The comment with the header should not have an ID' do
+ within(".note-text") do
+ page.should have_content("Comment with a header")
+ page.should_not have_css("#comment-with-a-header")
+ end
+ end
end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 987cd3120c9..a0213815a78 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -6,27 +6,55 @@ module SharedPaths
end
# ----------------------------------------
+ # User
+ # ----------------------------------------
+
+ step 'I visit user "John Doe" page' do
+ visit user_path("john_doe")
+ end
+
+ # ----------------------------------------
# Group
# ----------------------------------------
- step 'I visit group page' do
- visit group_path(current_group)
+ step 'I visit group "Owned" page' do
+ visit group_path(Group.find_by(name:"Owned"))
+ end
+
+ step 'I visit group "Owned" issues page' do
+ visit issues_group_path(Group.find_by(name:"Owned"))
+ end
+
+ step 'I visit group "Owned" merge requests page' do
+ visit merge_requests_group_path(Group.find_by(name:"Owned"))
+ end
+
+ step 'I visit group "Owned" members page' do
+ visit members_group_path(Group.find_by(name:"Owned"))
+ end
+
+ step 'I visit group "Owned" settings page' do
+ visit edit_group_path(Group.find_by(name:"Owned"))
+ end
+
+ step 'I visit group "Guest" page' do
+ visit group_path(Group.find_by(name:"Guest"))
end
- step 'I visit group issues page' do
- visit issues_group_path(current_group)
+ step 'I visit group "Guest" issues page' do
+ visit issues_group_path(Group.find_by(name:"Guest"))
end
- step 'I visit group merge requests page' do
- visit merge_requests_group_path(current_group)
+ step 'I visit group "Guest" merge requests page' do
+ visit merge_requests_group_path(Group.find_by(name:"Guest"))
end
- step 'I visit group members page' do
- visit members_group_path(current_group)
+ step 'I visit group "Guest" members page' do
+ visit members_group_path(Group.find_by(name:"Guest"))
end
- step 'I visit group settings page' do
- visit edit_group_path(current_group)
+ step 'I visit group "Guest" settings page' do
+ visit edit_group_path(Group.find_by(name:"Guest"))
end
# ----------------------------------------
@@ -85,6 +113,14 @@ module SharedPaths
visit history_profile_path
end
+ step 'I visit profile groups page' do
+ visit profile_groups_path
+ end
+
+ step 'I should be redirected to the profile groups page' do
+ current_path.should == profile_groups_path
+ end
+
# ----------------------------------------
# Admin
# ----------------------------------------
@@ -241,7 +277,7 @@ module SharedPaths
end
step 'I visit issue page "Release 0.4"' do
- issue = Issue.find_by_title("Release 0.4")
+ issue = Issue.find_by(title: "Release 0.4")
visit project_issue_path(issue.project, issue)
end
@@ -250,12 +286,12 @@ module SharedPaths
end
step 'I visit merge request page "Bug NS-04"' do
- mr = MergeRequest.find_by_title("Bug NS-04")
+ mr = MergeRequest.find_by(title: "Bug NS-04")
visit project_merge_request_path(mr.target_project, mr)
end
step 'I visit merge request page "Bug NS-05"' do
- mr = MergeRequest.find_by_title("Bug NS-05")
+ mr = MergeRequest.find_by(title: "Bug NS-05")
visit project_merge_request_path(mr.target_project, mr)
end
@@ -292,7 +328,7 @@ module SharedPaths
end
step 'I visit public page for "Community" project' do
- visit public_project_path(Project.find_by_name("Community"))
+ visit public_project_path(Project.find_by(name: "Community"))
end
# ----------------------------------------
@@ -316,6 +352,14 @@ module SharedPaths
end
def project
- project = Project.find_by_name!("Shop")
+ project = Project.find_by!(name: "Shop")
+ end
+
+ # ----------------------------------------
+ # Errors
+ # ----------------------------------------
+
+ Then 'page status code should be 404' do
+ page.status_code.should == 404
end
end
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index 3dc4932a09a..f35beab8af2 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -3,26 +3,26 @@ module SharedProject
# Create a project without caring about what it's called
And "I own a project" do
- @project = create(:project_with_code, namespace: @user.namespace)
+ @project = create(:project, namespace: @user.namespace)
@project.team << [@user, :master]
end
# Create a specific project called "Shop"
And 'I own project "Shop"' do
- @project = Project.find_by_name "Shop"
- @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
+ @project = Project.find_by(name: "Shop")
+ @project ||= create(:project, name: "Shop", namespace: @user.namespace)
@project.team << [@user, :master]
end
# Create another specific project called "Forum"
And 'I own project "Forum"' do
- @project = Project.find_by_name "Forum"
- @project ||= create(:project_with_code, name: "Forum", namespace: @user.namespace, path: 'forum_project')
+ @project = Project.find_by(name: "Forum")
+ @project ||= create(:project, name: "Forum", namespace: @user.namespace, path: 'forum_project')
@project.team << [@user, :master]
end
And 'project "Shop" has push event' do
- @project = Project.find_by_name("Shop")
+ @project = Project.find_by(name: "Shop")
data = {
before: "0000000000000000000000000000000000000000",
@@ -48,7 +48,7 @@ module SharedProject
end
Then 'I should see project "Shop" activity feed' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
page.should have_content "#{@user.name} pushed new branch new_design at #{project.name_with_namespace}"
end
@@ -58,11 +58,68 @@ module SharedProject
page.should have_content("Features:")
end
- Then 'page status code should be 404' do
- page.status_code.should == 404
- end
-
def current_project
@project ||= Project.first
end
+
+ # ----------------------------------------
+ # Visibility level
+ # ----------------------------------------
+
+ step 'private project "Enterprise"' do
+ create :project, name: 'Enterprise'
+ end
+
+ step 'I should see project "Enterprise"' do
+ page.should have_content "Enterprise"
+ end
+
+ step 'I should not see project "Enterprise"' do
+ page.should_not have_content "Enterprise"
+ end
+
+ step 'internal project "Internal"' do
+ create :project, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL
+ end
+
+ step 'I should see project "Internal"' do
+ page.should have_content "Internal"
+ end
+
+ step 'I should not see project "Internal"' do
+ page.should_not have_content "Internal"
+ end
+
+ step 'public project "Community"' do
+ create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
+ end
+
+ step 'I should see project "Community"' do
+ page.should have_content "Community"
+ end
+
+ step 'I should not see project "Community"' do
+ page.should_not have_content "Community"
+ end
+
+ step '"John Doe" is authorized to private project "Enterprise"' do
+ user = user_exists("John Doe", username: "john_doe")
+ project = Project.find_by(name: "Enterprise")
+ project ||= create(:project, name: "Enterprise", namespace: user.namespace)
+ project.team << [user, :master]
+ end
+
+ step '"John Doe" is authorized to internal project "Internal"' do
+ user = user_exists("John Doe", username: "john_doe")
+ project = Project.find_by(name: "Internal")
+ project ||= create :project, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL
+ project.team << [user, :master]
+ end
+
+ step '"John Doe" is authorized to public project "Community"' do
+ user = user_exists("John Doe", username: "john_doe")
+ project = Project.find_by(name: "Community")
+ project ||= create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
+ project.team << [user, :master]
+ end
end
diff --git a/features/steps/shared/user.rb b/features/steps/shared/user.rb
new file mode 100644
index 00000000000..209d77c7acf
--- /dev/null
+++ b/features/steps/shared/user.rb
@@ -0,0 +1,17 @@
+module SharedUser
+ include Spinach::DSL
+
+ step 'User "John Doe" exists' do
+ user_exists("John Doe", {username: "john_doe"})
+ end
+
+ step 'User "Mary Jane" exists' do
+ user_exists("Mary Jane", {username: "mary_jane"})
+ end
+
+ protected
+
+ def user_exists(name, options = {})
+ User.find_by(name: name) || create(:user, {name: name, admin: false}.merge(options))
+ end
+end
diff --git a/features/steps/snippets/discover_snippets.rb b/features/steps/snippets/discover_snippets.rb
index 3afe019adf6..09337937002 100644
--- a/features/steps/snippets/discover_snippets.rb
+++ b/features/steps/snippets/discover_snippets.rb
@@ -12,6 +12,6 @@ class DiscoverSnippets < Spinach::FeatureSteps
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
diff --git a/features/steps/snippets/snippets.rb b/features/steps/snippets/snippets.rb
index 1aea01f6cdf..fed54659ebc 100644
--- a/features/steps/snippets/snippets.rb
+++ b/features/steps/snippets/snippets.rb
@@ -59,6 +59,6 @@ class SnippetsFeature < Spinach::FeatureSteps
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
diff --git a/features/steps/snippets/user_snippets.rb b/features/steps/snippets/user_snippets.rb
index 15d6da6db3d..2d7ffc866e7 100644
--- a/features/steps/snippets/user_snippets.rb
+++ b/features/steps/snippets/user_snippets.rb
@@ -36,6 +36,6 @@ class UserSnippets < Spinach::FeatureSteps
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
diff --git a/features/steps/user.rb b/features/steps/user.rb
new file mode 100644
index 00000000000..5fb248ffcbc
--- /dev/null
+++ b/features/steps/user.rb
@@ -0,0 +1,10 @@
+class Spinach::Features::User < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedPaths
+ include SharedUser
+ include SharedProject
+
+ step 'I should see user "John Doe" page' do
+ expect(page.title).to match(/^\s*John Doe/)
+ end
+end
diff --git a/features/support/env.rb b/features/support/env.rb
index 0186002c559..7b11f5a7c6f 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -15,7 +15,7 @@ require 'spinach/capybara'
require 'sidekiq/testing/inline'
-%w(valid_commit big_commits select2_helper test_env).each do |f|
+%w(valid_commit valid_commit_with_alt_email big_commits select2_helper test_env).each do |f|
require Rails.root.join('spec', 'support', f)
end
diff --git a/features/user.feature b/features/user.feature
new file mode 100644
index 00000000000..d4198c08de9
--- /dev/null
+++ b/features/user.feature
@@ -0,0 +1,69 @@
+Feature: User
+ Background:
+ Given User "John Doe" exists
+ And "John Doe" is authorized to private project "Enterprise"
+
+ # Signed out
+
+ Scenario: I visit user "John Doe" page while not signed in when he is authorized to a public project
+ Given "John Doe" is authorized to internal project "Internal"
+ And "John Doe" is authorized to public project "Community"
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should not see project "Enterprise"
+ And I should not see project "Internal"
+ And I should see project "Community"
+
+ Scenario: I visit user "John Doe" page while not signed in when he is not authorized to a public project
+ Given "John Doe" is authorized to internal project "Internal"
+ When I visit user "John Doe" page
+ Then I should be redirected to sign in page
+
+ # Signed in as someone else
+
+ Scenario: I visit user "John Doe" page while signed in as someone else when he is authorized to a public project
+ Given "John Doe" is authorized to public project "Community"
+ And "John Doe" is authorized to internal project "Internal"
+ And I sign in as a user
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should not see project "Enterprise"
+ And I should see project "Internal"
+ And I should see project "Community"
+
+ Scenario: I visit user "John Doe" page while signed in as someone else when he is not authorized to a public project
+ Given "John Doe" is authorized to internal project "Internal"
+ And I sign in as a user
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should not see project "Enterprise"
+ And I should see project "Internal"
+ And I should not see project "Community"
+
+ Scenario: I visit user "John Doe" page while signed in as someone else when he is not authorized to a project I can see
+ Given I sign in as a user
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should not see project "Enterprise"
+ And I should not see project "Internal"
+ And I should not see project "Community"
+
+ # Signed in as the user himself
+
+ Scenario: I visit user "John Doe" page while signed in as "John Doe" when he has a public project
+ Given "John Doe" is authorized to internal project "Internal"
+ And "John Doe" is authorized to public project "Community"
+ And I sign in as "John Doe"
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should see project "Enterprise"
+ And I should see project "Internal"
+ And I should see project "Community"
+
+ Scenario: I visit user "John Doe" page while signed in as "John Doe" when he has no public project
+ Given I sign in as "John Doe"
+ When I visit user "John Doe" page
+ Then I should see user "John Doe" page
+ And I should see project "Enterprise"
+ And I should not see project "Internal"
+ And I should not see project "Community"
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 283f7642f67..6bec8368b12 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -22,6 +22,8 @@ module API
end
format :json
+ content_type :txt, "text/plain"
+
helpers APIHelpers
mount Groups
@@ -40,6 +42,7 @@ module API
mount ProjectHooks
mount Services
mount Files
+ mount Commits
mount Namespaces
end
end
diff --git a/lib/api/commits.rb b/lib/api/commits.rb
new file mode 100644
index 00000000000..33b8b3d2244
--- /dev/null
+++ b/lib/api/commits.rb
@@ -0,0 +1,64 @@
+require 'mime/types'
+
+module API
+ # Projects API
+ class Commits < Grape::API
+ before { authenticate! }
+ before { authorize! :download_code, user_project }
+
+ resource :projects do
+ helpers do
+ def handle_project_member_errors(errors)
+ if errors[:project_access].any?
+ error!(errors[:project_access], 422)
+ end
+ not_found!
+ end
+ end
+
+ # Get a project repository commits
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # ref_name (optional) - The name of a repository branch or tag, if not given the default branch is used
+ # Example Request:
+ # GET /projects/:id/repository/commits
+ get ":id/repository/commits" do
+ page = (params[:page] || 0).to_i
+ per_page = (params[:per_page] || 20).to_i
+ ref = params[:ref_name] || user_project.try(:default_branch) || 'master'
+
+ commits = user_project.repository.commits(ref, nil, per_page, page * per_page)
+ present commits, with: Entities::RepoCommit
+ end
+
+ # Get a specific commit of a project
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # sha (required) - The commit hash or name of a repository branch or tag
+ # Example Request:
+ # GET /projects/:id/repository/commits/:sha
+ get ":id/repository/commits/:sha" do
+ sha = params[:sha]
+ commit = user_project.repository.commit(sha)
+ not_found! "Commit" unless commit
+ present commit, with: Entities::RepoCommitDetail
+ end
+
+ # Get the diff for a specific commit of a project
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # sha (required) - The commit or branch name
+ # Example Request:
+ # GET /projects/:id/repository/commits/:sha/diff
+ get ":id/repository/commits/:sha/diff" do
+ sha = params[:sha]
+ commit = user_project.repository.commit(sha)
+ not_found! "Commit" unless commit
+ commit.diffs
+ end
+ end
+ end
+end
diff --git a/lib/api/deploy_keys.rb b/lib/api/deploy_keys.rb
index b5997608997..7f5a125038c 100644
--- a/lib/api/deploy_keys.rb
+++ b/lib/api/deploy_keys.rb
@@ -38,14 +38,14 @@ module API
attrs[:key].strip!
# check if key already exist in project
- key = user_project.deploy_keys.find_by_key(attrs[:key])
+ key = user_project.deploy_keys.find_by(key: attrs[:key])
if key
present key, with: Entities::SSHKey
return
end
# Check for available deploy keys in other projects
- key = current_user.accessible_deploy_keys.find_by_key(attrs[:key])
+ key = current_user.accessible_deploy_keys.find_by(key: attrs[:key])
if key
user_project.deploy_keys << key
present key, with: Entities::SSHKey
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 8d2f38c4daa..8557fa074d4 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -1,11 +1,17 @@
module API
module Entities
class User < Grape::Entity
- expose :id, :username, :email, :name, :bio, :skype, :linkedin, :twitter,
+ expose :id, :username, :email, :name, :bio, :skype, :linkedin, :twitter, :website_url,
:theme_id, :color_scheme_id, :state, :created_at, :extern_uid, :provider
expose :is_admin?, as: :is_admin
expose :can_create_group?, as: :can_create_group
expose :can_create_project?, as: :can_create_project
+
+ expose :avatar_url do |user, options|
+ if user.avatar.present?
+ user.avatar.url
+ end
+ end
end
class UserSafe < Grape::Entity
@@ -48,19 +54,19 @@ module API
class ProjectMember < UserBasic
expose :project_access, as: :access_level do |user, options|
- options[:project].users_projects.find_by_user_id(user.id).project_access
+ options[:project].users_projects.find_by(user_id: user.id).project_access
end
end
class TeamMember < UserBasic
expose :permission, as: :access_level do |user, options|
- options[:user_team].user_team_user_relationships.find_by_user_id(user.id).permission
+ options[:user_team].user_team_user_relationships.find_by(user_id: user.id).permission
end
end
class TeamProject < Project
expose :greatest_access, as: :greatest_access_level do |project, options|
- options[:user_team].user_team_project_relationships.find_by_project_id(project.id).greatest_access
+ options[:user_team].user_team_project_relationships.find_by(project_id: project.id).greatest_access
end
end
@@ -74,12 +80,21 @@ module API
class GroupMember < UserBasic
expose :group_access, as: :access_level do |user, options|
- options[:group].users_groups.find_by_user_id(user.id).group_access
+ options[:group].users_groups.find_by(user_id: user.id).group_access
end
end
class RepoObject < Grape::Entity
- expose :name, :commit
+ expose :name
+
+ expose :commit do |repo_obj, options|
+ if repo_obj.respond_to?(:commit)
+ repo_obj.commit
+ elsif options[:project]
+ options[:project].repository.commit(repo_obj.target)
+ end
+ end
+
expose :protected do |repo, options|
if options[:project]
options[:project].protected_branch? repo.name
@@ -87,6 +102,16 @@ module API
end
end
+ class RepoTreeObject < Grape::Entity
+ expose :id, :name, :type
+
+ expose :mode do |obj, options|
+ filemode = obj.mode.to_s(8)
+ filemode = "0" + filemode if filemode.length < 6
+ filemode
+ end
+ end
+
class RepoCommit < Grape::Entity
expose :id, :short_id, :title, :author_name, :author_email, :created_at
end
diff --git a/lib/api/files.rb b/lib/api/files.rb
index 6a5419a580f..e0c46f92b84 100644
--- a/lib/api/files.rb
+++ b/lib/api/files.rb
@@ -5,10 +5,61 @@ module API
before { authorize! :push_code, user_project }
resource :projects do
+ # Get file from repository
+ # File content is Base64 encoded
+ #
+ # Parameters:
+ # file_path (required) - The path to the file. Ex. lib/class.rb
+ # ref (required) - The name of branch, tag or commit
+ #
+ # Example Request:
+ # GET /projects/:id/repository/files
+ #
+ # Example response:
+ # {
+ # "file_name": "key.rb",
+ # "file_path": "app/models/key.rb",
+ # "size": 1476,
+ # "encoding": "base64",
+ # "content": "IyA9PSBTY2hlbWEgSW5mb3...",
+ # "ref": "master",
+ # "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83",
+ # "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50"
+ # }
+ #
+ get ":id/repository/files" do
+ required_attributes! [:file_path, :ref]
+ attrs = attributes_for_keys [:file_path, :ref]
+ ref = attrs.delete(:ref)
+ file_path = attrs.delete(:file_path)
+
+ commit = user_project.repository.commit(ref)
+ not_found! "Commit" unless commit
+
+ blob = user_project.repository.blob_at(commit.sha, file_path)
+
+ if blob
+ status(200)
+
+ {
+ file_name: blob.name,
+ file_path: blob.path,
+ size: blob.size,
+ encoding: "base64",
+ content: Base64.encode64(blob.data),
+ ref: ref,
+ blob_id: blob.id,
+ commit_id: commit.id,
+ }
+ else
+ render_api_error!('File not found', 404)
+ end
+ end
+
# Create new file in repository
#
# Parameters:
- # file_path (optional) - The path to new file. Ex. lib/class.rb
+ # file_path (required) - The path to new file. Ex. lib/class.rb
# branch_name (required) - The name of branch
# content (required) - File content
# commit_message (required) - Commit message
@@ -18,10 +69,10 @@ module API
#
post ":id/repository/files" do
required_attributes! [:file_path, :branch_name, :content, :commit_message]
- attrs = attributes_for_keys [:file_path, :branch_name, :content, :commit_message]
+ attrs = attributes_for_keys [:file_path, :branch_name, :content, :commit_message, :encoding]
branch_name = attrs.delete(:branch_name)
file_path = attrs.delete(:file_path)
- result = ::Files::CreateContext.new(user_project, current_user, attrs, branch_name, file_path).execute
+ result = ::Files::CreateService.new(user_project, current_user, attrs, branch_name, file_path).execute
if result[:status] == :success
status(201)
@@ -48,10 +99,10 @@ module API
#
put ":id/repository/files" do
required_attributes! [:file_path, :branch_name, :content, :commit_message]
- attrs = attributes_for_keys [:file_path, :branch_name, :content, :commit_message]
+ attrs = attributes_for_keys [:file_path, :branch_name, :content, :commit_message, :encoding]
branch_name = attrs.delete(:branch_name)
file_path = attrs.delete(:file_path)
- result = ::Files::UpdateContext.new(user_project, current_user, attrs, branch_name, file_path).execute
+ result = ::Files::UpdateService.new(user_project, current_user, attrs, branch_name, file_path).execute
if result[:status] == :success
status(200)
@@ -81,7 +132,7 @@ module API
attrs = attributes_for_keys [:file_path, :branch_name, :commit_message]
branch_name = attrs.delete(:branch_name)
file_path = attrs.delete(:file_path)
- result = ::Files::DeleteContext.new(user_project, current_user, attrs, branch_name, file_path).execute
+ result = ::Files::DeleteService.new(user_project, current_user, attrs, branch_name, file_path).execute
if result[:status] == :success
status(200)
diff --git a/lib/api/groups.rb b/lib/api/groups.rb
index 290b78d8017..03f027706de 100644
--- a/lib/api/groups.rb
+++ b/lib/api/groups.rb
@@ -121,11 +121,11 @@ module API
render_api_error!("Wrong access level", 422)
end
group = find_group(params[:id])
- if group.users_groups.find_by_user_id(params[:user_id])
+ if group.users_groups.find_by(user_id: params[:user_id])
render_api_error!("Already exists", 409)
end
group.add_users([params[:user_id]], params[:access_level])
- member = group.users_groups.find_by_user_id(params[:user_id])
+ member = group.users_groups.find_by(user_id: params[:user_id])
present member.user, with: Entities::GroupMember, group: group
end
@@ -139,7 +139,7 @@ module API
# DELETE /groups/:id/members/:user_id
delete ":id/members/:user_id" do
group = find_group(params[:id])
- member = group.users_groups.find_by_user_id(params[:user_id])
+ member = group.users_groups.find_by(user_id: params[:user_id])
if member.nil?
render_api_error!("404 Not Found - user_id:#{params[:user_id]} not a member of group #{group.name}",404)
else
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index b0f8d5a6da9..f8c48e2f3b2 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -7,7 +7,7 @@ module API
def current_user
private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s
- @current_user ||= User.find_by_authentication_token(private_token)
+ @current_user ||= User.find_by(authentication_token: private_token)
identifier = sudo_identifier()
# If the sudo is the current user do nothing
@@ -47,7 +47,7 @@ module API
end
def find_project(id)
- project = Project.find_by_id(id) || Project.find_with_namespace(id)
+ project = Project.find_by(id: id) || Project.find_with_namespace(id)
if project && can?(current_user, :read_project, project)
project
diff --git a/lib/api/internal.rb b/lib/api/internal.rb
index ed6b50c3a6a..ebc9fef07b4 100644
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
@@ -35,7 +35,9 @@ module API
user = key.user
return false if user.blocked?
- return false if user.ldap_user? && Gitlab::LDAP::User.blocked?(user.extern_uid)
+ if Gitlab.config.ldap.enabled
+ return false if user.ldap_user? && Gitlab::LDAP::User.blocked?(user.extern_uid)
+ end
action = case git_cmd
when *DOWNLOAD_COMMANDS
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 3f4bec895bf..58d2f79faff 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -81,14 +81,13 @@ module API
merge_request.target_project = user_project
else
if target_matches_fork(target_project_id,user_project)
- merge_request.target_project = Project.find_by_id(attrs[:target_project_id])
+ merge_request.target_project = Project.find_by(id: attrs[:target_project_id])
else
render_api_error!('(Bad Request) Specified target project that is not the source project, or the source fork of the project.', 400)
end
end
if merge_request.save
- merge_request.reload_code
present merge_request, with: Entities::MergeRequest
else
handle_merge_request_errors! merge_request.errors
@@ -117,8 +116,6 @@ module API
authorize! :modify_merge_request, merge_request
if merge_request.update_attributes attrs
- merge_request.reload_code
- merge_request.mark_as_unchecked
present merge_request, with: Entities::MergeRequest
else
handle_merge_request_errors! merge_request.errors
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 66e0d1ba3ef..bcca69ff49a 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -11,7 +11,7 @@ module API
end
not_found!
end
-
+
def map_public_to_visibility_level(attrs)
publik = attrs.delete(:public)
publik = [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(publik)
@@ -102,7 +102,7 @@ module API
:visibility_level,
:import_url]
attrs = map_public_to_visibility_level(attrs)
- @project = ::Projects::CreateContext.new(current_user, attrs).execute
+ @project = ::Projects::CreateService.new(current_user, attrs).execute
if @project.saved?
present @project, with: Entities::Project
else
@@ -143,7 +143,7 @@ module API
:public,
:visibility_level]
attrs = map_public_to_visibility_level(attrs)
- @project = ::Projects::CreateContext.new(user, attrs).execute
+ @project = ::Projects::CreateService.new(user, attrs).execute
if @project.saved?
present @project, with: Entities::Project
else
@@ -266,7 +266,7 @@ module API
authorize! :admin_project, user_project
required_attributes! [:access_level]
- team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
not_found!("User can not be found") if team_member.nil?
if team_member.update_attributes(project_access: params[:access_level])
@@ -286,7 +286,7 @@ module API
# DELETE /projects/:id/members/:user_id
delete ":id/members/:user_id" do
authorize! :admin_project, user_project
- team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
unless team_member.nil?
team_member.destroy
else
@@ -308,6 +308,18 @@ module API
projects = Project.where("(id in (?) OR visibility_level in (?)) AND (name LIKE (?))", ids, visibility_levels, "%#{params[:query]}%")
present paginate(projects), with: Entities::Project
end
+
+
+ # Get a users list
+ #
+ # Example Request:
+ # GET /users
+ get ':id/users' do
+ @users = User.where(id: user_project.team.users.map(&:id))
+ @users = @users.search(params[:search]) if params[:search].present?
+ @users = paginate @users
+ present @users, with: Entities::User
+ end
end
end
end
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb
index c99c8f7bdfb..ba53bf9baa4 100644
--- a/lib/api/repositories.rb
+++ b/lib/api/repositories.rb
@@ -51,7 +51,7 @@ module API
@branch = user_project.repository.find_branch(params[:branch])
not_found! unless @branch
- protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+ protected_branch = user_project.protected_branches.find_by(name: @branch.name)
user_project.protected_branches.create(name: @branch.name) unless protected_branch
present @branch, with: Entities::RepoObject, project: user_project
@@ -69,7 +69,7 @@ module API
@branch = user_project.repository.find_branch(params[:branch])
not_found! unless @branch
- protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+ protected_branch = user_project.protected_branches.find_by(name: @branch.name)
protected_branch.destroy if protected_branch
present @branch, with: Entities::RepoObject, project: user_project
@@ -82,51 +82,7 @@ module API
# Example Request:
# GET /projects/:id/repository/tags
get ":id/repository/tags" do
- present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject
- end
-
- # Get a project repository commits
- #
- # Parameters:
- # id (required) - The ID of a project
- # ref_name (optional) - The name of a repository branch or tag, if not given the default branch is used
- # Example Request:
- # GET /projects/:id/repository/commits
- get ":id/repository/commits" do
- page = (params[:page] || 0).to_i
- per_page = (params[:per_page] || 20).to_i
- ref = params[:ref_name] || user_project.try(:default_branch) || 'master'
-
- commits = user_project.repository.commits(ref, nil, per_page, page * per_page)
- present commits, with: Entities::RepoCommit
- end
-
- # Get a specific commit of a project
- #
- # Parameters:
- # id (required) - The ID of a project
- # sha (required) - The commit hash or name of a repository branch or tag
- # Example Request:
- # GET /projects/:id/repository/commits/:sha
- get ":id/repository/commits/:sha" do
- sha = params[:sha]
- commit = user_project.repository.commit(sha)
- not_found! "Commit" unless commit
- present commit, with: Entities::RepoCommitDetail
- end
-
- # Get the diff for a specific commit of a project
- #
- # Parameters:
- # id (required) - The ID of a project
- # sha (required) - The commit or branch name
- # Example Request:
- # GET /projects/:id/repository/commits/:sha/diff
- get ":id/repository/commits/:sha/diff" do
- sha = params[:sha]
- result = CommitLoadContext.new(user_project, current_user, {id: sha}).execute
- not_found! "Commit" unless result[:commit]
- result[:commit].diffs
+ present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject, project: user_project
end
# Get a project repository tree
@@ -141,15 +97,9 @@ module API
path = params[:path] || nil
commit = user_project.repository.commit(ref)
- tree = Tree.new(user_project.repository, commit.id, path)
+ tree = user_project.repository.tree(commit.id, path)
- trees = []
-
- %w(trees blobs submodules).each do |type|
- trees += tree.send(type).map { |t| {name: t.name, type: type.singularize, mode: t.mode, id: t.id} }
- end
-
- trees
+ present tree.sorted_entries, with: Entities::RepoTreeObject
end
# Get a raw file contents
@@ -173,9 +123,7 @@ module API
blob = Gitlab::Git::Blob.find(repo, commit.id, params[:filepath])
not_found! "File" unless blob
- env['api.format'] = :txt
-
- content_type blob.mime_type
+ content_type 'text/plain'
present blob.data
end
@@ -233,4 +181,3 @@ module API
end
end
end
-
diff --git a/lib/api/users.rb b/lib/api/users.rb
index 475343a3edf..ae808b6272b 100644
--- a/lib/api/users.rb
+++ b/lib/api/users.rb
@@ -36,6 +36,7 @@ module API
# skype - Skype ID
# linkedin - Linkedin
# twitter - Twitter account
+ # website_url - Website url
# projects_limit - Number of projects user can create
# extern_uid - External authentication provider UID
# provider - External provider
@@ -67,6 +68,7 @@ module API
# skype - Skype ID
# linkedin - Linkedin
# twitter - Twitter account
+ # website_url - Website url
# projects_limit - Limit projects each user can create
# extern_uid - External authentication provider UID
# provider - External provider
@@ -78,7 +80,7 @@ module API
put ":id" do
authenticated_as_admin!
- attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio, :can_create_group, :admin]
+ attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :website_url, :projects_limit, :username, :extern_uid, :provider, :bio, :can_create_group, :admin]
user = User.find(params[:id])
not_found!("User not found") unless user
@@ -117,7 +119,7 @@ module API
# DELETE /users/:id
delete ":id" do
authenticated_as_admin!
- user = User.find_by_id(params[:id])
+ user = User.find_by(id: params[:id])
if user
user.destroy
diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index 7af7140246a..6552f45ff0b 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -11,23 +11,31 @@ module Backup
end
def dump
- case config["adapter"]
+ success = case config["adapter"]
when /^mysql/ then
+ print "Dumping MySQL database #{config['database']} ... "
system('mysqldump', *mysql_args, config['database'], out: db_file_name)
when "postgresql" then
+ print "Dumping PostgreSQL database #{config['database']} ... "
pg_env
system('pg_dump', config['database'], out: db_file_name)
end
+ report_success(success)
end
def restore
- case config["adapter"]
+ success = case config["adapter"]
when /^mysql/ then
+ print "Restoring MySQL database #{config['database']} ... "
system('mysql', *mysql_args, config['database'], in: db_file_name)
when "postgresql" then
+ puts "Destructively rebuilding database schema for RAILS_ENV #{Rails.env}"
+ Rake::Task["db:schema:load"].invoke
+ print "Restoring PostgreSQL database #{config['database']} ... "
pg_env
system('psql', config['database'], '-f', db_file_name)
end
+ report_success(success)
end
protected
@@ -54,5 +62,13 @@ module Backup
ENV['PGPORT'] = config["port"].to_s if config["port"]
ENV['PGPASSWORD'] = config["password"].to_s if config["password"]
end
+
+ def report_success(success)
+ if success
+ puts '[DONE]'.green
+ else
+ puts '[FAILED]'.red
+ end
+ end
end
end
diff --git a/lib/backup/manager.rb b/lib/backup/manager.rb
index efaefa4ce44..a93d35a1cd1 100644
--- a/lib/backup/manager.rb
+++ b/lib/backup/manager.rb
@@ -7,7 +7,7 @@ module Backup
s = {}
s[:db_version] = "#{ActiveRecord::Migrator.current_version}"
s[:backup_created_at] = Time.now
- s[:gitlab_version] = %x{git rev-parse HEAD}.gsub(/\n/,"")
+ s[:gitlab_version] = Gitlab::VERSION
s[:tar_version] = %x{tar --version | head -1}.gsub(/\n/,"")
Dir.chdir(Gitlab.config.backup.path)
@@ -87,21 +87,15 @@ module Backup
settings = YAML.load_file("backup_information.yml")
ENV["VERSION"] = "#{settings[:db_version]}" if settings[:db_version].to_i > 0
- # backups directory is not always sub of Rails root and able to execute the git rev-parse below
- begin
- Dir.chdir(Rails.root)
-
- # restoring mismatching backups can lead to unexpected problems
- if settings[:gitlab_version] != %x{git rev-parse HEAD}.gsub(/\n/, "")
- puts "GitLab version mismatch:".red
- puts " Your current HEAD differs from the HEAD in the backup!".red
- puts " Please switch to the following revision and try again:".red
- puts " revision: #{settings[:gitlab_version]}".red
- exit 1
- end
- ensure
- # chdir back to original intended dir
- Dir.chdir(Gitlab.config.backup.path)
+ # restoring mismatching backups can lead to unexpected problems
+ if settings[:gitlab_version] != Gitlab::VERSION
+ puts "GitLab version mismatch:".red
+ puts " Your current GitLab version (#{Gitlab::VERSION}) differs from the GitLab version in the backup!".red
+ puts " Please switch to the following version and try again:".red
+ puts " version: #{settings[:gitlab_version]}".red
+ puts
+ puts "Hint: git checkout v#{settings[:gitlab_version]}"
+ exit 1
end
end
end
diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb
index 20fd5ba92a1..552f7eaa5ce 100644
--- a/lib/backup/repository.rb
+++ b/lib/backup/repository.rb
@@ -72,8 +72,7 @@ module Backup
end
print 'Put GitLab hooks in repositories dirs'.yellow
- gitlab_shell_user_home = File.expand_path("~#{Gitlab.config.gitlab_shell.ssh_user}")
- if system("#{gitlab_shell_user_home}/gitlab-shell/support/rewrite-hooks.sh", Gitlab.config.gitlab_shell.repos_path)
+ if system("#{Gitlab.config.gitlab_shell.path}/support/rewrite-hooks.sh", Gitlab.config.gitlab_shell.repos_path)
puts " [DONE]".green
else
puts " [FAILED]".red
diff --git a/lib/backup/uploads.rb b/lib/backup/uploads.rb
index e79da7e8fd2..e50e1ff4f13 100644
--- a/lib/backup/uploads.rb
+++ b/lib/backup/uploads.rb
@@ -3,7 +3,7 @@ module Backup
attr_reader :app_uploads_dir, :backup_uploads_dir, :backup_dir
def initialize
- @app_uploads_dir = Rails.root.join('public', 'uploads')
+ @app_uploads_dir = File.realpath(Rails.root.join('public', 'uploads'))
@backup_dir = Gitlab.config.backup.path
@backup_uploads_dir = File.join(Gitlab.config.backup.path, 'uploads')
end
@@ -21,8 +21,9 @@ module Backup
end
def backup_existing_uploads_dir
+ timestamped_uploads_path = File.join(app_uploads_dir, '..', "uploads.#{Time.now.to_i}")
if File.exists?(app_uploads_dir)
- FileUtils.mv(app_uploads_dir, Rails.root.join('public', "uploads.#{Time.now.to_i}"))
+ FileUtils.mv(app_uploads_dir, timestamped_uploads_path)
end
end
end
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index 6e7872dcd03..e51cb30bdd9 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -117,7 +117,7 @@ module ExtractsPath
end
def tree
- @tree ||= Tree.new(@repo, @commit.id, @path)
+ @tree ||= @repo.tree(@commit.id, @path)
end
private
diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb
index 0f196297477..955abc1bedd 100644
--- a/lib/gitlab/auth.rb
+++ b/lib/gitlab/auth.rb
@@ -1,7 +1,7 @@
module Gitlab
class Auth
def find(login, password)
- user = User.find_by_email(login) || User.find_by_username(login)
+ user = User.find_by(email: login) || User.find_by(username: login)
if user.nil? || user.ldap_user?
# Second chance - try LDAP authentication
diff --git a/lib/gitlab/blacklist.rb b/lib/gitlab/blacklist.rb
index 2f9091e07df..6bc2c3b487c 100644
--- a/lib/gitlab/blacklist.rb
+++ b/lib/gitlab/blacklist.rb
@@ -3,7 +3,7 @@ module Gitlab
extend self
def path
- %w(admin dashboard groups help profile projects search public assets u s teams merge_requests issues users snippets services repository hooks notes)
+ %w(admin dashboard files groups help profile projects search public assets u s teams merge_requests issues users snippets services repository hooks notes)
end
end
end
diff --git a/lib/gitlab/identifier.rb b/lib/gitlab/identifier.rb
index a1ff248a77f..6e4de197eeb 100644
--- a/lib/gitlab/identifier.rb
+++ b/lib/gitlab/identifier.rb
@@ -6,17 +6,17 @@ module Gitlab
if identifier.blank?
# Local push from gitlab
email = project.repository.commit(newrev).author_email rescue nil
- User.find_by_email(email) if email
+ User.find_by(email: email) if email
elsif identifier =~ /\Auser-\d+\Z/
# git push over http
user_id = identifier.gsub("user-", "")
- User.find_by_id(user_id)
+ User.find_by(id: user_id)
elsif identifier =~ /\Akey-\d+\Z/
# git push over ssh
key_id = identifier.gsub("key-", "")
- Key.find_by_id(key_id).try(:user)
+ Key.find_by(id: key_id).try(:user)
end
end
end
diff --git a/lib/gitlab/ldap/user.rb b/lib/gitlab/ldap/user.rb
index 59f0fa64a6a..fd36dda7d22 100644
--- a/lib/gitlab/ldap/user.rb
+++ b/lib/gitlab/ldap/user.rb
@@ -44,13 +44,13 @@ module Gitlab
end
def find_user(email)
- user = model.find_by_email(email)
+ user = model.find_by(email: email)
# If no user found and allow_username_or_email_login is true
# we look for user by extracting part of their email
if !user && email && ldap_conf['allow_username_or_email_login']
uname = email.partition('@').first
- user = model.find_by_username(uname)
+ user = model.find_by(username: uname)
end
user
diff --git a/lib/gitlab/popen.rb b/lib/gitlab/popen.rb
index 2f30fde2078..e2fbafb3899 100644
--- a/lib/gitlab/popen.rb
+++ b/lib/gitlab/popen.rb
@@ -1,15 +1,29 @@
+require 'fileutils'
+require 'open3'
+
module Gitlab
module Popen
- def popen(cmd, path)
+ extend self
+
+ def popen(cmd, path=nil)
+ unless cmd.is_a?(Array)
+ raise "System commands must be given as an array of strings"
+ end
+
+ path ||= Dir.pwd
vars = { "PWD" => path }
options = { chdir: path }
+ unless File.directory?(path)
+ FileUtils.mkdir_p(path)
+ end
+
@cmd_output = ""
@cmd_status = 0
- Open3.popen3(vars, cmd, options) do |stdin, stdout, stderr, wait_thr|
- @cmd_status = wait_thr.value.exitstatus
+ Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|
@cmd_output << stdout.read
@cmd_output << stderr.read
+ @cmd_status = wait_thr.value.exitstatus
end
return @cmd_output, @cmd_status
diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb
index 943dc9dc7ea..d18fc8bf2ce 100644
--- a/lib/gitlab/regex.rb
+++ b/lib/gitlab/regex.rb
@@ -17,7 +17,7 @@ module Gitlab
def path_regex
default_regex
end
-
+
def archive_formats_regex
#|zip|tar| tar.gz | tar.bz2 |
/(zip|tar|tar\.gz|tgz|gz|tar\.bz2|tbz|tbz2|tb2|bz2)/
@@ -49,7 +49,7 @@ module Gitlab
protected
def default_regex
- /\A[a-zA-Z0-9][a-zA-Z0-9_\-\.]*(?<!\.git)\z/
+ /\A[.?]?[a-zA-Z0-9][a-zA-Z0-9_\-\.]*(?<!\.git)\z/
end
end
end
diff --git a/lib/gitlab/satellite/files/edit_file_action.rb b/lib/gitlab/satellite/files/edit_file_action.rb
index f410ecb7984..cbdf70f7d12 100644
--- a/lib/gitlab/satellite/files/edit_file_action.rb
+++ b/lib/gitlab/satellite/files/edit_file_action.rb
@@ -10,7 +10,7 @@ module Gitlab
# Returns false if committing the change fails
# Returns false if pushing from the satellite to bare repo failed or was rejected
# Returns true otherwise
- def commit!(content, commit_message)
+ def commit!(content, commit_message, encoding)
in_locked_and_timed_satellite do |repo|
prepare_satellite!(repo)
@@ -26,7 +26,8 @@ module Gitlab
return false
end
- File.open(file_path_in_satellite, 'w') { |f| f.write(content) }
+ # Write file
+ write_file(file_path_in_satellite, content, encoding)
# commit the changes
# will raise CommandFailed when commit fails
diff --git a/lib/gitlab/satellite/files/file_action.rb b/lib/gitlab/satellite/files/file_action.rb
index 0f7afde647d..7701a6d5d60 100644
--- a/lib/gitlab/satellite/files/file_action.rb
+++ b/lib/gitlab/satellite/files/file_action.rb
@@ -12,6 +12,14 @@ module Gitlab
def safe_path?(path)
File.absolute_path(path) == path
end
+
+ def write_file(abs_file_path, content, file_encoding = 'text')
+ if file_encoding == 'base64'
+ File.open(abs_file_path, 'wb') { |f| f.write(Base64.decode64(content)) }
+ else
+ File.open(abs_file_path, 'w') { |f| f.write(content) }
+ end
+ end
end
end
end
diff --git a/lib/gitlab/satellite/files/new_file_action.rb b/lib/gitlab/satellite/files/new_file_action.rb
index 57d101ff535..15e9b7a6f77 100644
--- a/lib/gitlab/satellite/files/new_file_action.rb
+++ b/lib/gitlab/satellite/files/new_file_action.rb
@@ -9,7 +9,7 @@ module Gitlab
# Returns false if committing the change fails
# Returns false if pushing from the satellite to bare repo failed or was rejected
# Returns true otherwise
- def commit!(content, commit_message)
+ def commit!(content, commit_message, encoding)
in_locked_and_timed_satellite do |repo|
prepare_satellite!(repo)
@@ -29,7 +29,7 @@ module Gitlab
FileUtils.mkdir_p(dir_name_in_satellite)
# Write file
- File.open(file_path_in_satellite, 'w') { |f| f.write(content) }
+ write_file(file_path_in_satellite, content, encoding)
# add new file
repo.add(file_path_in_satellite)
diff --git a/lib/gitlab/satellite/merge_action.rb b/lib/gitlab/satellite/merge_action.rb
index 54afd6ab95c..85615f282c4 100644
--- a/lib/gitlab/satellite/merge_action.rb
+++ b/lib/gitlab/satellite/merge_action.rb
@@ -24,10 +24,10 @@ module Gitlab
# Returns false if the merge produced conflicts
# Returns false if pushing from the satellite to the repository failed or was rejected
# Returns true otherwise
- def merge!
+ def merge!(merge_commit_message = nil)
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
- if merge_in_satellite!(merge_repo)
+ if merge_in_satellite!(merge_repo, merge_commit_message)
# push merge back to bare repo
# will raise CommandFailed when push fails
merge_repo.git.push(default_options, :origin, merge_request.target_branch)
@@ -49,14 +49,7 @@ module Gitlab
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
-
- if merge_request.for_fork?
- diff = merge_repo.git.native(:diff, default_options, "origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}")
- else
- diff = merge_repo.git.native(:diff, default_options, "#{merge_request.target_branch}", "#{merge_request.source_branch}")
- end
-
- return diff
+ diff = merge_repo.git.native(:diff, default_options, "origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}")
end
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
@@ -88,14 +81,7 @@ module Gitlab
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
-
- if (merge_request.for_fork?)
- patch = merge_repo.git.format_patch(default_options({stdout: true}), "origin/#{merge_request.target_branch}..source/#{merge_request.source_branch}")
- else
- patch = merge_repo.git.format_patch(default_options({stdout: true}), "#{merge_request.target_branch}..#{merge_request.source_branch}")
- end
-
- return patch
+ patch = merge_repo.git.format_patch(default_options({stdout: true}), "origin/#{merge_request.target_branch}..source/#{merge_request.source_branch}")
end
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
@@ -125,34 +111,26 @@ module Gitlab
#
# Returns false if the merge produced conflicts
# Returns true otherwise
- def merge_in_satellite!(repo)
+ def merge_in_satellite!(repo, message = nil)
update_satellite_source_and_target!(repo)
+ message ||= "Merge branch '#{merge_request.source_branch}' into '#{merge_request.target_branch}'"
+
# merge the source branch into the satellite
# will raise CommandFailed when merge fails
- if merge_request.for_fork?
- repo.git.pull(default_options({no_ff: true}), 'source', merge_request.source_branch)
- else
- repo.git.pull(default_options({no_ff: true}), 'origin', merge_request.source_branch)
- end
+ repo.git.merge(default_options({no_ff: true}), "-m #{message}", "source/#{merge_request.source_branch}")
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
end
# Assumes a satellite exists that is a fresh clone of the projects repo, prepares satellite for merges, diffs etc
def update_satellite_source_and_target!(repo)
- if merge_request.for_fork?
- repo.remote_add('source', merge_request.source_project.repository.path_to_repo)
- repo.remote_fetch('source')
- repo.git.checkout(default_options({b: true}), merge_request.target_branch, "origin/#{merge_request.target_branch}")
- else
- repo.git.checkout(default_options, "#{merge_request.source_branch}")
- repo.git.checkout(default_options({t: true}), "origin/#{merge_request.target_branch}")
- end
+ repo.remote_add('source', merge_request.source_project.repository.path_to_repo)
+ repo.remote_fetch('source')
+ repo.git.checkout(default_options({b: true}), merge_request.target_branch, "origin/#{merge_request.target_branch}")
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
end
-
end
end
end
diff --git a/lib/gitlab/satellite/satellite.rb b/lib/gitlab/satellite/satellite.rb
index 353c3024aad..bcf3012bd92 100644
--- a/lib/gitlab/satellite/satellite.rb
+++ b/lib/gitlab/satellite/satellite.rb
@@ -33,7 +33,7 @@ module Gitlab
end
def create
- output, status = popen("git clone #{project.repository.path_to_repo} #{path}",
+ output, status = popen(%W(git clone -- #{project.repository.path_to_repo} #{path}),
Gitlab.config.satellites.path)
log("PID: #{project.id}: git clone #{project.repository.path_to_repo} #{path}")
diff --git a/lib/gitlab/upgrader.rb b/lib/gitlab/upgrader.rb
index 859923cb563..f46685e4bbe 100644
--- a/lib/gitlab/upgrader.rb
+++ b/lib/gitlab/upgrader.rb
@@ -8,7 +8,7 @@ module Gitlab
puts "Latest available version for GitLab #{current_version.major} is #{latest_version}"
if latest_version?
- puts "You use latest GitLab version"
+ puts "You are using the latest GitLab version"
else
puts "Newer GitLab version is available"
answer = if ARGV.first == "-y"
diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb
index 2d1e0aec5e5..2e18b0592b5 100644
--- a/lib/redcarpet/render/gitlab_html.rb
+++ b/lib/redcarpet/render/gitlab_html.rb
@@ -8,14 +8,11 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
@project = @template.instance_variable_get("@project")
@ref = @template.instance_variable_get("@ref")
@request_path = @template.instance_variable_get("@path")
+ @options = options.dup
super options
end
def block_code(code, language)
- options = { options: {encoding: 'utf-8'} }
- lexer = Pygments::Lexer.find(language) # language can be an alias
- options.merge!(lexer: lexer.aliases[0].downcase) if lexer # downcase is required
-
# New lines are placed to fix an rendering issue
# with code wrapped inside <h1> tag for next case:
#
@@ -25,7 +22,11 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
#
<<-HTML
- <div class="#{h.user_color_scheme_class}">#{Pygments.highlight(code, options)}</div>
+<div class="highlighted-data #{h.user_color_scheme_class}">
+ <div class="highlight">
+ <pre><code class="#{language}">#{h.send(:html_escape, code)}</code></pre>
+ </div>
+</div>
HTML
end
@@ -34,6 +35,16 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
h.link_to_gfm(content, link, title: title)
end
+ def header(text, level)
+ if @options[:no_header_anchors]
+ "<h#{level}>#{text}</h#{level}>"
+ else
+ id = ActionController::Base.helpers.strip_tags(h.gfm(text)).downcase() \
+ .gsub(/[^a-z0-9_-]/, '-').gsub(/-+/, '-').gsub(/^-/, '').gsub(/-$/, '')
+ "<h#{level} id=\"#{id}\">#{text}<a href=\"\##{id}\"></a></h#{level}>"
+ end
+ end
+
def preprocess(full_document)
if @project
h.create_relative_links(full_document, @project, @ref, @request_path, is_wiki?)
diff --git a/lib/support/deploy/deploy.sh b/lib/support/deploy/deploy.sh
index b96f73058b6..4684957233a 100755
--- a/lib/support/deploy/deploy.sh
+++ b/lib/support/deploy/deploy.sh
@@ -28,7 +28,7 @@ sudo -u git -H git pull origin master
echo 'Deploy: Bundle and migrate'
# change it to your needs
-sudo -u git -H bundle --without aws development test postgres --deployment
+sudo -u git -H bundle --without aws development test mysql --deployment
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production
@@ -42,4 +42,4 @@ echo 'Deploy: Starting GitLab server...'
sudo service gitlab start
sudo -u git -H rm /home/git/gitlab/public/index.html
-echo 'Deploy: Done' \ No newline at end of file
+echo 'Deploy: Done'
diff --git a/lib/support/init.d/gitlab b/lib/support/init.d/gitlab
index f1b94087b6a..c6e570784e0 100755
--- a/lib/support/init.d/gitlab
+++ b/lib/support/init.d/gitlab
@@ -3,7 +3,6 @@
# GITLAB
# Maintainer: @randx
# Authors: rovanion.luckey@gmail.com, @randx
-# App Version: 6.0
### BEGIN INIT INFO
# Provides: gitlab
@@ -20,7 +19,7 @@
# DO NOT EDIT THIS FILE!
# This file will be overwritten on update.
# Instead add/change your variables in /etc/default/gitlab
-# An example defaults file can be found in lib/support/default/gitlab
+# An example defaults file can be found in lib/support/init.d/gitlab.default.example
###
diff --git a/lib/support/init.d/gitlab.default.example b/lib/support/init.d/gitlab.default.example
index 4230783a9d7..9951bacedf5 100755
--- a/lib/support/init.d/gitlab.default.example
+++ b/lib/support/init.d/gitlab.default.example
@@ -12,3 +12,20 @@ app_user="git"
# app_root defines the folder in which gitlab and it's components are installed.
# The default is "/home/$app_user/gitlab"
app_root="/home/$app_user/gitlab"
+
+# pid_path defines a folder in which the gitlab and it's components place their pids.
+# This variable is also used below to define the relevant pids for the gitlab components.
+# The default is "$app_root/tmp/pids"
+pid_path="$app_root/tmp/pids"
+
+# socket_path defines the folder in which gitlab places the sockets
+#The default is "$app_root/tmp/sockets"
+socket_path="$app_root/tmp/sockets"
+
+# web_server_pid_path defines the path in which to create the pid file fo the web_server
+# The default is "$pid_path/unicorn.pid"
+web_server_pid_path="$pid_path/unicorn.pid"
+
+# sidekiq_pid_path defines the path in which to create the pid file for sidekiq
+# The default is "$pid_path/sidekiq.pid"
+sidekiq_pid_path="$pid_path/sidekiq.pid"
diff --git a/lib/support/nginx/gitlab b/lib/support/nginx/gitlab
index d1d959e152e..882f0386046 100644
--- a/lib/support/nginx/gitlab
+++ b/lib/support/nginx/gitlab
@@ -1,6 +1,19 @@
# GITLAB
# Maintainer: @randx
-# App Version: 5.0
+
+# CHUNKED TRANSFER
+# It is a known issue that Git-over-HTTP requires chunked transfer encoding [0] which is not
+# supported by Nginx < 1.3.9 [1]. As a result, pushing a large object with Git (i.e. a single large file)
+# can lead to a 411 error. In theory you can get around this by tweaking this configuration file and either
+# - installing an old version of Nginx with the chunkin module [2] compiled in, or
+# - using a newer version of Nginx.
+#
+# At the time of writing we do not know if either of these theoretical solutions works. As a workaround
+# users can use Git over SSH to push large files.
+#
+# [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99
+# [1] https://github.com/agentzh/chunkin-nginx-module#status
+# [2] https://github.com/agentzh/chunkin-nginx-module
upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
@@ -12,7 +25,8 @@ server {
server_tokens off; # don't show the version number, a security best practice
root /home/git/gitlab/public;
- # Set value of client_max_body_size to at least the value of git.max_size in gitlab.yml
+ # Increase this if you want to upload large attachments
+ # Or if you want to accept large git objects over http
client_max_body_size 5m;
# individual nginx logs for this gitlab vhost
@@ -39,5 +53,7 @@ server {
proxy_pass http://gitlab;
}
+
+ error_page 502 /502.html;
}
diff --git a/lib/tasks/gitlab/bulk_add_permission.rake b/lib/tasks/gitlab/bulk_add_permission.rake
index c270232edba..0e1a3d071e9 100644
--- a/lib/tasks/gitlab/bulk_add_permission.rake
+++ b/lib/tasks/gitlab/bulk_add_permission.rake
@@ -15,10 +15,34 @@ namespace :gitlab do
desc "GITLAB | Add a specific user to all projects (as a developer)"
task :user_to_projects, [:email] => :environment do |t, args|
- user = User.find_by_email args.email
+ user = User.find_by(email: args.email)
project_ids = Project.pluck(:id)
puts "Importing #{user.email} users into #{project_ids.size} projects"
UsersProject.add_users_into_projects(project_ids, Array.wrap(user.id), UsersProject::DEVELOPER)
end
+
+ desc "GITLAB | Add all users to all groups (admin users are added as owners)"
+ task all_users_to_all_groups: :environment do |t, args|
+ user_ids = User.where(admin: false).pluck(:id)
+ admin_ids = User.where(admin: true).pluck(:id)
+ groups = Group.all
+
+ puts "Importing #{user_ids.size} users into #{groups.size} groups"
+ puts "Importing #{admin_ids.size} admins into #{groups.size} groups"
+ groups.each do |group|
+ group.add_users(user_ids, UsersGroup::DEVELOPER)
+ group.add_users(admin_ids, UsersGroup::OWNER)
+ end
+ end
+
+ desc "GITLAB | Add a specific user to all groups (as a developer)"
+ task :user_to_groups, [:email] => :environment do |t, args|
+ user = User.find_by_email args.email
+ groups = Group.all
+ puts "Importing #{user.email} users into #{groups.size} groups"
+ groups.each do |group|
+ group.add_users(Array.wrap(user.id), UsersGroup::DEVELOPER)
+ end
+ end
end
end
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index 20d5f03d6ef..c91dedf74c7 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -279,8 +279,6 @@ namespace :gitlab do
start_checking "Environment"
check_gitlab_git_config
- check_python2_exists
- check_python2_version
finished_checking "Environment"
end
@@ -314,52 +312,6 @@ namespace :gitlab do
fix_and_rerun
end
end
-
- def check_python2_exists
- print "Has python2? ... "
-
- # Python prints its version to STDERR
- # so we can't just use run("python2 --version")
- if run_and_match("which python2", /python2$/)
- puts "yes".green
- else
- puts "no".red
- try_fixing_it(
- "Make sure you have Python 2.5+ installed",
- "Link it to python2"
- )
- for_more_information(
- see_installation_guide_section "Packages / Dependencies"
- )
- fix_and_rerun
- end
- end
-
- def check_python2_version
- print "python2 is supported version? ... "
-
- # Python prints its version to STDERR
- # so we can't just use run("python2 --version")
-
- unless run_and_match("which python2", /python2$/)
- puts "can't check because of previous errors".magenta
- return
- end
-
- if `python2 --version 2>&1` =~ /2\.[567]\.\d/
- puts "yes".green
- else
- puts "no".red
- try_fixing_it(
- "Make sure you have Python 2.5+ installed",
- "Link it to python2"
- )
- for_more_information(
- see_installation_guide_section "Packages / Dependencies"
- )
- fix_and_rerun
- end
- end
end
@@ -682,6 +634,8 @@ namespace :gitlab do
namespace :ldap do
task :check, [:limit] => :environment do |t, args|
+ # Only show up to 100 results because LDAP directories can be very big.
+ # This setting only affects the `rake gitlab:check` script.
args.with_defaults(limit: 100)
warn_user_is_not_gitlab
start_checking "LDAP"
@@ -696,7 +650,7 @@ namespace :gitlab do
end
def print_users(limit)
- puts "LDAP users with access to your GitLab server (limit: #{limit}):"
+ puts "LDAP users with access to your GitLab server (only showing the first #{limit} results)"
ldap.search(attributes: attributes, filter: filter, size: limit, return_result: false) do |entry|
puts "DN: #{entry.dn}\t#{ldap_config.uid}: #{entry[ldap_config.uid]}"
end
diff --git a/lib/tasks/gitlab/enable_namespaces.rake b/lib/tasks/gitlab/enable_namespaces.rake
index 927748c0fd5..201f34ab546 100644
--- a/lib/tasks/gitlab/enable_namespaces.rake
+++ b/lib/tasks/gitlab/enable_namespaces.rake
@@ -43,13 +43,13 @@ namespace :gitlab do
username.gsub!("+", ".")
# return username if no matches
- return username unless User.find_by_username(username)
+ return username unless User.find_by(username: username)
# look for same username
(1..10).each do |i|
suffixed_username = "#{username}#{i}"
- return suffixed_username unless User.find_by_username(suffixed_username)
+ return suffixed_username unless User.find_by(username: suffixed_username)
end
end
diff --git a/lib/tasks/gitlab/import.rake b/lib/tasks/gitlab/import.rake
index 8fa89270854..cbfa736c84c 100644
--- a/lib/tasks/gitlab/import.rake
+++ b/lib/tasks/gitlab/import.rake
@@ -2,12 +2,12 @@ namespace :gitlab do
namespace :import do
# How to use:
#
- # 1. copy your bare repos under git repos_path
- # 2. run bundle exec rake gitlab:import:repos RAILS_ENV=production
+ # 1. copy the bare repos under the repos_path (commonly /home/git/repositories)
+ # 2. run: bundle exec rake gitlab:import:repos RAILS_ENV=production
#
# Notes:
- # * project owner will be a first admin
- # * existing projects will be skipped
+ # * The project owner will set to the first administator of the system
+ # * Existing projects will be skipped
#
desc "GITLAB | Import bare repositories from gitlab_shell -> repos_path into GitLab project instance"
task repos: :environment do
@@ -50,7 +50,7 @@ namespace :gitlab do
# find group namespace
if group_name
- group = Group.find_by_path(group_name)
+ group = Group.find_by(path: group_name)
# create group namespace
if !group
group = Group.new(:name => group_name)
@@ -66,7 +66,7 @@ namespace :gitlab do
project_params[:namespace_id] = group.id
end
- project = Projects::CreateContext.new(user, project_params).execute
+ project = Projects::CreateService.new(user, project_params).execute
if project.valid?
puts " * Created #{project.name} (#{repo_path})".green
diff --git a/public/500.html b/public/500.html
index 5b78e3e38cb..c84b9e90e4b 100644
--- a/public/500.html
+++ b/public/500.html
@@ -8,6 +8,6 @@
<h1>500</h1>
<h3>We're sorry, but something went wrong.</h3>
<hr/>
- <p>We've been notified about this issue and we'll take a look at it shortly.</p>
+ <p>Please contact your GitLab administrator if this problem persists.</p>
</body>
</html>
diff --git a/public/502.html b/public/502.html
new file mode 100644
index 00000000000..d171eccc927
--- /dev/null
+++ b/public/502.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>GitLab is not responding (502)</title>
+ <link href="/static.css" media="screen" rel="stylesheet" type="text/css" />
+</head>
+<body>
+ <h1>502</h1>
+ <h3>GitLab is not responding.</h3>
+ <hr/>
+ <p>Please contact your GitLab administrator if this problem persists.</p>
+</body>
+</html>
diff --git a/public/gitlab_logo.png b/public/gitlab_logo.png
index e3cda5978ab..dbe6dabb784 100644
--- a/public/gitlab_logo.png
+++ b/public/gitlab_logo.png
Binary files differ
diff --git a/script/background_jobs b/script/background_jobs
index 623e26a2831..06125c11ffe 100755
--- a/script/background_jobs
+++ b/script/background_jobs
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
cd $(dirname $0)/..
app_root=$(pwd)
diff --git a/script/web b/script/web
index 5464ed040aa..1ad3b5d24b9 100755
--- a/script/web
+++ b/script/web
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
cd $(dirname $0)/..
app_root=$(pwd)
diff --git a/spec/contexts/filter_context_spec.rb b/spec/contexts/filter_context_spec.rb
deleted file mode 100644
index 06aef5d7ed1..00000000000
--- a/spec/contexts/filter_context_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'spec_helper'
-
-describe FilterContext do
- let(:user) { create :user }
- let(:user2) { create :user }
- let(:project1) { create(:project) }
- let(:project2) { create(:project) }
- let(:merge_request1) { create(:merge_request, author: user, source_project: project1, target_project: project2) }
- let(:merge_request2) { create(:merge_request, author: user, source_project: project2, target_project: project1) }
- let(:merge_request3) { create(:merge_request, author: user, source_project: project2, target_project: project2) }
- let(:issue1) { create(:issue, assignee: user, project: project1) }
- let(:issue2) { create(:issue, assignee: user, project: project2) }
- let(:issue3) { create(:issue, assignee: user2, project: project2) }
-
- before do
- project1.team << [user, :master]
- project2.team << [user, :developer]
- end
-
- describe 'merge requests' do
- before :each do
- merge_request1
- merge_request2
- merge_request3
- end
-
- it 'should filter by scope' do
- params = { scope: 'authored' }
- merge_requests = FilterContext.new(MergeRequest, user, params).execute
- merge_requests.size.should == 3
- end
-
- it 'should filter by project' do
- params = { project_id: project1.id, scope: 'authored' }
- merge_requests = FilterContext.new(MergeRequest, user, params).execute
- merge_requests.size.should == 1
- end
- end
-
- describe 'issues' do
- before :each do
- issue1
- issue2
- issue3
- end
-
- it 'should filter by all' do
- params = { scope: "all" }
- issues = FilterContext.new(Issue, user, params).execute
- issues.size.should == 3
- end
-
- it 'should filter by assignee' do
- params = {}
- issues = FilterContext.new(Issue, user, params).execute
- issues.size.should == 2
- end
-
- it 'should filter by project' do
- params = { project_id: project1.id }
- issues = FilterContext.new(Issue, user, params).execute
- issues.size.should == 1
- end
- end
-end
diff --git a/spec/contexts/issues/list_context_spec.rb b/spec/contexts/issues/list_context_spec.rb
deleted file mode 100644
index 70ce956499c..00000000000
--- a/spec/contexts/issues/list_context_spec.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'spec_helper'
-
-describe Issues::ListContext do
-
- let(:user) { create(:user) }
- let(:project) { create(:project, creator: user) }
-
- titles = ['foo','bar','baz']
- titles.each_with_index do |title, index|
- let!(title.to_sym) { create(:issue, title: title, project: project, created_at: Time.now - (index * 60)) }
- end
-
- describe 'sorting' do
- it 'sorts by newest' do
- params = {sort: 'newest'}
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq foo
- end
-
- it 'sorts by oldest' do
- params = {sort: 'oldest'}
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq baz
- end
-
- it 'sorts by recently updated' do
- params = {sort: 'recently_updated'}
- baz.updated_at = Time.now + 10
- baz.save
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq baz
- end
-
- it 'sorts by least recently updated' do
- params = {sort: 'last_updated'}
- bar.updated_at = Time.now - 10
- bar.save
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq bar
- end
-
- describe 'sorting by milestone' do
- let(:newer_due_milestone) { create(:milestone, due_date: '2013-12-11') }
- let(:later_due_milestone) { create(:milestone, due_date: '2013-12-12') }
-
- before :each do
- foo.milestone = newer_due_milestone
- foo.save
- bar.milestone = later_due_milestone
- bar.save
- end
-
- it 'sorts by most recently due milestone' do
- params = {sort: 'milestone_due_soon'}
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq foo
-
- end
-
- it 'sorts by least recently due milestone' do
- params = {sort: 'milestone_due_later'}
-
- issues = Issues::ListContext.new(project, user, params).execute
- issues.first.should eq bar
- end
- end
- end
-end
diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb
index 479d8fc1a1d..cea6922e1c3 100644
--- a/spec/controllers/blob_controller_spec.rb
+++ b/spec/controllers/blob_controller_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Projects::BlobController do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
before do
diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb
index fdf0884f4e2..f5822157ea4 100644
--- a/spec/controllers/commit_controller_spec.rb
+++ b/spec/controllers/commit_controller_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Projects::CommitController do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
let(:commit) { project.repository.commit("master") }
diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb
index 8263afc97a2..fbf4f29acfd 100644
--- a/spec/controllers/commits_controller_spec.rb
+++ b/spec/controllers/commits_controller_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Projects::CommitsController do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
before do
diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb
index 69708edd8b1..1502bded97f 100644
--- a/spec/controllers/merge_requests_controller_spec.rb
+++ b/spec/controllers/merge_requests_controller_spec.rb
@@ -1,9 +1,9 @@
require 'spec_helper'
describe Projects::MergeRequestsController do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
- let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "bcf03b5d~3", source_branch: "bcf03b5d") }
+ let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "stable", source_branch: "master") }
before do
sign_in(user)
@@ -61,7 +61,7 @@ describe Projects::MergeRequestsController do
it "should really be a git email patch with commit" do
get :show, project_id: project.to_param, id: merge_request.iid, format: format
- expect(response.body[0..100]).to start_with("From #{merge_request.commits.last.id}")
+ expect(response.body[0..100]).to start_with("From 6ea87c47f0f8a24ae031c3fff17bc913889ecd00")
end
it "should contain git diffs" do
diff --git a/spec/controllers/profile_keys_controller_spec.rb b/spec/controllers/profile_keys_controller_spec.rb
new file mode 100644
index 00000000000..121012d5d49
--- /dev/null
+++ b/spec/controllers/profile_keys_controller_spec.rb
@@ -0,0 +1,49 @@
+require 'spec_helper'
+
+describe Profiles::KeysController do
+ let(:user) { create(:user) }
+
+ describe "#get_keys" do
+ describe "non existant user" do
+ it "should generally not work" do
+ get :get_keys, username: 'not-existent'
+
+ expect(response).not_to be_success
+ end
+ end
+
+ describe "user with no keys" do
+ it "should generally work" do
+ get :get_keys, username: user.username
+
+ expect(response).to be_success
+ end
+
+ it "should render all keys separated with a new line" do
+ get :get_keys, username: user.username
+
+ expect(response.body).to eq("")
+ end
+ end
+
+ describe "user with keys" do
+ before do
+ user.keys << create(:key)
+ user.keys << create(:another_key)
+ end
+
+ it "should generally work" do
+ get :get_keys, username: user.username
+
+ expect(response).to be_success
+ end
+
+ it "should render all keys separated with a new line" do
+ get :get_keys, username: user.username
+
+ expect(response.body).not_to eq("")
+ expect(response.body).to eq(user.all_ssh_keys.join("\n"))
+ end
+ end
+ end
+end
diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb
index bb1232e6264..479118a3465 100644
--- a/spec/controllers/tree_controller_spec.rb
+++ b/spec/controllers/tree_controller_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Projects::TreeController do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
before do
diff --git a/spec/factories.rb b/spec/factories.rb
index daf84173648..7fc2b7c5e97 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -27,43 +27,26 @@ FactoryGirl.define do
factory :admin, traits: [:admin]
end
- factory :project do
+ factory :empty_project, class: 'Project' do
sequence(:name) { |n| "project#{n}" }
path { name.downcase.gsub(/\s/, '_') }
namespace
creator
-
- trait :source do
- sequence(:name) { |n| "source project#{n}" }
- end
- trait :target do
- sequence(:name) { |n| "target project#{n}" }
- end
-
- factory :source_project, traits: [:source]
- factory :target_project, traits: [:target]
end
-
- factory :redmine_project, parent: :project do
- issues_tracker { "redmine" }
- issues_tracker_id { "project_name_in_redmine" }
- end
-
- factory :project_with_code, parent: :project do
+ # Generates a test repository from the repository stored under `spec/seed_project.tar.gz`.
+ # Once you run `rake gitlab:setup`, you can see what the repository looks like under `tmp/repositories/gitlabhq`.
+ # In order to modify files in the repository, you must untar the seed, modify and remake the tar.
+ # Before recompressing, do not forget to `git checkout master`.
+ # After recompressing, you need to run `RAILS_ENV=test bundle exec rake gitlab:setup` to regenerate the seeds under tmp.
+ #
+ # If you want to modify the repository only for an specific type of tests, e.g., markdown tests,
+ # consider using a feature branch to reduce the chances of collision with other tests.
+ # Create a new commit, and use the same commit message that you will use for the change in the main repo.
+ # Changing the commig message and SHA of branch `master` may break tests.
+ factory :project, parent: :empty_project do
path { 'gitlabhq' }
- trait :source_path do
- path { 'source_gitlabhq' }
- end
-
- trait :target_path do
- path { 'target_gitlabhq' }
- end
-
- factory :source_project_with_code, traits: [:source, :source_path]
- factory :target_project_with_code, traits: [:target, :target_path]
-
after :create do |project|
TestEnv.clear_repo_dir(project.namespace, project.path)
TestEnv.reset_satellite_dir
@@ -71,6 +54,11 @@ FactoryGirl.define do
end
end
+ factory :redmine_project, parent: :project do
+ issues_tracker { "redmine" }
+ issues_tracker_id { "project_name_in_redmine" }
+ end
+
factory :group do
sequence(:name) { |n| "group#{n}" }
path { name.downcase.gsub(/\s/, '_') }
@@ -109,25 +97,45 @@ FactoryGirl.define do
factory :merge_request do
title
author
- source_project factory: :source_project_with_code
- target_project factory: :target_project_with_code
+ source_project factory: :project
+ target_project { source_project }
+
+ # → git log stable..master --pretty=oneline
+ # b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828 tree css fixes
+ # 8716fc78f3c65bbf7bcf7b574febd583bc5d2812 Added loading animation for notes
+ # cd5c4bac5042c5469dcdf7e7b2f768d3c6fd7088 notes count for wall
+ # 8470d70da67355c9c009e4401746b1d5410af2e3 notes controller refactored
+ # 1e689bfba39525ead225eaf611948cfbe8ac34cf fixed notes logic
+ # f0f14c8eaba69ebddd766498a9d0b0e79becd633 finished scss refactoring
+ # 3a4b4fb4cde7809f033822a171b9feae19d41fff Moving ui styles to one scss file, Added ui class to body
+ # 065c200c33f68c2bb781e35a43f9dc8138a893b5 removed unnecessary hr tags & titles
+ # 1e8b111be85df0db6c8000ef9a710bc0221eae83 Merge branch 'master' of github.com:gitlabhq/gitlabhq
+ # f403da73f5e62794a0447aca879360494b08f678 Fixed ajax loading image. Fixed wrong wording
+ # e6ea73c77600d413d370249b8e392734f7d1dbee Merge pull request #468 from bencevans/patch-1
+ # 4a3c05b69355deee25767a74d0512ec4b510d4ef Merge pull request #470 from bgondy/patch-1
+ # 0347fe2412eb51d3efeccc35210e9268bc765ac5 Update app/views/projects/team.html.haml
+ # 2b5c61bdece1f7eb2b901ceea7d364065cdf76ac Title for a link fixed
+ # 460eeb13b7560b40104044973ff933b1a6dbbcaa Increased count of notes loaded when visit wall page
+ # 21c141afb1c53a9180a99d2cca29ffa613eb7e3a Merge branch 'notes_refactoring'
+ # 292a41cbe295f16f7148913b31eb0fb91f3251c3 Fixed comments for snippets. Tests fixed
+ # d41d8ffb02fa74fd4571603548bd7e401ec99e0c Reply button, Comments for Merge Request diff
+ # b1a36b552be2a7a6bc57fbed6c52dc6ed82111f8 Merge pull request #466 from skroutz/no-rbenv
+ # db75dae913e8365453ca231f101b067314a7ea71 Merge pull request #465 from skroutz/branches_commit_link
+ # 75f040fbfe4b5af23ff004ad3207c3976df097a8 Don't enforce rbenv version
+ # e42fb4fda475370dcb0d8f8f1268bfdc7a0cc437 Fix broken commit link in branches page
+ # 215a01f63ccdc085f75a48f6f7ab6f2b15b5852c move notes login to one controller
+ # 81092c01984a481e312de10a28e3f1a6dda182a3 Status codes for errors, New error pages
+ # 7d279f9302151e3c8f4c5df9c5200a72799409b9 better error handling for not found resource, gitolite error
+ # 9e6d0710e927aa8ea834b8a9ae9f277be617ac7d Merge pull request #443 from CedricGatay/fix/incorrectLineNumberingInDiff
+ # 6ea87c47f0f8a24ae031c3fff17bc913889ecd00 Incorrect line numbering in diff
+ #
+ # → git log master..stable --pretty=oneline
+ # empty
+
source_branch "master"
target_branch "stable"
- # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
trait :with_diffs do
- target_branch "master" # pretend bcf03b5d~3
- source_branch "stable" # pretend bcf03b5d
- st_commits do
- [
- source_project.repository.commit('bcf03b5d').to_hash,
- source_project.repository.commit('bcf03b5d~1').to_hash,
- source_project.repository.commit('bcf03b5d~2').to_hash
- ]
- end
- st_diffs do
- source_project.repo.diff("bcf03b5d~3", "bcf03b5d")
- end
end
trait :closed do
@@ -156,7 +164,7 @@ FactoryGirl.define do
factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
trait :on_commit do
- project factory: :project_with_code
+ project factory: :project
commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
noteable_type "Commit"
end
@@ -166,7 +174,7 @@ FactoryGirl.define do
end
trait :on_merge_request do
- project factory: :project_with_code
+ project factory: :project
noteable_id 1
noteable_type "MergeRequest"
end
@@ -209,12 +217,31 @@ FactoryGirl.define do
end
end
+ factory :another_key do
+ key do
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmTillFzNTrrGgwaCKaSj+QCz81E6jBc/s9av0+3b1Hwfxgkqjl4nAK/OD2NjgyrONDTDfR8cRN4eAAy6nY8GLkOyYBDyuc5nTMqs5z3yVuTwf3koGm/YQQCmo91psZ2BgDFTor8SVEE5Mm1D1k3JDMhDFxzzrOtRYFPci9lskTJaBjpqWZ4E9rDTD2q/QZntCqbC3wE9uSemRQB5f8kik7vD/AD8VQXuzKladrZKkzkONCPWsXDspUitjM8HkQdOf0PsYn1CMUC1xKYbCxkg5TkEosIwGv6CoEArUrdu/4+10LVslq494mAvEItywzrluCLCnwELfW+h/m8UHoVhZ"
+ end
+ end
+
factory :invalid_key do
key do
"ssh-rsa this_is_invalid_key=="
end
end
end
+
+ factory :email do
+ user
+ email do
+ Faker::Internet.email('alias')
+ end
+
+ factory :another_email do
+ email do
+ Faker::Internet.email('another.alias')
+ end
+ end
+ end
factory :milestone do
title
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
index 6f5d51d16b6..62f44690349 100644
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ b/spec/features/atom/dashboard_issues_spec.rb
@@ -8,6 +8,11 @@ describe "Dashboard Issues Feed" do
let!(:issue1) { create(:issue, author: user, assignee: user, project: project1) }
let!(:issue2) { create(:issue, author: user, assignee: user, project: project2) }
+ before do
+ project1.team << [user, :master]
+ project2.team << [user, :master]
+ end
+
describe "atom feed" do
it "should render atom feed via private token" do
visit issues_dashboard_path(:atom, private_token: user.private_token)
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
index 2ea569a6208..a507f0314c6 100644
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/gitlab_flavored_markdown_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe "GitLab Flavored Markdown" do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:issue) { create(:issue, project: project) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:fred) do
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index 538a6ee9fc9..b9dab7846b1 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -43,6 +43,31 @@ describe "Issues" do
page.should have_content project.name
end
end
+
+ end
+
+ describe "Editing issue assignee" do
+ let!(:issue) do
+ create(:issue,
+ author: @user,
+ assignee: @user,
+ project: project)
+ end
+
+ it 'allows user to select unasigned', :js => true do
+ visit edit_project_issue_path(project, issue)
+
+ page.should have_content "Assign to #{@user.name}"
+
+ page.first('#s2id_issue_assignee_id').click
+ sleep 2 # wait for ajax stuff to complete
+ page.first('.user-result').click
+
+ click_button "Save changes"
+
+ page.should have_content "Assignee: Select assignee"
+ issue.reload.assignee.should be_nil
+ end
end
describe "Filter issue" do
@@ -183,10 +208,10 @@ describe "Issues" do
it 'with dropdown menu' do
visit project_issue_path(project, issue)
- find('.edit-issue.inline-update').select(project.team.members.first.name, from: 'issue_assignee_id')
+ find('.edit-issue.inline-update #issue_assignee_id').set project.team.members.first.id
click_button 'Update Issue'
- page.should have_content "currently assigned to"
+ page.should have_content "Assignee:"
page.has_select?('issue_assignee_id', :selected => project.team.members.first.name)
end
end
@@ -206,11 +231,9 @@ describe "Issues" do
login_with guest
visit project_issue_path(project, issue)
- page.should have_content "currently assigned to #{issue.assignee.name}"
-
+ page.should have_content issue.assignee.name
end
end
-
end
describe 'update milestone from issue#show' do
@@ -222,22 +245,19 @@ describe "Issues" do
it 'with dropdown menu' do
visit project_issue_path(project, issue)
- p find('.edit-issue.inline-update').text
-
find('.edit-issue.inline-update').select(milestone.title, from: 'issue_milestone_id')
click_button 'Update Issue'
- page.should have_content "Attached to milestone"
+ page.should have_content "Milestone"
page.has_select?('issue_assignee_id', :selected => milestone.title)
end
end
context 'by unauthorized user' do
-
let(:guest) { create(:user) }
before :each do
- project.team << [[guest], :guest]
+ project.team << [guest, :guest]
issue.milestone = milestone
issue.save
end
@@ -247,8 +267,29 @@ describe "Issues" do
login_with guest
visit project_issue_path(project, issue)
+ page.should have_content milestone.title
+ end
+ end
+
+ describe 'removing assignee' do
+ let(:user2) { create(:user) }
+
+ before :each do
+ issue.assignee = user2
+ issue.save
+ end
+
+ it 'allows user to remove assignee', :js => true do
+ visit project_issue_path(project, issue)
+ page.should have_content "Assignee: #{user2.name}"
+
+ page.first('#s2id_issue_assignee_id').click
+ sleep 2 # wait for ajax stuff to complete
+ page.first('.user-result').click
- page.should have_content "Attached to milestone #{milestone.title}"
+ page.should have_content "Assignee: Unassigned"
+ sleep 2 # wait for ajax stuff to complete
+ issue.reload.assignee.should be_nil
end
end
end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index b534548a122..a3d8c462bf6 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe "On a merge request", js: true do
- let!(:project) { create(:project_with_code) }
+ let!(:project) { create(:project) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let!(:note) { create(:note_on_merge_request_with_attachment, project: project) }
@@ -135,7 +135,7 @@ describe "On a merge request", js: true do
end
describe "On a merge request diff", js: true, focus: true do
- let!(:project) { create(:source_project_with_code) }
+ let!(:project) { create(:project) }
let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
before do
@@ -149,7 +149,7 @@ describe "On a merge request diff", js: true, focus: true do
describe "when adding a note" do
before do
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
end
describe "the notes holder" do
@@ -159,23 +159,14 @@ describe "On a merge request diff", js: true, focus: true do
end
describe "the note form" do
- # FIXME
- #it 'should be valid' do
- #within(".js-temp-notes-holder") { find("#note_noteable_type").value.should == "MergeRequest" }
- #within(".js-temp-notes-holder") { find("#note_noteable_id").value.should == merge_request.id.to_s }
- #within(".js-temp-notes-holder") { find("#note_commit_id").value.should == "" }
- #within(".js-temp-notes-holder") { find("#note_line_code").value.should == "4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185" }
- #should have_css(".js-close-discussion-note-form", text: "Cancel")
- #end
-
it "shouldn't add a second form for same row" do
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
- should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185'] + .js-temp-notes-holder form", count: 1)
+ should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder form", count: 1)
end
it "should be removed when canceled" do
- within(".file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185']") do
+ within(".diff-file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185']") do
find(".js-close-discussion-note-form").trigger("click")
end
@@ -185,11 +176,11 @@ describe "On a merge request diff", js: true, focus: true do
end
describe "with muliple note forms" do
- let!(:project) { create(:source_project_with_code) }
+ let!(:project) { create(:project) }
let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
before do
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click
end
@@ -198,7 +189,7 @@ describe "On a merge request diff", js: true, focus: true do
describe "previewing them separately" do
before do
# add two separate texts and trigger previews on both
- within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185'] + .js-temp-notes-holder") do
+ within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "One comment on line 185"
find(".js-note-preview-button").trigger("click")
end
diff --git a/spec/features/security/group_access_spec.rb b/spec/features/security/group/group_access_spec.rb
index dea957962a8..c262d76ab54 100644
--- a/spec/features/security/group_access_spec.rb
+++ b/spec/features/security/group/group_access_spec.rb
@@ -14,6 +14,7 @@ describe "Group access" do
let(:master) { create(:user) }
let(:reporter) { create(:user) }
let(:guest) { create(:user) }
+ let(:nonmember) { create(:user) }
before do
group.add_user(owner, Gitlab::Access::OWNER)
diff --git a/spec/features/security/group/internal_group_access_spec.rb b/spec/features/security/group/internal_group_access_spec.rb
new file mode 100644
index 00000000000..0c354f02456
--- /dev/null
+++ b/spec/features/security/group/internal_group_access_spec.rb
@@ -0,0 +1,82 @@
+require 'spec_helper'
+
+describe "Group with internal project access" do
+ describe "Group" do
+ let(:group) { create(:group) }
+
+ let(:owner) { create(:owner) }
+ let(:master) { create(:user) }
+ let(:reporter) { create(:user) }
+ let(:guest) { create(:user) }
+ let(:nonmember) { create(:user) }
+
+ before do
+ group.add_user(owner, Gitlab::Access::OWNER)
+ group.add_user(master, Gitlab::Access::MASTER)
+ group.add_user(reporter, Gitlab::Access::REPORTER)
+ group.add_user(guest, Gitlab::Access::GUEST)
+
+ create(:project, group: group, visibility_level: Gitlab::VisibilityLevel::INTERNAL)
+ end
+
+ describe "GET /groups/:path" do
+ subject { group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_denied_for :visitor }
+ end
+
+ describe "GET /groups/:path/issues" do
+ subject { issues_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_denied_for :visitor }
+ end
+
+ describe "GET /groups/:path/merge_requests" do
+ subject { merge_requests_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_denied_for :visitor }
+ end
+
+ describe "GET /groups/:path/members" do
+ subject { members_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_denied_for :visitor }
+ end
+
+ describe "GET /groups/:path/edit" do
+ subject { edit_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_denied_for master }
+ it { should be_denied_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_denied_for guest }
+ it { should be_denied_for :user }
+ it { should be_denied_for :visitor }
+ end
+ end
+end
diff --git a/spec/features/security/group/mixed_group_access_spec.rb b/spec/features/security/group/mixed_group_access_spec.rb
new file mode 100644
index 00000000000..82e816e388a
--- /dev/null
+++ b/spec/features/security/group/mixed_group_access_spec.rb
@@ -0,0 +1,83 @@
+require 'spec_helper'
+
+describe "Group access" do
+ describe "Group" do
+ let(:group) { create(:group) }
+
+ let(:owner) { create(:owner) }
+ let(:master) { create(:user) }
+ let(:reporter) { create(:user) }
+ let(:guest) { create(:user) }
+ let(:nonmember) { create(:user) }
+
+ before do
+ group.add_user(owner, Gitlab::Access::OWNER)
+ group.add_user(master, Gitlab::Access::MASTER)
+ group.add_user(reporter, Gitlab::Access::REPORTER)
+ group.add_user(guest, Gitlab::Access::GUEST)
+
+ create(:project, path: "internal_project", group: group, visibility_level: Gitlab::VisibilityLevel::INTERNAL)
+ create(:project, path: "public_project", group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ describe "GET /groups/:path" do
+ subject { group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/issues" do
+ subject { issues_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/merge_requests" do
+ subject { merge_requests_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/members" do
+ subject { members_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/edit" do
+ subject { edit_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_denied_for master }
+ it { should be_denied_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_denied_for guest }
+ it { should be_denied_for :user }
+ it { should be_denied_for :visitor }
+ end
+ end
+end
diff --git a/spec/features/security/group/public_group_access_spec.rb b/spec/features/security/group/public_group_access_spec.rb
new file mode 100644
index 00000000000..a9c0afbb60f
--- /dev/null
+++ b/spec/features/security/group/public_group_access_spec.rb
@@ -0,0 +1,82 @@
+require 'spec_helper'
+
+describe "Group with public project access" do
+ describe "Group" do
+ let(:group) { create(:group) }
+
+ let(:owner) { create(:owner) }
+ let(:master) { create(:user) }
+ let(:reporter) { create(:user) }
+ let(:guest) { create(:user) }
+ let(:nonmember) { create(:user) }
+
+ before do
+ group.add_user(owner, Gitlab::Access::OWNER)
+ group.add_user(master, Gitlab::Access::MASTER)
+ group.add_user(reporter, Gitlab::Access::REPORTER)
+ group.add_user(guest, Gitlab::Access::GUEST)
+
+ create(:project, group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ describe "GET /groups/:path" do
+ subject { group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/issues" do
+ subject { issues_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/merge_requests" do
+ subject { merge_requests_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/members" do
+ subject { members_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_allowed_for master }
+ it { should be_allowed_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_allowed_for guest }
+ it { should be_allowed_for :user }
+ it { should be_allowed_for :visitor }
+ end
+
+ describe "GET /groups/:path/edit" do
+ subject { edit_group_path(group) }
+
+ it { should be_allowed_for owner }
+ it { should be_denied_for master }
+ it { should be_denied_for reporter }
+ it { should be_allowed_for :admin }
+ it { should be_denied_for guest }
+ it { should be_denied_for :user }
+ it { should be_denied_for :visitor }
+ end
+ end
+end
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 5abccd259d4..8bb1e259efa 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe "Internal Project Access" do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:master) { create(:user) }
let(:guest) { create(:user) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index 481d8cec416..0402ff39735 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe "Private Project Access" do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:master) { create(:user) }
let(:guest) { create(:user) }
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index 3f1016473f5..7e6a39fad69 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe "Public Project Access" do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:master) { create(:user) }
let(:guest) { create(:user) }
diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb
new file mode 100644
index 00000000000..7489e56f423
--- /dev/null
+++ b/spec/finders/issues_finder_spec.rb
@@ -0,0 +1,58 @@
+require 'spec_helper'
+
+describe IssuesFinder do
+ let(:user) { create :user }
+ let(:user2) { create :user }
+ let(:project1) { create(:project) }
+ let(:project2) { create(:project) }
+ let(:issue1) { create(:issue, assignee: user, project: project1) }
+ let(:issue2) { create(:issue, assignee: user, project: project2) }
+ let(:issue3) { create(:issue, assignee: user2, project: project2) }
+
+ before do
+ project1.team << [user, :master]
+ project2.team << [user, :developer]
+ project2.team << [user2, :developer]
+ end
+
+ describe :execute do
+ before :each do
+ issue1
+ issue2
+ issue3
+ end
+
+ it 'should filter by all' do
+ params = { scope: "all", state: 'opened' }
+ issues = IssuesFinder.new.execute(user, params)
+ issues.size.should == 3
+ end
+
+ it 'should filter by assignee' do
+ params = { scope: "assigned-to-me", state: 'opened' }
+ issues = IssuesFinder.new.execute(user, params)
+ issues.size.should == 2
+ end
+
+ it 'should filter by project' do
+ params = { scope: "assigned-to-me", state: 'opened', project_id: project1.id }
+ issues = IssuesFinder.new.execute(user, params)
+ issues.size.should == 1
+ end
+
+ it 'should be empty for unauthorized user' do
+ params = { scope: "all", state: 'opened' }
+ issues = IssuesFinder.new.execute(nil, params)
+ issues.size.should be_zero
+ end
+
+ it 'should not include unauthorized issues' do
+ params = { scope: "all", state: 'opened' }
+ issues = IssuesFinder.new.execute(user2, params)
+ issues.size.should == 2
+ issues.should_not include(issue1)
+ issues.should include(issue2)
+ issues.should include(issue3)
+ end
+ end
+end
diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb
new file mode 100644
index 00000000000..76f9e753dd2
--- /dev/null
+++ b/spec/finders/merge_requests_finder_spec.rb
@@ -0,0 +1,37 @@
+require 'spec_helper'
+
+describe MergeRequestsFinder do
+ let(:user) { create :user }
+ let(:user2) { create :user }
+ let(:project1) { create(:project) }
+ let(:project2) { create(:project) }
+ let(:merge_request1) { create(:merge_request, author: user, source_project: project1, target_project: project2) }
+ let(:merge_request2) { create(:merge_request, author: user, source_project: project2, target_project: project1) }
+ let(:merge_request3) { create(:merge_request, author: user, source_project: project2, target_project: project2) }
+
+ before do
+ project1.team << [user, :master]
+ project2.team << [user, :developer]
+ project2.team << [user2, :developer]
+ end
+
+ describe :execute do
+ before :each do
+ merge_request1
+ merge_request2
+ merge_request3
+ end
+
+ it 'should filter by scope' do
+ params = { scope: 'authored', state: 'opened' }
+ merge_requests = MergeRequestsFinder.new.execute(user, params)
+ merge_requests.size.should == 3
+ end
+
+ it 'should filter by project' do
+ params = { project_id: project1.id, scope: 'authored', state: 'opened' }
+ merge_requests = MergeRequestsFinder.new.execute(user, params)
+ merge_requests.size.should == 1
+ end
+ end
+end
diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb
new file mode 100644
index 00000000000..cc6ee82ab75
--- /dev/null
+++ b/spec/finders/projects_finder_spec.rb
@@ -0,0 +1,51 @@
+require 'spec_helper'
+
+describe ProjectsFinder do
+ let(:user) { create :user }
+ let(:group) { create :group }
+
+ let(:project1) { create(:empty_project, group: group, visibility_level: Project::PUBLIC) }
+ let(:project2) { create(:empty_project, group: group, visibility_level: Project::INTERNAL) }
+ let(:project3) { create(:empty_project, group: group, visibility_level: Project::PRIVATE) }
+ let(:project4) { create(:empty_project, group: group, visibility_level: Project::PRIVATE) }
+
+ context 'non authenticated' do
+ subject { ProjectsFinder.new.execute(nil, group: group) }
+
+ it { should include(project1) }
+ it { should_not include(project2) }
+ it { should_not include(project3) }
+ it { should_not include(project4) }
+ end
+
+ context 'authenticated' do
+ subject { ProjectsFinder.new.execute(user, group: group) }
+
+ it { should include(project1) }
+ it { should include(project2) }
+ it { should_not include(project3) }
+ it { should_not include(project4) }
+ end
+
+ context 'authenticated, project member' do
+ before { project3.team << [user, :developer] }
+
+ subject { ProjectsFinder.new.execute(user, group: group) }
+
+ it { should include(project1) }
+ it { should include(project2) }
+ it { should include(project3) }
+ it { should_not include(project4) }
+ end
+
+ context 'authenticated, group member' do
+ before { group.add_user(user, Gitlab::Access::DEVELOPER) }
+
+ subject { ProjectsFinder.new.execute(user, group: group) }
+
+ it { should include(project1) }
+ it { should include(project2) }
+ it { should include(project3) }
+ it { should include(project4) }
+ end
+end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 3644410e46d..c58c83a2970 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -39,6 +39,23 @@ describe ApplicationHelper do
end
end
+ describe "group_icon" do
+ avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
+
+ it "should return an url for the avatar" do
+ group = create(:group)
+ group.avatar = File.open(avatar_file_path)
+ group.save!
+ group_icon(group.path).to_s.should == "/uploads/group/avatar/#{ group.id }/gitlab_logo.png"
+ end
+
+ it "should give default avatar_icon when no avatar is present" do
+ group = create(:group)
+ group.save!
+ group_icon(group.path).to_s.should == "/assets/no_group_avatar.png"
+ end
+ end
+
describe "avatar_icon" do
avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 33e69d4326c..7e98b7944f1 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -4,7 +4,7 @@ describe GitlabMarkdownHelper do
include ApplicationHelper
include IssuesHelper
- let!(:project) { create(:project_with_code) }
+ let!(:project) { create(:project) }
let(:user) { create(:user, username: 'gfm') }
let(:commit) { project.repository.commit }
@@ -16,6 +16,7 @@ describe GitlabMarkdownHelper do
before do
# Helper expects a @project instance variable
@project = project
+ @repository = project.repository
end
describe "#gfm" do
@@ -347,8 +348,21 @@ describe GitlabMarkdownHelper do
it "should handle references in headers" do
actual = "\n# Working around ##{issue.iid}\n## Apply !#{merge_request.iid}"
- markdown(actual).should match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>})
- markdown(actual).should match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>})
+ markdown(actual, {no_header_anchors:true}).should match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>})
+ markdown(actual, {no_header_anchors:true}).should match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>})
+ end
+
+ it "should add ids and links to headers" do
+ # Test every rule except nested tags.
+ text = '..Ab_c-d. e..'
+ id = 'ab_c-d-e'
+ markdown("# #{text}").should match(%r{<h1 id="#{id}">#{text}<a href="[^"]*##{id}"></a></h1>})
+ markdown("# #{text}", {no_header_anchors:true}).should == "<h1>#{text}</h1>"
+
+ id = 'link-text'
+ markdown("# [link text](url) ![img alt](url)").should match(
+ %r{<h1 id="#{id}"><a href="[^"]*url">link text</a> <img[^>]*><a href="[^"]*##{id}"></a></h1>}
+ )
end
it "should handle references in lists" do
@@ -378,10 +392,10 @@ describe GitlabMarkdownHelper do
it "should leave code blocks untouched" do
helper.stub(:user_color_scheme_class).and_return(:white)
- target_html = "<div class=\"white\"><div class=\"highlight\"><pre><span class=\"n\">some</span> <span class=\"n\">code</span> <span class=\"n\">from</span> <span class=\"err\">$</span><span class=\"mi\">#{snippet.id}</span>"
+ target_html = "\n<div class=\"highlighted-data white\">\n <div class=\"highlight\">\n <pre><code class=\"\">some code from $#{snippet.id}\nhere too\n</code></pre>\n </div>\n</div>\n\n"
- helper.markdown("\n some code from $#{snippet.id}\n here too\n").should include(target_html)
- helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n").should include(target_html)
+ helper.markdown("\n some code from $#{snippet.id}\n here too\n").should == target_html
+ helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n").should == target_html
end
it "should leave inline code untouched" do
@@ -431,6 +445,24 @@ describe GitlabMarkdownHelper do
expected = "<p><a href=\"/#{project.path_with_namespace}/wikis/test/link\">Link</a></p>\n"
markdown(actual).should match(expected)
end
+
+ it "should handle relative urls in reference links for a file in master" do
+ actual = "[GitLab API doc][GitLab readme]\n [GitLab readme]: doc/api/README.md\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/blob/master/doc/api/README.md\">GitLab API doc</a></p>\n"
+ markdown(actual).should match(expected)
+ end
+
+ it "should handle relative urls in reference links for a directory in master" do
+ actual = "[GitLab API doc directory][GitLab readmes]\n [GitLab readmes]: doc/api/\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/tree/master/doc/api\">GitLab API doc directory</a></p>\n"
+ markdown(actual).should match(expected)
+ end
+
+ it "should not handle malformed relative urls in reference links for a file in master" do
+ actual = "[GitLab readme]: doc/api/README.md\n"
+ expected = ""
+ markdown(actual).should match(expected)
+ end
end
describe "#render_wiki_content" do
diff --git a/spec/helpers/notifications_helper_spec.rb b/spec/helpers/notifications_helper_spec.rb
index c1efc1fb2a0..dce28525ca4 100644
--- a/spec/helpers/notifications_helper_spec.rb
+++ b/spec/helpers/notifications_helper_spec.rb
@@ -8,7 +8,7 @@ describe NotificationsHelper do
before { notification.stub(disabled?: true) }
it "has a red icon" do
- notification_icon(notification).should match('class="icon-circle cred"')
+ notification_icon(notification).should match('class="icon-volume-off cred"')
end
end
@@ -16,7 +16,7 @@ describe NotificationsHelper do
before { notification.stub(participating?: true) }
it "has a blue icon" do
- notification_icon(notification).should match('class="icon-circle cblue"')
+ notification_icon(notification).should match('class="icon-volume-down cblue"')
end
end
@@ -24,7 +24,7 @@ describe NotificationsHelper do
before { notification.stub(watch?: true) }
it "has a green icon" do
- notification_icon(notification).should match('class="icon-circle cgreen"')
+ notification_icon(notification).should match('class="icon-volume-up cgreen"')
end
end
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index 33ecb980202..733f2754727 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -13,52 +13,41 @@ describe SearchHelper do
end
it "it returns nil" do
- search_autocomplete_source.should be_nil
+ search_autocomplete_opts("q").should be_nil
end
end
context "with a user" do
let(:user) { create(:user) }
- let(:result) { JSON.parse(search_autocomplete_source) }
before do
allow(self).to receive(:current_user).and_return(user)
end
it "includes Help sections" do
- result.select { |h| h['label'] =~ /^help:/ }.length.should == 9
+ search_autocomplete_opts("hel").size.should == 9
end
it "includes default sections" do
- result.count { |h| h['label'] =~ /^(My|Admin)\s/ }.should == 4
+ search_autocomplete_opts("adm").size.should == 1
end
it "includes the user's groups" do
create(:group).add_owner(user)
- result.count { |h| h['label'] =~ /^group:/ }.should == 1
+ search_autocomplete_opts("gro").size.should == 1
end
it "includes the user's projects" do
- create(:project, namespace: create(:namespace, owner: user))
- result.count { |h| h['label'] =~ /^project:/ }.should == 1
+ project = create(:project, namespace: create(:namespace, owner: user))
+ search_autocomplete_opts(project.name).size.should == 1
end
context "with a current project" do
- before { @project = create(:project_with_code) }
+ before { @project = create(:project) }
it "includes project-specific sections" do
- result.count { |h| h['label'] =~ /^#{@project.name_with_namespace} - / }.should == 11
- end
-
- it "uses @ref in urls if defined" do
- @ref = "foo_bar"
- result.count { |h| h['url'] == project_tree_path(@project, @ref) }.should == 1
- end
- end
-
- context "with no current project" do
- it "does not include project-specific sections" do
- result.count { |h| h['label'] =~ /Files$/ }.should == 0
+ search_autocomplete_opts("Files").size.should == 1
+ search_autocomplete_opts("Commits").size.should == 1
end
end
end
diff --git a/spec/helpers/submodule_helper_spec.rb b/spec/helpers/submodule_helper_spec.rb
new file mode 100644
index 00000000000..20378b1b17d
--- /dev/null
+++ b/spec/helpers/submodule_helper_spec.rb
@@ -0,0 +1,118 @@
+require 'spec_helper'
+
+describe SubmoduleHelper do
+ describe 'submodule links' do
+ let(:submodule_item) { double(id: 'hash', path: 'rack') }
+ let(:config) { Gitlab.config.gitlab }
+ let(:repo) { double() }
+
+ before do
+ self.instance_variable_set(:@repository, repo)
+ end
+
+ context 'submodule on self' do
+ before do
+ Gitlab.config.gitlab.stub(protocol: 'http') # set this just to be sure
+ end
+
+ it 'should detect ssh on standard port' do
+ Gitlab.config.gitlab.stub(ssh_port: 22) # set this just to be sure
+ stub_url([ config.user, '@', config.host, ':gitlab-org/gitlab-ce.git' ].join(''))
+ submodule_links(submodule_item).should == [ project_path('gitlab-org/gitlab-ce'), project_tree_path('gitlab-org/gitlab-ce', 'hash') ]
+ end
+
+ it 'should detect ssh on non-standard port' do
+ Gitlab.config.gitlab_shell.stub(ssh_port: 2222)
+ Gitlab.config.gitlab_shell.stub(ssh_path_prefix: Settings.send(:build_gitlab_shell_ssh_path_prefix))
+ stub_url([ 'ssh://', config.user, '@', config.host, ':2222/gitlab-org/gitlab-ce.git' ].join(''))
+ submodule_links(submodule_item).should == [ project_path('gitlab-org/gitlab-ce'), project_tree_path('gitlab-org/gitlab-ce', 'hash') ]
+ end
+
+ it 'should detect http on standard port' do
+ Gitlab.config.gitlab.stub(port: 80)
+ Gitlab.config.gitlab.stub(url: Settings.send(:build_gitlab_url))
+ stub_url([ 'http://', config.host, '/gitlab-org/gitlab-ce.git' ].join(''))
+ submodule_links(submodule_item).should == [ project_path('gitlab-org/gitlab-ce'), project_tree_path('gitlab-org/gitlab-ce', 'hash') ]
+ end
+
+ it 'should detect http on non-standard port' do
+ Gitlab.config.gitlab.stub(port: 3000)
+ Gitlab.config.gitlab.stub(url: Settings.send(:build_gitlab_url))
+ stub_url([ 'http://', config.host, ':3000/gitlab-org/gitlab-ce.git' ].join(''))
+ submodule_links(submodule_item).should == [ project_path('gitlab-org/gitlab-ce'), project_tree_path('gitlab-org/gitlab-ce', 'hash') ]
+ end
+
+ it 'should work with relative_url_root' do
+ Gitlab.config.gitlab.stub(port: 80) # set this just to be sure
+ Gitlab.config.gitlab.stub(relative_url_root: '/gitlab/root')
+ Gitlab.config.gitlab.stub(url: Settings.send(:build_gitlab_url))
+ stub_url([ 'http://', config.host, '/gitlab/root/gitlab-org/gitlab-ce.git' ].join(''))
+ submodule_links(submodule_item).should == [ project_path('gitlab-org/gitlab-ce'), project_tree_path('gitlab-org/gitlab-ce', 'hash') ]
+ end
+ end
+
+ context 'submodule on github.com' do
+ it 'should detect ssh' do
+ stub_url('git@github.com:gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should detect http' do
+ stub_url('http://github.com/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should detect https' do
+ stub_url('https://github.com/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should return original with non-standard url' do
+ stub_url('http://github.com/gitlab-org/gitlab-ce')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+
+ stub_url('http://github.com/another/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+ end
+ end
+
+ context 'submodule on gitlab.com' do
+ it 'should detect ssh' do
+ stub_url('git@gitlab.com:gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should detect http' do
+ stub_url('http://gitlab.com/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should detect https' do
+ stub_url('https://gitlab.com/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]
+ end
+
+ it 'should return original with non-standard url' do
+ stub_url('http://gitlab.com/gitlab-org/gitlab-ce')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+
+ stub_url('http://gitlab.com/another/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+ end
+ end
+
+ context 'submodule on unsupported' do
+ it 'should return original' do
+ stub_url('http://mygitserver.com/gitlab-org/gitlab-ce')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+
+ stub_url('http://mygitserver.com/gitlab-org/gitlab-ce.git')
+ submodule_links(submodule_item).should == [ repo.submodule_url_for, nil ]
+ end
+ end
+ end
+
+ def stub_url(url)
+ repo.stub(submodule_url_for: url)
+ end
+end
diff --git a/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb b/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
index b7d7bbaad2e..a0e74c49631 100644
--- a/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
+++ b/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
@@ -25,7 +25,7 @@ describe Gitlab::LDAP do
it "should update credentials by email if missing uid" do
user = double('User')
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: user
+ User.stub(:find_by).with(hash_including(email: anything())) { user }
user.should_receive :update_attributes
gl_auth.find_or_create(@auth)
end
@@ -35,8 +35,8 @@ describe Gitlab::LDAP do
value = Gitlab.config.ldap.allow_username_or_email_login
Gitlab.config.ldap['allow_username_or_email_login'] = true
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: nil
- User.stub find_by_username: user
+ User.stub(:find_by).with(hash_including(email: anything())) { nil }
+ User.stub(:find_by).with(hash_including(username: anything())) { user }
user.should_receive :update_attributes
gl_auth.find_or_create(@auth)
Gitlab.config.ldap['allow_username_or_email_login'] = value
@@ -47,8 +47,8 @@ describe Gitlab::LDAP do
value = Gitlab.config.ldap.allow_username_or_email_login
Gitlab.config.ldap['allow_username_or_email_login'] = false
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: nil
- User.stub find_by_username: user
+ User.stub(:find_by).with(hash_including(email: anything())) { nil }
+ User.stub(:find_by).with(hash_including(username: anything())) { user }
user.should_not_receive :update_attributes
gl_auth.find_or_create(@auth)
Gitlab.config.ldap['allow_username_or_email_login'] = value
diff --git a/spec/lib/gitlab/popen_spec.rb b/spec/lib/gitlab/popen_spec.rb
index 4791be41613..76d506eb3c0 100644
--- a/spec/lib/gitlab/popen_spec.rb
+++ b/spec/lib/gitlab/popen_spec.rb
@@ -10,7 +10,7 @@ describe 'Gitlab::Popen', no_db: true do
context 'zero status' do
before do
- @output, @status = @klass.new.popen('ls', path)
+ @output, @status = @klass.new.popen(%W(ls), path)
end
it { @status.should be_zero }
@@ -19,11 +19,27 @@ describe 'Gitlab::Popen', no_db: true do
context 'non-zero status' do
before do
- @output, @status = @klass.new.popen('cat NOTHING', path)
+ @output, @status = @klass.new.popen(%W(cat NOTHING), path)
end
it { @status.should == 1 }
it { @output.should include('No such file or directory') }
end
+
+ context 'unsafe string command' do
+ it 'raises an error when it gets called with a string argument' do
+ expect { @klass.new.popen('ls', path) }.to raise_error
+ end
+ end
+
+ context 'without a directory argument' do
+ before do
+ @output, @status = @klass.new.popen(%W(ls))
+ end
+
+ it { @status.should be_zero }
+ it { @output.should include('spec') }
+ end
+
end
diff --git a/spec/lib/gitlab/reference_extractor_spec.rb b/spec/lib/gitlab/reference_extractor_spec.rb
index 7d805f8c72a..19259a8b79c 100644
--- a/spec/lib/gitlab/reference_extractor_spec.rb
+++ b/spec/lib/gitlab/reference_extractor_spec.rb
@@ -43,7 +43,7 @@ describe Gitlab::ReferenceExtractor do
end
context 'with a project' do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
it 'accesses valid user objects on the project team' do
@u_foo = create(:user, username: 'foo')
diff --git a/spec/lib/gitlab/satellite/action_spec.rb b/spec/lib/gitlab/satellite/action_spec.rb
index 5e0a825c3c3..d65e7c42b7e 100644
--- a/spec/lib/gitlab/satellite/action_spec.rb
+++ b/spec/lib/gitlab/satellite/action_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe 'Gitlab::Satellite::Action' do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
describe '#prepare_satellite!' do
diff --git a/spec/lib/gitlab/satellite/merge_action_spec.rb b/spec/lib/gitlab/satellite/merge_action_spec.rb
index e40ff73b7f0..ef06c742846 100644
--- a/spec/lib/gitlab/satellite/merge_action_spec.rb
+++ b/spec/lib/gitlab/satellite/merge_action_spec.rb
@@ -2,20 +2,21 @@ require 'spec_helper'
describe 'Gitlab::Satellite::MergeAction' do
before(:each) do
-# TestEnv.init(mailer: false, init_repos: true, repos: true)
- @master = ['master', 'b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828']
+ @master = ['master', '69b34b7e9ad9f496f0ad10250be37d6265a03bba']
@one_after_stable = ['stable', '6ea87c47f0f8a24ae031c3fff17bc913889ecd00'] #this commit sha is one after stable
@wiki_branch = ['wiki', '635d3e09b72232b6e92a38de6cc184147e5bcb41'] #this is the commit sha where the wiki branch goes off from master
@conflicting_metior = ['metior', '313d96e42b313a0af5ab50fa233bf43e27118b3f'] #this branch conflicts with the wiki branch
- #these commits are quite close together, itended to make string diffs/format patches small
+ # these commits are quite close together, itended to make string diffs/format patches small
@close_commit1 = ['2_3_notes_fix', '8470d70da67355c9c009e4401746b1d5410af2e3']
@close_commit2 = ['scss_refactoring', 'f0f14c8eaba69ebddd766498a9d0b0e79becd633']
end
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project, namespace: create(:group)) }
+ let(:fork_project) { create(:project, namespace: create(:group)) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
- let(:merge_request_fork) { create(:merge_request) }
+ let(:merge_request_fork) { create(:merge_request, source_project: fork_project, target_project: project) }
+
describe '#commits_between' do
def verify_commits(commits, first_commit_sha, last_commit_sha)
commits.each { |commit| commit.class.should == Gitlab::Git::Commit }
@@ -145,4 +146,4 @@ describe 'Gitlab::Satellite::MergeAction' do
end
end
end
-end \ No newline at end of file
+end
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index b1e53486816..6ba4d97ad4a 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -4,8 +4,9 @@ describe Notify do
include EmailSpec::Helpers
include EmailSpec::Matchers
+ let(:gitlab_sender) { Gitlab.config.gitlab.email_from }
let(:recipient) { create(:user, email: 'recipient@example.com') }
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
shared_examples 'a multiple recipients email' do
it 'is sent to the given recipient' do
@@ -13,18 +14,28 @@ describe Notify do
end
end
+ shared_examples 'an email sent from GitLab' do
+ it 'is sent from GitLab' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq('GitLab')
+ sender.address.should eq(gitlab_sender)
+ end
+ end
+
describe 'for new users, the email' do
let(:example_site_path) { root_path }
let(:new_user) { create(:user, email: 'newguy@example.com', created_by_id: 1) }
subject { Notify.new_user_email(new_user.id, new_user.password) }
+ it_behaves_like 'an email sent from GitLab'
+
it 'is sent to the new user' do
should deliver_to new_user.email
end
it 'has the correct subject' do
- should have_subject /^gitlab \| Account was created for you$/i
+ should have_subject /^Account was created for you$/i
end
it 'contains the new user\'s login name' do
@@ -47,12 +58,14 @@ describe Notify do
subject { Notify.new_user_email(new_user.id, new_user.password) }
+ it_behaves_like 'an email sent from GitLab'
+
it 'is sent to the new user' do
should deliver_to new_user.email
end
it 'has the correct subject' do
- should have_subject /^gitlab \| Account was created for you$/i
+ should have_subject /^Account was created for you$/i
end
it 'contains the new user\'s login name' do
@@ -73,12 +86,14 @@ describe Notify do
subject { Notify.new_ssh_key_email(key.id) }
+ it_behaves_like 'an email sent from GitLab'
+
it 'is sent to the new user' do
should deliver_to key.user.email
end
it 'has the correct subject' do
- should have_subject /^gitlab \| SSH key was added to your account$/i
+ should have_subject /^SSH key was added to your account$/i
end
it 'contains the new ssh key title' do
@@ -90,19 +105,48 @@ describe Notify do
end
end
+ describe 'user added email' do
+ let(:email) { create(:email) }
+
+ subject { Notify.new_email_email(email.id) }
+
+ it 'is sent to the new user' do
+ should deliver_to email.user.email
+ end
+
+ it 'has the correct subject' do
+ should have_subject /^Email was added to your account$/i
+ end
+
+ it 'contains the new email address' do
+ should have_body_text /#{email.email}/
+ end
+
+ it 'includes a link to emails page' do
+ should have_body_text /#{profile_emails_path}/
+ end
+ end
+
context 'for a project' do
describe 'items that are assignable, the email' do
+ let(:current_user) { create(:user, email: "current@email.com") }
let(:assignee) { create(:user, email: 'assignee@example.com') }
let(:previous_assignee) { create(:user, name: 'Previous Assignee') }
shared_examples 'an assignee email' do
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(current_user.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'is sent to the assignee' do
should deliver_to assignee.email
end
end
context 'for issues' do
- let(:issue) { create(:issue, assignee: assignee, project: project ) }
+ let(:issue) { create(:issue, author: current_user, assignee: assignee, project: project ) }
describe 'that are new' do
subject { Notify.new_issue_email(issue.assignee_id, issue.id) }
@@ -110,7 +154,7 @@ describe Notify do
it_behaves_like 'an assignee email'
it 'has the correct subject' do
- should have_subject /#{project.name} \| New issue ##{issue.iid} \| #{issue.title}/
+ should have_subject /#{project.name} \| #{issue.title} \(##{issue.iid}\)/
end
it 'contains a link to the new issue' do
@@ -119,14 +163,18 @@ describe Notify do
end
describe 'that have been reassigned' do
- before(:each) { issue.stub(:assignee_id_was).and_return(previous_assignee.id) }
-
- subject { Notify.reassigned_issue_email(recipient.id, issue.id, previous_assignee.id) }
+ subject { Notify.reassigned_issue_email(recipient.id, issue.id, previous_assignee.id, current_user) }
it_behaves_like 'a multiple recipients email'
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(current_user.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'has the correct subject' do
- should have_subject /Changed issue ##{issue.iid} \| #{issue.title}/
+ should have_subject /#{issue.title} \(##{issue.iid}\)/
end
it 'contains the name of the previous assignee' do
@@ -143,12 +191,17 @@ describe Notify do
end
describe 'status changed' do
- let(:current_user) { create(:user, email: "current@email.com") }
let(:status) { 'closed' }
subject { Notify.issue_status_changed_email(recipient.id, issue.id, status, current_user) }
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(current_user.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'has the correct subject' do
- should have_subject /Changed issue ##{issue.iid} \| #{issue.title}/i
+ should have_subject /#{issue.title} \(##{issue.iid}\)/i
end
it 'contains the new status' do
@@ -167,7 +220,7 @@ describe Notify do
end
context 'for merge requests' do
- let(:merge_request) { create(:merge_request, assignee: assignee, source_project: project, target_project: project) }
+ let(:merge_request) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project) }
describe 'that are new' do
subject { Notify.new_merge_request_email(merge_request.assignee_id, merge_request.id) }
@@ -175,7 +228,7 @@ describe Notify do
it_behaves_like 'an assignee email'
it 'has the correct subject' do
- should have_subject /New merge request ##{merge_request.iid}/
+ should have_subject /#{merge_request.title} \(!#{merge_request.iid}\)/
end
it 'contains a link to the new merge request' do
@@ -192,14 +245,18 @@ describe Notify do
end
describe 'that are reassigned' do
- before(:each) { merge_request.stub(:assignee_id_was).and_return(previous_assignee.id) }
-
- subject { Notify.reassigned_merge_request_email(recipient.id, merge_request.id, previous_assignee.id) }
+ subject { Notify.reassigned_merge_request_email(recipient.id, merge_request.id, previous_assignee.id, current_user.id) }
it_behaves_like 'a multiple recipients email'
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(current_user.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'has the correct subject' do
- should have_subject /Changed merge request ##{merge_request.iid}/
+ should have_subject /#{merge_request.title} \(!#{merge_request.iid}\)/
end
it 'contains the name of the previous assignee' do
@@ -223,6 +280,8 @@ describe Notify do
let(:user) { create(:user) }
subject { Notify.project_was_moved_email(project.id, user.id) }
+ it_behaves_like 'an email sent from GitLab'
+
it 'has the correct subject' do
should have_subject /Project was moved/
end
@@ -243,6 +302,9 @@ describe Notify do
project: project,
user: user) }
subject { Notify.project_access_granted_email(users_project.id) }
+
+ it_behaves_like 'an email sent from GitLab'
+
it 'has the correct subject' do
should have_subject /Access to project was granted/
end
@@ -263,6 +325,12 @@ describe Notify do
end
shared_examples 'a note email' do
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(note_author.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'is sent to the given recipient' do
should deliver_to recipient.email
end
@@ -302,7 +370,7 @@ describe Notify do
it_behaves_like 'a note email'
it 'has the correct subject' do
- should have_subject /Note for commit #{commit.short_id}/
+ should have_subject /#{commit.title} \(#{commit.short_id}\)/
end
it 'contains a link to the commit' do
@@ -320,7 +388,7 @@ describe Notify do
it_behaves_like 'a note email'
it 'has the correct subject' do
- should have_subject /Note for merge request ##{merge_request.iid}/
+ should have_subject /#{merge_request.title} \(!#{merge_request.iid}\)/
end
it 'contains a link to the merge request note' do
@@ -338,7 +406,7 @@ describe Notify do
it_behaves_like 'a note email'
it 'has the correct subject' do
- should have_subject /Note for issue ##{issue.iid}/
+ should have_subject /#{issue.title} \(##{issue.iid}\)/
end
it 'contains a link to the issue note' do
@@ -355,6 +423,8 @@ describe Notify do
subject { Notify.group_access_granted_email(membership.id) }
+ it_behaves_like 'an email sent from GitLab'
+
it 'has the correct subject' do
should have_subject /Access to group was granted/
end
@@ -379,6 +449,8 @@ describe Notify do
subject { ActionMailer::Base.deliveries.last }
+ it_behaves_like 'an email sent from GitLab'
+
it 'is sent to the new user' do
should deliver_to 'new-email@mail.com'
end
@@ -399,6 +471,12 @@ describe Notify do
subject { Notify.repository_push_email(project.id, 'devs@company.name', user.id, 'master', compare) }
+ it 'is sent as the author' do
+ sender = subject.header[:from].addrs[0]
+ sender.display_name.should eq(user.name)
+ sender.address.should eq(gitlab_sender)
+ end
+
it 'is sent to recipient' do
should deliver_to 'devs@company.name'
end
diff --git a/spec/models/assembla_service_spec.rb b/spec/models/assembla_service_spec.rb
index 0b961c81ac1..1730a64283a 100644
--- a/spec/models/assembla_service_spec.rb
+++ b/spec/models/assembla_service_spec.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
require 'spec_helper'
@@ -25,7 +26,7 @@ describe AssemblaService do
describe "Execute" do
let(:user) { create(:user) }
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
before do
@assembla_service = AssemblaService.new
@@ -33,14 +34,15 @@ describe AssemblaService do
project_id: project.id,
project: project,
service_hook: true,
- token: 'verySecret'
+ token: 'verySecret',
+ subdomain: 'project_name'
)
@sample_data = GitPushService.new.sample_data(project, user)
- @api_url = 'https://atlas.assembla.com/spaces/ouposp/github_tool?secret_key=verySecret'
+ @api_url = 'https://atlas.assembla.com/spaces/project_name/github_tool?secret_key=verySecret'
WebMock.stub_request(:post, @api_url)
end
- it "should call FlowDock API" do
+ it "should call Assembla API" do
@assembla_service.execute(@sample_data)
WebMock.should have_requested(:post, @api_url).with(
body: /#{@sample_data[:before]}.*#{@sample_data[:after]}.*#{project.path}/
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index fa556f94a1d..d8ab171d3ee 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Commit do
- let(:project) { create :project_with_code }
+ let(:project) { create :project }
let(:commit) { project.repository.commit }
describe '#title' do
diff --git a/spec/models/flowdock_service_spec.rb b/spec/models/flowdock_service_spec.rb
index 636aba2f012..97414585331 100644
--- a/spec/models/flowdock_service_spec.rb
+++ b/spec/models/flowdock_service_spec.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
require 'spec_helper'
@@ -25,7 +26,7 @@ describe FlowdockService do
describe "Execute" do
let(:user) { create(:user) }
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
before do
@flowdock_service = FlowdockService.new
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb
index 472ddf1b59d..e719e3bfcc8 100644
--- a/spec/models/forked_project_link_spec.rb
+++ b/spec/models/forked_project_link_spec.rb
@@ -58,7 +58,7 @@ describe :forked_from_project do
end
def fork_project(from_project, user)
- context = Projects::ForkContext.new(from_project, user)
+ context = Projects::ForkService.new(from_project, user)
shell = double("gitlab_shell")
shell.stub(fork_repository: true)
context.stub(gitlab_shell: shell)
diff --git a/spec/models/gemnasium_service_spec.rb b/spec/models/gemnasium_service_spec.rb
new file mode 100644
index 00000000000..dfc99849d60
--- /dev/null
+++ b/spec/models/gemnasium_service_spec.rb
@@ -0,0 +1,47 @@
+# == Schema Information
+#
+# Table name: services
+#
+# id :integer not null, primary key
+# type :string(255)
+# title :string(255)
+# token :string(255)
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# active :boolean default(FALSE), not null
+# project_url :string(255)
+# subdomain :string(255)
+# room :string(255)
+# api_key :string(255)
+#
+
+require 'spec_helper'
+
+describe GemnasiumService do
+ describe "Associations" do
+ it { should belong_to :project }
+ it { should have_one :service_hook }
+ end
+
+ describe "Execute" do
+ let(:user) { create(:user) }
+ let(:project) { create(:project) }
+
+ before do
+ @gemnasium_service = GemnasiumService.new
+ @gemnasium_service.stub(
+ project_id: project.id,
+ project: project,
+ service_hook: true,
+ token: 'verySecret',
+ api_key: 'GemnasiumUserApiKey'
+ )
+ @sample_data = GitPushService.new.sample_data(project, user)
+ end
+ it "should call Gemnasium service" do
+ Gemnasium::GitlabService.should_receive(:execute).with(an_instance_of(Hash)).once
+ @gemnasium_service.execute(@sample_data)
+ end
+ end
+end
diff --git a/spec/models/gitlab_ci_service_spec.rb b/spec/models/gitlab_ci_service_spec.rb
index 56efa9df457..8ec15cb3466 100644
--- a/spec/models/gitlab_ci_service_spec.rb
+++ b/spec/models/gitlab_ci_service_spec.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
require 'spec_helper'
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 12b84700eb1..686e43d8d10 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -54,4 +54,19 @@ describe Group do
group.users_groups.guests.map(&:user).should_not include(user)
end
end
+
+ describe :avatar_type do
+ let(:user) { create(:user) }
+ before { group.add_user(user, UsersGroup::MASTER) }
+
+ it "should be true if avatar is image" do
+ group.update_attribute(:avatar, 'uploads/avatar.png')
+ group.avatar_type.should be_true
+ end
+
+ it "should be false if avatar is html page" do
+ group.update_attribute(:avatar, 'uploads/avatar.html')
+ group.avatar_type.should == ["only images allowed"]
+ end
+ end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 039a0c087ba..f1ad679b658 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -73,14 +73,13 @@ describe MergeRequest do
describe '#for_fork?' do
it 'returns true if the merge request is for a fork' do
- subject.source_project = create(:source_project)
- subject.target_project = create(:target_project)
+ subject.source_project = create(:project, namespace: create(:group))
+ subject.target_project = create(:project, namespace: create(:group))
subject.for_fork?.should be_true
end
+
it 'returns false if is not for a fork' do
- subject.source_project = create(:source_project)
- subject.target_project = subject.source_project
subject.for_fork?.should be_false
end
end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index b86603dd4ac..6be8a6a13f6 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -206,7 +206,7 @@ describe Note do
end
describe '#create_cross_reference_note' do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:author) { create(:user) }
let(:issue) { create(:issue, project: project) }
let(:mergereq) { create(:merge_request, target_project: project) }
@@ -250,6 +250,16 @@ describe Note do
its(:project) { should == project }
its(:note) { should == "_mentioned in merge request !#{mergereq.iid}_" }
end
+
+ context 'commit from issue' do
+ subject { Note.create_cross_reference_note(commit, issue, author, project) }
+
+ it { should be_valid }
+ its(:noteable_type) { should == "Commit" }
+ its(:noteable_id) { should be_nil }
+ its(:commit_id) { should == commit.id }
+ its(:note) { should == "_mentioned in issue ##{issue.iid}_" }
+ end
end
describe '#cross_reference_exists?' do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 8aa4c7fed1a..6bae5951b7b 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -99,6 +99,11 @@ describe Project do
project.web_url.should == "#{Gitlab.config.gitlab.url}/somewhere"
end
+ it "returns the web URL without the protocol for this repo" do
+ project = Project.new(path: "somewhere")
+ project.web_url_without_protocol.should == "#{Gitlab.config.gitlab.url.split("://")[1]}/somewhere"
+ end
+
describe "last_activity methods" do
let(:project) { create(:project) }
let(:last_event) { double(created_at: Time.now) }
@@ -123,7 +128,7 @@ describe Project do
end
describe :update_merge_requests do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
before do
@merge_request = create(:merge_request, source_project: project, target_project: project)
@@ -131,18 +136,17 @@ describe Project do
end
it "should close merge request if last commit from source branch was pushed to target branch" do
- @merge_request.reloaded_commits
- @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828"
- project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/stable", @key.user)
+ @merge_request.reload_code
+ @merge_request.last_commit.id.should == "69b34b7e9ad9f496f0ad10250be37d6265a03bba"
+ project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "69b34b7e9ad9f496f0ad10250be37d6265a03bba", "refs/heads/stable", @key.user)
@merge_request.reload
@merge_request.merged?.should be_true
end
it "should update merge request commits with new one if pushed to source branch" do
- @merge_request.last_commit.should == nil
- project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/master", @key.user)
+ project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "69b34b7e9ad9f496f0ad10250be37d6265a03bba", "refs/heads/master", @key.user)
@merge_request.reload
- @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828"
+ @merge_request.last_commit.id.should == "69b34b7e9ad9f496f0ad10250be37d6265a03bba"
end
end
@@ -151,10 +155,10 @@ describe Project do
context 'with namespace' do
before do
@group = create :group, name: 'gitlab'
- @project = create(:project, name: 'gitlab-ci', namespace: @group)
+ @project = create(:project, name: 'gitlabhq', namespace: @group)
end
- it { Project.find_with_namespace('gitlab/gitlab-ci').should == @project }
+ it { Project.find_with_namespace('gitlab/gitlabhq').should == @project }
it { Project.find_with_namespace('gitlab-ci').should be_nil }
end
end
@@ -163,10 +167,10 @@ describe Project do
context 'with namespace' do
before do
@group = create :group, name: 'gitlab'
- @project = create(:project, name: 'gitlab-ci', namespace: @group)
+ @project = create(:project, name: 'gitlabhq', namespace: @group)
end
- it { @project.to_param.should == "gitlab/gitlab-ci" }
+ it { @project.to_param.should == "gitlab/gitlabhq" }
end
end
@@ -232,7 +236,7 @@ describe Project do
end
describe :open_branches do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
before do
project.protected_branches.create(name: 'master')
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 667c80bcf19..94542074967 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -13,6 +13,7 @@
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
+# api_key :string(255)
#
require 'spec_helper'
@@ -44,12 +45,12 @@ describe Service do
end
describe :can_test do
- it { @testable.should == false }
+ it { @testable.should == true }
end
end
describe "With commits" do
- let (:project) { create :project_with_code }
+ let (:project) { create :project }
before do
@service.stub(
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 94bd19f5900..fd8d7133ae9 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -41,6 +41,8 @@
# confirmed_at :datetime
# confirmation_sent_at :datetime
# unconfirmed_email :string(255)
+# hide_no_ssh_key :boolean default(FALSE)
+# website_url :string(255) default(""), not null
#
require 'spec_helper'
@@ -74,6 +76,27 @@ describe User do
it { should_not allow_value(-1).for(:projects_limit) }
it { should ensure_length_of(:bio).is_within(0..255) }
+
+ describe 'email' do
+ it 'accepts info@example.com' do
+ user = build(:user, email: 'info@example.com')
+ expect(user).to be_valid
+ end
+ it 'accepts info+test@example.com' do
+ user = build(:user, email: 'info+test@example.com')
+ expect(user).to be_valid
+ end
+
+ it 'rejects test@test@example.com' do
+ user = build(:user, email: 'test@test@example.com')
+ expect(user).to be_invalid
+ end
+
+ it 'rejects mailto:test@example.com' do
+ user = build(:user, email: 'mailto:test@example.com')
+ expect(user).to be_invalid
+ end
+ end
end
describe "Respond to" do
@@ -280,6 +303,17 @@ describe User do
end
end
+ describe 'all_ssh_keys' do
+ it { should have_many(:keys).dependent(:destroy) }
+
+ it "should have all ssh keys" do
+ user = create :user
+ key = create :key, key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD33bWLBxu48Sev9Fert1yzEO4WGcWglWF7K/AwblIUFselOt/QdOL9DSjpQGxLagO1s9wl53STIO8qGS4Ms0EJZyIXOEFMjFJ5xmjSy+S37By4sG7SsltQEHMxtbtFOaW5LV2wCrX+rUsRNqLMamZjgjcPO0/EgGCXIGMAYW4O7cwGZdXWYIhQ1Vwy+CsVMDdPkPgBXqK7nR/ey8KMs8ho5fMNgB5hBw/AL9fNGhRw3QTD6Q12Nkhl4VZES2EsZqlpNnJttnPdp847DUsT6yuLRlfiQfz5Cn9ysHFdXObMN5VYIiPFwHeYCZp1X2S4fDZooRE8uOLTfxWHPXwrhqSH", user_id: user.id
+
+ user.all_ssh_keys.should include(key.key)
+ end
+ end
+
describe :avatar_type do
let(:user) { create(:user) }
@@ -293,4 +327,48 @@ describe User do
user.avatar_type.should == ["only images allowed"]
end
end
+
+ describe '#full_website_url' do
+ let(:user) { create(:user) }
+
+ it 'begins with http if website url omits it' do
+ user.website_url = 'test.com'
+
+ expect(user.full_website_url).to eq 'http://test.com'
+ end
+
+ it 'begins with http if website url begins with http' do
+ user.website_url = 'http://test.com'
+
+ expect(user.full_website_url).to eq 'http://test.com'
+ end
+
+ it 'begins with https if website url begins with https' do
+ user.website_url = 'https://test.com'
+
+ expect(user.full_website_url).to eq 'https://test.com'
+ end
+ end
+
+ describe '#short_website_url' do
+ let(:user) { create(:user) }
+
+ it 'does not begin with http if website url omits it' do
+ user.website_url = 'test.com'
+
+ expect(user.short_website_url).to eq 'test.com'
+ end
+
+ it 'does not begin with http if website url begins with http' do
+ user.website_url = 'http://test.com'
+
+ expect(user.short_website_url).to eq 'test.com'
+ end
+
+ it 'does not begin with https if website url begins with https' do
+ user.website_url = 'https://test.com'
+
+ expect(user.short_website_url).to eq 'test.com'
+ end
+ end
end
diff --git a/spec/observers/email_observer_spec.rb b/spec/observers/email_observer_spec.rb
new file mode 100644
index 00000000000..599b9a6ffba
--- /dev/null
+++ b/spec/observers/email_observer_spec.rb
@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe EmailObserver do
+ let(:email) { create(:email) }
+
+ before { subject.stub(notification: double('NotificationService').as_null_object) }
+
+ subject { EmailObserver.instance }
+
+ describe '#after_create' do
+ it 'trigger notification to send emails' do
+ subject.should_receive(:notification)
+
+ subject.after_create(email)
+ end
+ end
+end
diff --git a/spec/observers/merge_request_observer_spec.rb b/spec/observers/merge_request_observer_spec.rb
index a450b4d518e..6ad7c4d81da 100644
--- a/spec/observers/merge_request_observer_spec.rb
+++ b/spec/observers/merge_request_observer_spec.rb
@@ -4,16 +4,17 @@ describe MergeRequestObserver do
let(:some_user) { create :user }
let(:assignee) { create :user }
let(:author) { create :user }
+ let(:project) { create :project }
let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author).as_null_object }
- let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, target_project: create(:project)) }
- let(:unassigned_mr) { create(:merge_request, author: author, target_project: create(:project)) }
- let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, target_project: create(:project)) }
- let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, target_project: create(:project)) }
+ let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, source_project: project) }
+ let(:unassigned_mr) { create(:merge_request, author: author, source_project: project) }
+ let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, source_project: project) }
+ let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, source_project: project) }
before { subject.stub(:current_user).and_return(some_user) }
before { subject.stub(notification: double('NotificationService').as_null_object) }
before { mr_mock.stub(:author_id) }
- before { mr_mock.stub(:target_project) }
+ before { mr_mock.stub(:source_project) }
before { mr_mock.stub(:source_project) }
before { mr_mock.stub(:project) }
before { mr_mock.stub(:create_cross_references!).and_return(true) }
@@ -46,7 +47,7 @@ describe MergeRequestObserver do
end
it 'is called when a merge request is changed' do
- changed = create(:merge_request, source_project: create(:project))
+ changed = create(:merge_request, source_project: project)
subject.should_receive(:after_update)
MergeRequest.observers.enable :merge_request_observer do
@@ -81,13 +82,13 @@ describe MergeRequestObserver do
context '#after_close' do
context 'a status "closed"' do
it 'note is created if the merge request is being closed' do
- Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.target_project, some_user, 'closed', nil)
+ Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.source_project, some_user, 'closed', nil)
assigned_mr.close
end
it 'notification is delivered only to author if the merge request is being closed' do
- Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.target_project, some_user, 'closed', nil)
+ Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.source_project, some_user, 'closed', nil)
unassigned_mr.close
end
@@ -97,13 +98,13 @@ describe MergeRequestObserver do
context '#after_reopen' do
context 'a status "reopened"' do
it 'note is created if the merge request is being reopened' do
- Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.target_project, some_user, 'reopened', nil)
+ Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.source_project, some_user, 'reopened', nil)
closed_assigned_mr.reopen
end
it 'notification is delivered only to author if the merge request is being reopened' do
- Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.target_project, some_user, 'reopened', nil)
+ Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.source_project, some_user, 'reopened', nil)
closed_unassigned_mr.reopen
end
@@ -118,20 +119,13 @@ describe MergeRequestObserver do
it { @event.project.should == project }
end
- let(:project) { create(:project) }
before do
- TestEnv.enable_observers
- @merge_request = create(:merge_request, source_project: project, target_project: project)
+ @merge_request = create(:merge_request, source_project: project, source_project: project)
@event = Event.last
end
- after do
- TestEnv.disable_observers
- end
-
it_should_be_valid_event
it { @event.action.should == Event::CREATED }
it { @event.target.should == @merge_request }
end
-
end
diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb
new file mode 100644
index 00000000000..ea317e1137a
--- /dev/null
+++ b/spec/requests/api/commits_spec.rb
@@ -0,0 +1,87 @@
+require 'spec_helper'
+require 'mime/types'
+
+describe API::API do
+ include ApiHelpers
+ before(:each) { enable_observers }
+ after(:each) {disable_observers}
+
+ let(:user) { create(:user) }
+ let(:user2) { create(:user) }
+ let!(:project) { create(:project, creator_id: user.id) }
+ let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
+ let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) }
+
+ before { project.team << [user, :reporter] }
+
+ describe "GET /projects/:id/repository/commits" do
+ context "authorized user" do
+ before { project.team << [user2, :reporter] }
+
+ it "should return project commits" do
+ get api("/projects/#{project.id}/repository/commits", user)
+ response.status.should == 200
+
+ json_response.should be_an Array
+ json_response.first['id'].should == project.repository.commit.id
+ end
+ end
+
+ context "unauthorized user" do
+ it "should not return project commits" do
+ get api("/projects/#{project.id}/repository/commits")
+ response.status.should == 401
+ end
+ end
+ end
+
+ describe "GET /projects:id/repository/commits/:sha" do
+ context "authorized user" do
+ it "should return a commit by sha" do
+ get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}", user)
+ response.status.should == 200
+ json_response['id'].should == project.repository.commit.id
+ json_response['title'].should == project.repository.commit.title
+ end
+
+ it "should return a 404 error if not found" do
+ get api("/projects/#{project.id}/repository/commits/invalid_sha", user)
+ response.status.should == 404
+ end
+ end
+
+ context "unauthorized user" do
+ it "should not return the selected commit" do
+ get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}")
+ response.status.should == 401
+ end
+ end
+ end
+
+ describe "GET /projects:id/repository/commits/:sha/diff" do
+ context "authorized user" do
+ before { project.team << [user2, :reporter] }
+
+ it "should return the diff of the selected commit" do
+ get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}/diff", user)
+ response.status.should == 200
+
+ json_response.should be_an Array
+ json_response.length.should >= 1
+ json_response.first.keys.should include "diff"
+ end
+
+ it "should return a 404 error if invalid commit" do
+ get api("/projects/#{project.id}/repository/commits/invalid_sha/diff", user)
+ response.status.should == 404
+ end
+ end
+
+ context "unauthorized user" do
+ it "should not return the diff of the selected commit" do
+ get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}/diff")
+ response.status.should == 401
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/files_spec.rb b/spec/requests/api/files_spec.rb
index 2d1f8df47dd..fa25a4bec6a 100644
--- a/spec/requests/api/files_spec.rb
+++ b/spec/requests/api/files_spec.rb
@@ -6,9 +6,39 @@ describe API::API do
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
let(:user) { create(:user) }
- let!(:project) { create(:project_with_code, namespace: user.namespace ) }
+ let!(:project) { create(:project, namespace: user.namespace ) }
before { project.team << [user, :developer] }
+ describe "GET /projects/:id/repository/files" do
+ it "should return file info" do
+ params = {
+ file_path: 'app/models/key.rb',
+ ref: 'master',
+ }
+
+ get api("/projects/#{project.id}/repository/files", user), params
+ response.status.should == 200
+ json_response['file_path'].should == 'app/models/key.rb'
+ json_response['file_name'].should == 'key.rb'
+ Base64.decode64(json_response['content']).lines.first.should == "class Key < ActiveRecord::Base\n"
+ end
+
+ it "should return a 400 bad request if no params given" do
+ get api("/projects/#{project.id}/repository/files", user)
+ response.status.should == 400
+ end
+
+ it "should return a 404 if such file does not exist" do
+ params = {
+ file_path: 'app/models/application.rb',
+ ref: 'master',
+ }
+
+ get api("/projects/#{project.id}/repository/files", user), params
+ response.status.should == 404
+ end
+ end
+
describe "POST /projects/:id/repository/files" do
let(:valid_params) {
{
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index f31b4da90cd..412b6c95ffa 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -5,7 +5,7 @@ describe API::API do
before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
let(:user) { create(:user) }
- let!(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+ let!(:project) {create(:project, creator_id: user.id, namespace: user.namespace) }
let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") }
before {
project.team << [user, :reporters]
@@ -47,32 +47,32 @@ describe API::API do
context 'between branches projects' do
it "should return merge_request" do
post api("/projects/#{project.id}/merge_requests", user),
- title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
+ title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
it "should return 422 when source_branch equals target_branch" do
post api("/projects/#{project.id}/merge_requests", user),
- title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
+ title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
response.status.should == 422
end
it "should return 400 when source_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
- title: "Test merge_request", target_branch: "master", author: user
+ title: "Test merge_request", target_branch: "master", author: user
response.status.should == 400
end
it "should return 400 when target_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
- title: "Test merge_request", source_branch: "stable", author: user
+ title: "Test merge_request", source_branch: "stable", author: user
response.status.should == 400
end
it "should return 400 when title is missing" do
post api("/projects/#{project.id}/merge_requests", user),
- target_branch: 'master', source_branch: 'stable'
+ target_branch: 'master', source_branch: 'stable'
response.status.should == 400
end
end
@@ -80,8 +80,8 @@ describe API::API do
context 'forked projects' do
let!(:user2) {create(:user)}
let!(:forked_project_link) { build(:forked_project_link) }
- let!(:fork_project) { create(:source_project_with_code, forked_project_link: forked_project_link, namespace: user2.namespace, creator_id: user2.id) }
- let!(:unrelated_project) { create(:target_project_with_code, namespace: user2.namespace, creator_id: user2.id) }
+ let!(:fork_project) { create(:project, forked_project_link: forked_project_link, namespace: user2.namespace, creator_id: user2.id) }
+ let!(:unrelated_project) { create(:project, namespace: create(:user).namespace, creator_id: user2.id) }
before :each do |each|
fork_project.team << [user2, :reporters]
@@ -92,7 +92,7 @@ describe API::API do
it "should return merge_request" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
+ title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
@@ -102,44 +102,44 @@ describe API::API do
fork_project.forked?.should be_true
fork_project.forked_from_project.should == project
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
+ title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
it "should return 400 when source_branch is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
+ title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400
end
it "should return 400 when target_branch is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
+ title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400
end
it "should return 400 when title is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
+ target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
response.status.should == 400
end
it "should return 400 when target_branch is specified and not a forked project" do
post api("/projects/#{project.id}/merge_requests", user),
- title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
+ title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
response.status.should == 400
end
it "should return 400 when target_branch is specified and for a different fork" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
+ title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
response.status.should == 400
end
it "should return 201 when target_branch is specified and for the same project" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
- title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
+ title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
response.status.should == 201
end
end
@@ -170,7 +170,7 @@ describe API::API do
it "should return 422 when source_branch and target_branch are renamed the same" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user),
- source_branch: "master", target_branch: "master"
+ source_branch: "master", target_branch: "master"
response.status.should == 422
end
@@ -198,5 +198,4 @@ describe API::API do
response.status.should == 404
end
end
-
end
diff --git a/spec/requests/api/project_hooks_spec.rb b/spec/requests/api/project_hooks_spec.rb
index beccd61866e..c8ace0b9462 100644
--- a/spec/requests/api/project_hooks_spec.rb
+++ b/spec/requests/api/project_hooks_spec.rb
@@ -7,7 +7,7 @@ describe API::API, 'ProjectHooks' do
let(:user) { create(:user) }
let(:user3) { create(:user) }
- let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+ let!(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
let!(:hook) { create(:project_hook, project: project, url: "http://example.com") }
before do
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 8e0b9067672..342587ba5d6 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -9,14 +9,14 @@ describe API::API do
let(:user2) { create(:user) }
let(:user3) { create(:user) }
let(:admin) { create(:admin) }
- let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
- let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
- let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
- let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
-
- before { project.team << [user, :reporter] }
+ let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
+ let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
+ let(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
+ let(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
describe "GET /projects" do
+ before { project }
+
context "when unauthenticated" do
it "should return authentication error" do
get api("/projects")
@@ -36,6 +36,8 @@ describe API::API do
end
describe "GET /projects/all" do
+ before { project }
+
context "when unauthenticated" do
it "should return authentication error" do
get api("/projects/all")
@@ -174,6 +176,7 @@ describe API::API do
end
describe "POST /projects/user/:id" do
+ before { project }
before { admin }
it "should create new project without path" do
@@ -255,6 +258,8 @@ describe API::API do
end
describe "GET /projects/:id" do
+ before { project }
+
it "should return a project by id" do
get api("/projects/#{project.id}", user)
response.status.should == 200
@@ -282,6 +287,8 @@ describe API::API do
end
describe "GET /projects/:id/events" do
+ before { users_project }
+
it "should return a project events" do
get api("/projects/#{project.id}/events", user)
response.status.should == 200
@@ -305,6 +312,9 @@ describe API::API do
end
describe "GET /projects/:id/members" do
+ before { users_project }
+ before { users_project2 }
+
it "should return project team members" do
get api("/projects/#{project.id}/members", user)
response.status.should == 200
@@ -328,6 +338,8 @@ describe API::API do
end
describe "GET /projects/:id/members/:user_id" do
+ before { users_project }
+
it "should return project team member" do
get api("/projects/#{project.id}/members/#{user.id}", user)
response.status.should == 200
@@ -383,6 +395,8 @@ describe API::API do
end
describe "PUT /projects/:id/members/:user_id" do
+ before { users_project2 }
+
it "should update project team member" do
put api("/projects/#{project.id}/members/#{user3.id}", user), access_level: UsersProject::MASTER
response.status.should == 200
@@ -407,6 +421,9 @@ describe API::API do
end
describe "DELETE /projects/:id/members/:user_id" do
+ before { users_project }
+ before { users_project2 }
+
it "should remove user from project team" do
expect {
delete api("/projects/#{project.id}/members/#{user3.id}", user)
@@ -425,9 +442,7 @@ describe API::API do
delete api("/projects/#{project.id}/members/#{user3.id}", user)
response.status.should == 200
end
- end
- describe "DELETE /projects/:id/members/:user_id" do
it "should return 200 OK when the user was not member" do
expect {
delete api("/projects/#{project.id}/members/1000000", user)
@@ -439,6 +454,8 @@ describe API::API do
end
describe "GET /projects/:id/snippets" do
+ before { snippet }
+
it "should return an array of project snippets" do
get api("/projects/#{project.id}/snippets", user)
response.status.should == 200
@@ -505,6 +522,8 @@ describe API::API do
end
describe "DELETE /projects/:id/snippets/:snippet_id" do
+ before { snippet }
+
it "should delete existing project snippet" do
expect {
delete api("/projects/#{project.id}/snippets/#{snippet.id}", user)
@@ -657,15 +676,15 @@ describe API::API do
describe "GET /projects/search/:query" do
let!(:query) { 'query'}
- let!(:search) { create(:project, name: query, creator_id: user.id, namespace: user.namespace) }
- let!(:pre) { create(:project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) }
- let!(:post) { create(:project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) }
- let!(:pre_post) { create(:project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) }
- let!(:unfound) { create(:project, name: 'unfound', creator_id: user.id, namespace: user.namespace) }
- let!(:internal) { create(:project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
- let!(:unfound_internal) { create(:project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
- let!(:public) { create(:project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
- let!(:unfound_public) { create(:project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
+ let!(:search) { create(:empty_project, name: query, creator_id: user.id, namespace: user.namespace) }
+ let!(:pre) { create(:empty_project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) }
+ let!(:post) { create(:empty_project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) }
+ let!(:pre_post) { create(:empty_project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) }
+ let!(:unfound) { create(:empty_project, name: 'unfound', creator_id: user.id, namespace: user.namespace) }
+ let!(:internal) { create(:empty_project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
+ let!(:unfound_internal) { create(:empty_project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
+ let!(:public) { create(:empty_project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
+ let!(:unfound_public) { create(:empty_project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
context "when unauthenticated" do
it "should return authentication error" do
diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb
index f73ac4372b2..99d966edc38 100644
--- a/spec/requests/api/repositories_spec.rb
+++ b/spec/requests/api/repositories_spec.rb
@@ -8,7 +8,7 @@ describe API::API do
let(:user) { create(:user) }
let(:user2) { create(:user) }
- let!(:project) { create(:project_with_code, creator_id: user.id) }
+ let!(:project) { create(:project, creator_id: user.id) }
let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) }
@@ -103,77 +103,6 @@ describe API::API do
end
end
- describe "GET /projects/:id/repository/commits" do
- context "authorized user" do
- before { project.team << [user2, :reporter] }
-
- it "should return project commits" do
- get api("/projects/#{project.id}/repository/commits", user)
- response.status.should == 200
-
- json_response.should be_an Array
- json_response.first['id'].should == project.repository.commit.id
- end
- end
-
- context "unauthorized user" do
- it "should not return project commits" do
- get api("/projects/#{project.id}/repository/commits")
- response.status.should == 401
- end
- end
- end
-
- describe "GET /projects:id/repository/commits/:sha" do
- context "authorized user" do
- it "should return a commit by sha" do
- get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}", user)
- response.status.should == 200
- json_response['id'].should == project.repository.commit.id
- json_response['title'].should == project.repository.commit.title
- end
-
- it "should return a 404 error if not found" do
- get api("/projects/#{project.id}/repository/commits/invalid_sha", user)
- response.status.should == 404
- end
- end
-
- context "unauthorized user" do
- it "should not return the selected commit" do
- get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}")
- response.status.should == 401
- end
- end
- end
-
- describe "GET /projects:id/repository/commits/:sha/diff" do
- context "authorized user" do
- before { project.team << [user2, :reporter] }
-
- it "should return the diff of the selected commit" do
- get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}/diff", user)
- response.status.should == 200
-
- json_response.should be_an Array
- json_response.length.should >= 1
- json_response.first.keys.should include "diff"
- end
-
- it "should return a 404 error if invalid commit" do
- get api("/projects/#{project.id}/repository/commits/invalid_sha/diff", user)
- response.status.should == 404
- end
- end
-
- context "unauthorized user" do
- it "should not return the diff of the selected commit" do
- get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}/diff")
- response.status.should == 401
- end
- end
- end
-
describe "GET /projects/:id/repository/tree" do
context "authorized user" do
before { project.team << [user2, :reporter] }
diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb
index e2fd945bad3..aecd18bc14a 100644
--- a/spec/requests/api/services_spec.rb
+++ b/spec/requests/api/services_spec.rb
@@ -6,7 +6,7 @@ describe API::API do
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
let(:user) { create(:user) }
- let(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+ let(:project) {create(:project, creator_id: user.id, namespace: user.namespace) }
describe "POST /projects/:id/services/gitlab-ci" do
it "should update gitlab-ci settings" do
diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb
index 4ef78b8e5d0..c4be5102002 100644
--- a/spec/requests/api/users_spec.rb
+++ b/spec/requests/api/users_spec.rb
@@ -93,7 +93,7 @@ describe API::API do
expect {
post api("/users", admin), attr
}.to change { User.count }.by(1)
- user = User.find_by_username(attr[:username])
+ user = User.find_by(username: attr[:username])
user.projects_limit.should == limit
user.theme_id.should == Gitlab::Theme::MARS
Gitlab.config.gitlab.unstub(:default_projects_limit)
diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb
index 1af052d8739..9b67cd432bc 100644
--- a/spec/routing/routing_spec.rb
+++ b/spec/routing/routing_spec.rb
@@ -111,13 +111,6 @@ describe HelpController, "routing" do
end
end
-# errors_githost GET /errors/githost(.:format) errors#githost
-describe ErrorsController, "routing" do
- it "to #githost" do
- get("/errors/githost").should route_to('errors#githost')
- end
-end
-
# profile_account GET /profile/account(.:format) profile#account
# profile_history GET /profile/history(.:format) profile#history
# profile_password PUT /profile/password(.:format) profile#password_update
@@ -183,6 +176,28 @@ describe Profiles::KeysController, "routing" do
it "to #destroy" do
delete("/profile/keys/1").should route_to('profiles/keys#destroy', id: '1')
end
+
+ # get all the ssh-keys of a user
+ it "to #get_keys" do
+ get("/foo.keys").should route_to('profiles/keys#get_keys', username: 'foo')
+ end
+end
+
+# emails GET /emails(.:format) emails#index
+# POST /keys(.:format) emails#create
+# DELETE /keys/:id(.:format) keys#destroy
+describe Profiles::EmailsController, "routing" do
+ it "to #index" do
+ get("/profile/emails").should route_to('profiles/emails#index')
+ end
+
+ it "to #create" do
+ post("/profile/emails").should route_to('profiles/emails#create')
+ end
+
+ it "to #destroy" do
+ delete("/profile/emails/1").should route_to('profiles/emails#destroy', id: '1')
+ end
end
# profile_avatar DELETE /profile/avatar(.:format) profiles/avatars#destroy
diff --git a/spec/seed_project.tar.gz b/spec/seed_project.tar.gz
index 7abb51ebdfd..92b9587e3f7 100644
--- a/spec/seed_project.tar.gz
+++ b/spec/seed_project.tar.gz
Binary files differ
diff --git a/spec/contexts/fork_context_spec.rb b/spec/services/fork_service_spec.rb
index 70f650bc83d..b6573095dbd 100644
--- a/spec/contexts/fork_context_spec.rb
+++ b/spec/services/fork_service_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe Projects::ForkContext do
+describe Projects::ForkService do
describe :fork_by_user do
before do
@from_namespace = create(:namespace)
@@ -47,7 +47,7 @@ describe Projects::ForkContext do
end
def fork_project(from_project, user, fork_success = true)
- context = Projects::ForkContext.new(from_project, user)
+ context = Projects::ForkService.new(from_project, user)
shell = double("gitlab_shell")
shell.stub(fork_repository: fork_success)
context.stub(gitlab_shell: shell)
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index b46022fb2da..90738c681fa 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
describe GitPushService do
let (:user) { create :user }
- let (:project) { create :project_with_code }
+ let (:project) { create :project }
let (:service) { GitPushService.new }
before do
diff --git a/spec/contexts/issues/bulk_update_context_spec.rb b/spec/services/issues/bulk_update_context_spec.rb
index 058e43ba090..548109a8450 100644
--- a/spec/contexts/issues/bulk_update_context_spec.rb
+++ b/spec/services/issues/bulk_update_context_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe Issues::BulkUpdateContext do
+describe Issues::BulkUpdateService do
before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
@@ -14,7 +14,7 @@ describe Issues::BulkUpdateContext do
name: "GitLab",
namespace: @user.namespace
}
- @project = Projects::CreateContext.new(@user, opts).execute
+ @project = Projects::CreateService.new(@user, opts).execute
end
describe :close_issue do
@@ -32,7 +32,7 @@ describe Issues::BulkUpdateContext do
end
it {
- result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result = Issues::BulkUpdateService.new(@project, @user, @params).execute
result[:success].should be_true
result[:count].should == @issues.count
@@ -57,7 +57,7 @@ describe Issues::BulkUpdateContext do
end
it {
- result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result = Issues::BulkUpdateService.new(@project, @user, @params).execute
result[:success].should be_true
result[:count].should == @issues.count
@@ -80,7 +80,7 @@ describe Issues::BulkUpdateContext do
end
it {
- result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result = Issues::BulkUpdateService.new(@project, @user, @params).execute
result[:success].should be_true
result[:count].should == 1
@@ -102,7 +102,7 @@ describe Issues::BulkUpdateContext do
end
it {
- result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result = Issues::BulkUpdateService.new(@project, @user, @params).execute
result[:success].should be_true
result[:count].should == 1
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index a112835d4d0..077ad8b6e12 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -16,6 +16,19 @@ describe NotificationService do
end
end
+ describe 'Email' do
+ describe :new_email do
+ let(:email) { create(:email) }
+
+ it { notification.new_email(email).should be_true }
+
+ it 'should send email to email owner' do
+ Notify.should_receive(:new_email_email).with(email.id)
+ notification.new_email(email)
+ end
+ end
+ end
+
describe 'Notes' do
context 'issue note' do
let(:issue) { create(:issue, assignee: create(:user)) }
@@ -124,11 +137,11 @@ describe NotificationService do
end
def should_email(user_id)
- Notify.should_receive(:reassigned_issue_email).with(user_id, issue.id, issue.assignee_id)
+ Notify.should_receive(:reassigned_issue_email).with(user_id, issue.id, issue.assignee_id, @u_disabled.id)
end
def should_not_email(user_id)
- Notify.should_not_receive(:reassigned_issue_email).with(user_id, issue.id, issue.assignee_id)
+ Notify.should_not_receive(:reassigned_issue_email).with(user_id, issue.id, issue.assignee_id, @u_disabled.id)
end
end
@@ -188,11 +201,11 @@ describe NotificationService do
end
def should_email(user_id)
- Notify.should_receive(:reassigned_merge_request_email).with(user_id, merge_request.id, merge_request.assignee_id)
+ Notify.should_receive(:reassigned_merge_request_email).with(user_id, merge_request.id, merge_request.assignee_id, merge_request.author_id)
end
def should_not_email(user_id)
- Notify.should_not_receive(:reassigned_merge_request_email).with(user_id, merge_request.id, merge_request.assignee_id)
+ Notify.should_not_receive(:reassigned_merge_request_email).with(user_id, merge_request.id, merge_request.assignee_id, merge_request.author_id)
end
end
@@ -233,6 +246,31 @@ describe NotificationService do
end
end
+ describe 'Projects' do
+ let(:project) { create :project }
+
+ before do
+ build_team(project)
+ end
+
+ describe :project_was_moved do
+ it do
+ should_email(@u_watcher.id)
+ should_email(@u_participating.id)
+ should_not_email(@u_disabled.id)
+ notification.project_was_moved(project)
+ end
+
+ def should_email(user_id)
+ Notify.should_receive(:project_was_moved_email).with(project.id, user_id)
+ end
+
+ def should_not_email(user_id)
+ Notify.should_not_receive(:project_was_moved_email).with(project.id, user_id)
+ end
+ end
+ end
+
def build_team(project)
@u_watcher = create(:user, notification_level: Notification::N_WATCH)
@u_participating = create(:user, notification_level: Notification::N_PARTICIPATING)
diff --git a/spec/contexts/projects_create_context_spec.rb b/spec/services/projects_create_service_spec.rb
index d5b1cb83510..0a41832a211 100644
--- a/spec/contexts/projects_create_context_spec.rb
+++ b/spec/services/projects_create_service_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe Projects::CreateContext do
+describe Projects::CreateService do
before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
@@ -136,7 +136,7 @@ describe Projects::CreateContext do
end
def create_project(user, opts)
- Projects::CreateContext.new(user, opts).execute
+ Projects::CreateService.new(user, opts).execute
end
end
diff --git a/spec/contexts/projects_update_context_spec.rb b/spec/services/projects_update_service_spec.rb
index edcaf844e5d..1854c0d8233 100644
--- a/spec/contexts/projects_update_context_spec.rb
+++ b/spec/services/projects_update_service_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe Projects::UpdateContext do
+describe Projects::UpdateService do
before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
@@ -106,6 +106,6 @@ describe Projects::UpdateContext do
end
def update_project(project, user, opts)
- Projects::UpdateContext.new(project, user, opts).execute
+ Projects::UpdateService.new(project, user, opts).execute
end
-end \ No newline at end of file
+end
diff --git a/spec/contexts/search_context_spec.rb b/spec/services/search_service_spec.rb
index 38a6b55383a..457cb3c0ca3 100644
--- a/spec/contexts/search_context_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe 'Search::GlobalContext' do
+describe 'Search::GlobalService' do
let(:found_namespace) { create(:namespace, name: 'searchable namespace', path:'another_thing') }
let(:user) { create(:user, namespace: found_namespace) }
let!(:found_project) { create(:project, name: 'searchable_project', creator_id: user.id, namespace: found_namespace, visibility_level: Gitlab::VisibilityLevel::PRIVATE) }
@@ -19,7 +19,7 @@ describe 'Search::GlobalContext' do
describe '#execute' do
context 'unauthenticated' do
it 'should return public projects only' do
- context = Search::GlobalContext.new(nil, search: "searchable")
+ context = Search::GlobalService.new(nil, search: "searchable")
results = context.execute
results[:projects].should have(1).items
results[:projects].should include(public_project)
@@ -28,7 +28,7 @@ describe 'Search::GlobalContext' do
context 'authenticated' do
it 'should return public, internal and private projects' do
- context = Search::GlobalContext.new(user, search: "searchable")
+ context = Search::GlobalService.new(user, search: "searchable")
results = context.execute
results[:projects].should have(3).items
results[:projects].should include(public_project)
@@ -37,7 +37,7 @@ describe 'Search::GlobalContext' do
end
it 'should return only public & internal projects' do
- context = Search::GlobalContext.new(internal_user, search: "searchable")
+ context = Search::GlobalService.new(internal_user, search: "searchable")
results = context.execute
results[:projects].should have(2).items
results[:projects].should include(internal_project)
@@ -45,7 +45,7 @@ describe 'Search::GlobalContext' do
end
it 'namespace name should be searchable' do
- context = Search::GlobalContext.new(user, search: "searchable namespace")
+ context = Search::GlobalService.new(user, search: "searchable namespace")
results = context.execute
results[:projects].should == [found_project]
end
diff --git a/spec/services/system_hooks_service_spec.rb b/spec/services/system_hooks_service_spec.rb
index ebc1ed51d2e..f1df7e55dd0 100644
--- a/spec/services/system_hooks_service_spec.rb
+++ b/spec/services/system_hooks_service_spec.rb
@@ -24,10 +24,10 @@ describe SystemHooksService do
end
def event_data(*args)
- SystemHooksService.build_event_data(*args)
+ SystemHooksService.new.send :build_event_data, *args
end
def event_name(*args)
- SystemHooksService.build_event_name(*args)
+ SystemHooksService.new.send :build_event_name, *args
end
end
diff --git a/spec/services/test_hook_service_spec.rb b/spec/services/test_hook_service_spec.rb
new file mode 100644
index 00000000000..76af5bf7b88
--- /dev/null
+++ b/spec/services/test_hook_service_spec.rb
@@ -0,0 +1,14 @@
+require 'spec_helper'
+
+describe TestHookService do
+ let (:user) { create :user }
+ let (:project) { create :project }
+ let (:hook) { create :project_hook, project: project }
+
+ describe :execute do
+ it "should execute successfully" do
+ stub_request(:post, hook.url).to_return(status: 200)
+ TestHookService.new.execute(hook, user).should be_true
+ end
+ end
+end
diff --git a/spec/support/mentionable_shared_examples.rb b/spec/support/mentionable_shared_examples.rb
index 948fff27b89..3802e94ecf0 100644
--- a/spec/support/mentionable_shared_examples.rb
+++ b/spec/support/mentionable_shared_examples.rb
@@ -11,7 +11,7 @@ def common_mentionable_setup
let(:mentioned_issue) { create :issue, project: mproject }
let(:other_issue) { create :issue, project: mproject }
- let(:mentioned_mr) { create :merge_request, target_project: mproject, source_branch: 'different' }
+ let(:mentioned_mr) { create :merge_request, source_project: mproject, source_branch: 'different' }
let(:mentioned_commit) { double('commit', sha: '1234567890abcdef').as_null_object }
# Override to add known commits to the repository stub.
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index e2bc2a5d7dd..43aec1cd43d 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -73,6 +73,10 @@ module TestEnv
version: '6.3.0'
)
+ Gitlab::Satellite::MergeAction.any_instance.stub(
+ merge!: true,
+ )
+
Gitlab::Satellite::Satellite.any_instance.stub(
exists?: true,
destroy: true,
diff --git a/spec/support/valid_commit.rb b/spec/support/valid_commit.rb
index 8094b679e99..98bc59b573f 100644
--- a/spec/support/valid_commit.rb
+++ b/spec/support/valid_commit.rb
@@ -2,6 +2,7 @@ module ValidCommit
ID = "8470d70da67355c9c009e4401746b1d5410af2e3"
MESSAGE = "notes controller refactored"
AUTHOR_FULL_NAME = "Dmitriy Zaporozhets"
+ AUTHOR_EMAIL = "dmitriy.zaporozhets@gmail.com"
FILES = [".foreman", ".gitignore", ".rails_footnotes", ".rspec", ".travis.yml", "CHANGELOG", "Gemfile", "Gemfile.lock", "LICENSE", "Procfile", "Procfile.production", "README.md", "Rakefile", "VERSION", "app", "config.ru", "config", "db", "doc", "lib", "log", "public", "resque.sh", "script", "spec", "vendor"]
FILES_COUNT = 26
diff --git a/spec/support/valid_commit_with_alt_email.rb b/spec/support/valid_commit_with_alt_email.rb
new file mode 100644
index 00000000000..d6e364c41f1
--- /dev/null
+++ b/spec/support/valid_commit_with_alt_email.rb
@@ -0,0 +1,6 @@
+module ValidCommitWithAltEmail
+ ID = "1e689bfba39525ead225eaf611948cfbe8ac34cf"
+ MESSAGE = "fixed notes logic"
+ AUTHOR_FULL_NAME = "Dmitriy Zaporozhets"
+ AUTHOR_EMAIL = "dzaporozhets@sphereconsultinginc.com"
+end \ No newline at end of file
diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb
index cba243226db..71a45eb2fa6 100644
--- a/spec/tasks/gitlab/backup_rake_spec.rb
+++ b/spec/tasks/gitlab/backup_rake_spec.rb
@@ -5,6 +5,7 @@ describe 'gitlab:app namespace rake task' do
before :all do
Rake.application.rake_require "tasks/gitlab/task_helpers"
Rake.application.rake_require "tasks/gitlab/backup"
+ Rake.application.rake_require "tasks/gitlab/shell"
# empty task as env is already loaded
Rake::Task.define_task :environment
end
@@ -26,12 +27,15 @@ describe 'gitlab:app namespace rake task' do
Dir.stub :chdir
File.stub exists?: true
Kernel.stub system: true
+ FileUtils.stub cp_r: true
+ FileUtils.stub mv: true
+ Rake::Task["gitlab:shell:setup"].stub invoke: true
end
- let(:gitlab_version) { %x{git rev-parse HEAD}.gsub(/\n/,"") }
+ let(:gitlab_version) { Gitlab::VERSION }
it 'should fail on mismatch' do
- YAML.stub load_file: {gitlab_version: gitlab_version.reverse}
+ YAML.stub load_file: {gitlab_version: "not #{gitlab_version}" }
expect { run_rake_task }.to raise_error SystemExit
end
@@ -39,7 +43,8 @@ describe 'gitlab:app namespace rake task' do
YAML.stub load_file: {gitlab_version: gitlab_version}
Rake::Task["gitlab:backup:db:restore"].should_receive :invoke
Rake::Task["gitlab:backup:repo:restore"].should_receive :invoke
- expect { run_rake_task }.to_not raise_error SystemExit
+ Rake::Task["gitlab:shell:setup"].should_receive :invoke
+ expect { run_rake_task }.to_not raise_error
end
end
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index 46e86dbe00a..e6bf79b853c 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -9,7 +9,7 @@ describe PostReceive do
end
context "web hook" do
- let(:project) { create(:project_with_code) }
+ let(:project) { create(:project) }
let(:key) { create(:key, user: project.owner) }
let(:key_id) { key.shell_id }
@@ -19,7 +19,7 @@ describe PostReceive do
end
it "does not run if the author is not in the project" do
- Key.stub(find_by_id: nil)
+ Key.stub(:find_by).with(hash_including(id: anything())) { nil }
project.should_not_receive(:execute_hooks)
diff --git a/vendor/assets/images/authbuttons/github_32.png b/vendor/assets/images/authbuttons/github_32.png
index 247e52a5f42..c56eef05eb9 100644
--- a/vendor/assets/images/authbuttons/github_32.png
+++ b/vendor/assets/images/authbuttons/github_32.png
Binary files differ
diff --git a/vendor/assets/images/authbuttons/github_64.png b/vendor/assets/images/authbuttons/github_64.png
index fca7bf44652..39de55bc796 100644
--- a/vendor/assets/images/authbuttons/github_64.png
+++ b/vendor/assets/images/authbuttons/github_64.png
Binary files differ
diff --git a/vendor/assets/images/authbuttons/google_32.png b/vendor/assets/images/authbuttons/google_32.png
index 3909e9de93b..6225cc9c2d7 100644
--- a/vendor/assets/images/authbuttons/google_32.png
+++ b/vendor/assets/images/authbuttons/google_32.png
Binary files differ
diff --git a/vendor/assets/images/authbuttons/google_64.png b/vendor/assets/images/authbuttons/google_64.png
index e55f34f1b7d..4d608f71008 100644
--- a/vendor/assets/images/authbuttons/google_64.png
+++ b/vendor/assets/images/authbuttons/google_64.png
Binary files differ
diff --git a/vendor/assets/images/authbuttons/twitter_32.png b/vendor/assets/images/authbuttons/twitter_32.png
index daadcffd315..696eb02484d 100644
--- a/vendor/assets/images/authbuttons/twitter_32.png
+++ b/vendor/assets/images/authbuttons/twitter_32.png
Binary files differ
diff --git a/vendor/assets/images/authbuttons/twitter_64.png b/vendor/assets/images/authbuttons/twitter_64.png
index 68b74530c06..2893274766f 100644
--- a/vendor/assets/images/authbuttons/twitter_64.png
+++ b/vendor/assets/images/authbuttons/twitter_64.png
Binary files differ
diff --git a/vendor/assets/images/bg_fallback.png b/vendor/assets/images/bg_fallback.png
index 4b2754b8040..d9066ad7d7b 100644
--- a/vendor/assets/images/bg_fallback.png
+++ b/vendor/assets/images/bg_fallback.png
Binary files differ
diff --git a/vendor/assets/images/icon_sprite.png b/vendor/assets/images/icon_sprite.png
index 636c80f2216..9ad65fc443b 100644
--- a/vendor/assets/images/icon_sprite.png
+++ b/vendor/assets/images/icon_sprite.png
Binary files differ
diff --git a/vendor/assets/images/progress_bar.gif b/vendor/assets/images/progress_bar.gif
index 156fbb53137..c3d43fa40b2 100644
--- a/vendor/assets/images/progress_bar.gif
+++ b/vendor/assets/images/progress_bar.gif
Binary files differ
diff --git a/vendor/assets/images/slider_handles.png b/vendor/assets/images/slider_handles.png
index b95a46eca97..a6d477033fa 100644
--- a/vendor/assets/images/slider_handles.png
+++ b/vendor/assets/images/slider_handles.png
Binary files differ
diff --git a/vendor/assets/images/ui-icons_222222_256x240.png b/vendor/assets/images/ui-icons_222222_256x240.png
index b273ff111d2..8bc06cbf03b 100644
--- a/vendor/assets/images/ui-icons_222222_256x240.png
+++ b/vendor/assets/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/vendor/assets/images/ui-icons_454545_256x240.png b/vendor/assets/images/ui-icons_454545_256x240.png
index 59bd45b907c..cfd1eaffaae 100644
--- a/vendor/assets/images/ui-icons_454545_256x240.png
+++ b/vendor/assets/images/ui-icons_454545_256x240.png
Binary files differ
diff --git a/vendor/assets/javascripts/ace-src-noconflict/ace.js b/vendor/assets/javascripts/ace-src-noconflict/ace.js
deleted file mode 100644
index 8bd2d9a6051..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/ace.js
+++ /dev/null
@@ -1,15881 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/**
- * Define a module along with a payload
- * @param module a name for the payload
- * @param payload a function to call with (require, exports, module) params
- */
-
-(function() {
-
-var ACE_NAMESPACE = "ace";
-
-var global = (function() {
- return this;
-})();
-
-// take care of the case when requirejs is used and we just need to patch it a little bit
-if (!ACE_NAMESPACE && typeof requirejs !== "undefined") {
-
- var define = global.define;
- global.define = function(id, deps, callback) {
- if (typeof callback !== "function")
- return define.apply(this, arguments);
-
- return ace.define(id, deps, function(require, exports, module) {
- if (deps[2] == "module")
- module.packaged = true;
- return callback.apply(this, arguments);
- });
- };
- global.define.packaged = true;
-
- return;
-}
-
-
-var _define = function(module, deps, payload) {
- if (typeof module !== 'string') {
- if (_define.original)
- _define.original.apply(window, arguments);
- else {
- console.error('dropping module because define wasn\'t a string.');
- console.trace();
- }
- return;
- }
-
- if (arguments.length == 2)
- payload = deps;
-
- if (!_define.modules)
- _define.modules = {};
-
- _define.modules[module] = payload;
-};
-var _require = function(parentId, module, callback) {
- if (Object.prototype.toString.call(module) === "[object Array]") {
- var params = [];
- for (var i = 0, l = module.length; i < l; ++i) {
- var dep = lookup(parentId, module[i]);
- if (!dep && _require.original)
- return _require.original.apply(window, arguments);
- params.push(dep);
- }
- if (callback) {
- callback.apply(null, params);
- }
- }
- else if (typeof module === 'string') {
- var payload = lookup(parentId, module);
- if (!payload && _require.original)
- return _require.original.apply(window, arguments);
-
- if (callback) {
- callback();
- }
-
- return payload;
- }
- else {
- if (_require.original)
- return _require.original.apply(window, arguments);
- }
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-var lookup = function(parentId, moduleName) {
-
- moduleName = normalizeModule(parentId, moduleName);
-
- var module = _define.modules[moduleName];
- if (!module) {
- return null;
- }
-
- if (typeof module === 'function') {
- var exports = {};
- var mod = {
- id: moduleName,
- uri: '',
- exports: exports,
- packaged: true
- };
-
- var req = function(module, callback) {
- return _require(moduleName, module, callback);
- };
-
- var returnValue = module(req, exports, mod);
- exports = returnValue || mod.exports;
-
- // cache the resulting module object for next time
- _define.modules[moduleName] = exports;
- return exports;
- }
-
- return module;
-};
-
-function exportAce(ns) {
- var require = function(module, callback) {
- return _require("", module, callback);
- };
-
- var root = global;
- if (ns) {
- if (!global[ns])
- global[ns] = {};
- root = global[ns];
- }
-
- if (!root.define || !root.define.packaged) {
- _define.original = root.define;
- root.define = _define;
- root.define.packaged = true;
- }
-
- if (!root.require || !root.require.packaged) {
- _require.original = root.require;
- root.require = require;
- root.require.packaged = true;
- }
-}
-
-exportAce(ACE_NAMESPACE);
-
-})();
-
-/**
- * class Ace
- *
- * The main class required to set up an Ace instance in the browser.
- *
- *
- **/
-
-ace.define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/multi_select', 'ace/worker/worker_client', 'ace/keyboard/hash_handler', 'ace/keyboard/state_handler', 'ace/placeholder', 'ace/config', 'ace/theme/textmate'], function(require, exports, module) {
-
-
-require("./lib/fixoldbrowsers");
-
-var Dom = require("./lib/dom");
-var Event = require("./lib/event");
-
-var Editor = require("./editor").Editor;
-var EditSession = require("./edit_session").EditSession;
-var UndoManager = require("./undomanager").UndoManager;
-var Renderer = require("./virtual_renderer").VirtualRenderer;
-var MultiSelect = require("./multi_select").MultiSelect;
-
-// The following require()s are for inclusion in the built ace file
-require("./worker/worker_client");
-require("./keyboard/hash_handler");
-require("./keyboard/state_handler");
-require("./placeholder");
-exports.config = require("./config");
-exports.edit = function(el) {
- if (typeof(el) == "string") {
- var _id = el;
- if (!(el = document.getElementById(el))) {
- console.log("can't match div #" + _id);
- }
- }
-
- if (el.env && el.env.editor instanceof Editor)
- return el.env.editor;
-
- var doc = new EditSession(Dom.getInnerText(el));
- doc.setUndoManager(new UndoManager());
- el.innerHTML = '';
-
- var editor = new Editor(new Renderer(el, require("./theme/textmate")));
- new MultiSelect(editor);
- editor.setSession(doc);
-
- var env = {};
- env.document = doc;
- env.editor = editor;
- editor.resize();
- Event.addListener(window, "resize", function() {
- editor.resize();
- });
- el.env = env;
- // Store env on editor such that it can be accessed later on from
- // the returned object.
- editor.env = env;
- return editor;
-};
-
-});
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-ace.define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-ace.define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-ace.define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-ace.define('ace/lib/dom', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var XHTML_NS = "http://www.w3.org/1999/xhtml";
-
-exports.createElement = function(tag, ns) {
- return document.createElementNS ?
- document.createElementNS(ns || XHTML_NS, tag) :
- document.createElement(tag);
-};
-
-exports.setText = function(elem, text) {
- if (elem.innerText !== undefined) {
- elem.innerText = text;
- }
- if (elem.textContent !== undefined) {
- elem.textContent = text;
- }
-};
-
-exports.hasCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g);
- return classes.indexOf(name) !== -1;
-};
-exports.addCssClass = function(el, name) {
- if (!exports.hasCssClass(el, name)) {
- el.className += " " + name;
- }
-};
-exports.removeCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g);
- while (true) {
- var index = classes.indexOf(name);
- if (index == -1) {
- break;
- }
- classes.splice(index, 1);
- }
- el.className = classes.join(" ");
-};
-
-exports.toggleCssClass = function(el, name) {
- var classes = el.className.split(/\s+/g), add = true;
- while (true) {
- var index = classes.indexOf(name);
- if (index == -1) {
- break;
- }
- add = false;
- classes.splice(index, 1);
- }
- if(add)
- classes.push(name);
-
- el.className = classes.join(" ");
- return add;
-};
-exports.setCssClass = function(node, className, include) {
- if (include) {
- exports.addCssClass(node, className);
- } else {
- exports.removeCssClass(node, className);
- }
-};
-
-exports.hasCssString = function(id, doc) {
- var index = 0, sheets;
- doc = doc || document;
-
- if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
- while (index < sheets.length)
- if (sheets[index++].owningElement.id === id) return true;
- } else if ((sheets = doc.getElementsByTagName("style"))) {
- while (index < sheets.length)
- if (sheets[index++].id === id) return true;
- }
-
- return false;
-};
-
-exports.importCssString = function importCssString(cssText, id, doc) {
- doc = doc || document;
- // If style is already imported return immediately.
- if (id && exports.hasCssString(id, doc))
- return null;
-
- var style;
-
- if (doc.createStyleSheet) {
- style = doc.createStyleSheet();
- style.cssText = cssText;
- if (id)
- style.owningElement.id = id;
- } else {
- style = doc.createElementNS
- ? doc.createElementNS(XHTML_NS, "style")
- : doc.createElement("style");
-
- style.appendChild(doc.createTextNode(cssText));
- if (id)
- style.id = id;
-
- var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
- head.appendChild(style);
- }
-};
-
-exports.importCssStylsheet = function(uri, doc) {
- if (doc.createStyleSheet) {
- doc.createStyleSheet(uri);
- } else {
- var link = exports.createElement('link');
- link.rel = 'stylesheet';
- link.href = uri;
-
- var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
- head.appendChild(link);
- }
-};
-
-exports.getInnerWidth = function(element) {
- return (
- parseInt(exports.computedStyle(element, "paddingLeft"), 10) +
- parseInt(exports.computedStyle(element, "paddingRight"), 10) +
- element.clientWidth
- );
-};
-
-exports.getInnerHeight = function(element) {
- return (
- parseInt(exports.computedStyle(element, "paddingTop"), 10) +
- parseInt(exports.computedStyle(element, "paddingBottom"), 10) +
- element.clientHeight
- );
-};
-
-if (window.pageYOffset !== undefined) {
- exports.getPageScrollTop = function() {
- return window.pageYOffset;
- };
-
- exports.getPageScrollLeft = function() {
- return window.pageXOffset;
- };
-}
-else {
- exports.getPageScrollTop = function() {
- return document.body.scrollTop;
- };
-
- exports.getPageScrollLeft = function() {
- return document.body.scrollLeft;
- };
-}
-
-if (window.getComputedStyle)
- exports.computedStyle = function(element, style) {
- if (style)
- return (window.getComputedStyle(element, "") || {})[style] || "";
- return window.getComputedStyle(element, "") || {};
- };
-else
- exports.computedStyle = function(element, style) {
- if (style)
- return element.currentStyle[style];
- return element.currentStyle;
- };
-
-exports.scrollbarWidth = function(document) {
-
- var inner = exports.createElement("p");
- inner.style.width = "100%";
- inner.style.minWidth = "0px";
- inner.style.height = "200px";
-
- var outer = exports.createElement("div");
- var style = outer.style;
-
- style.position = "absolute";
- style.left = "-10000px";
- style.overflow = "hidden";
- style.width = "200px";
- style.minWidth = "0px";
- style.height = "150px";
-
- outer.appendChild(inner);
-
- var body = document.body || document.documentElement;
- body.appendChild(outer);
-
- var noScrollbar = inner.offsetWidth;
-
- style.overflow = "scroll";
- var withScrollbar = inner.offsetWidth;
-
- if (noScrollbar == withScrollbar) {
- withScrollbar = outer.clientWidth;
- }
-
- body.removeChild(outer);
-
- return noScrollbar-withScrollbar;
-};
-exports.setInnerHtml = function(el, innerHtml) {
- var element = el.cloneNode(false);//document.createElement("div");
- element.innerHTML = innerHtml;
- el.parentNode.replaceChild(element, el);
- return element;
-};
-
-exports.setInnerText = function(el, innerText) {
- var document = el.ownerDocument;
- if (document.body && "textContent" in document.body)
- el.textContent = innerText;
- else
- el.innerText = innerText;
-
-};
-
-exports.getInnerText = function(el) {
- var document = el.ownerDocument;
- if (document.body && "textContent" in document.body)
- return el.textContent;
- else
- return el.innerText || el.textContent || "";
-};
-
-exports.getParentWindow = function(document) {
- return document.defaultView || document.parentWindow;
-};
-
-});
-
-ace.define('ace/lib/event', ['require', 'exports', 'module' , 'ace/lib/keys', 'ace/lib/useragent', 'ace/lib/dom'], function(require, exports, module) {
-
-
-var keys = require("./keys");
-var useragent = require("./useragent");
-var dom = require("./dom");
-
-exports.addListener = function(elem, type, callback) {
- if (elem.addEventListener) {
- return elem.addEventListener(type, callback, false);
- }
- if (elem.attachEvent) {
- var wrapper = function() {
- callback(window.event);
- };
- callback._wrapper = wrapper;
- elem.attachEvent("on" + type, wrapper);
- }
-};
-
-exports.removeListener = function(elem, type, callback) {
- if (elem.removeEventListener) {
- return elem.removeEventListener(type, callback, false);
- }
- if (elem.detachEvent) {
- elem.detachEvent("on" + type, callback._wrapper || callback);
- }
-};
-exports.stopEvent = function(e) {
- exports.stopPropagation(e);
- exports.preventDefault(e);
- return false;
-};
-
-exports.stopPropagation = function(e) {
- if (e.stopPropagation)
- e.stopPropagation();
- else
- e.cancelBubble = true;
-};
-
-exports.preventDefault = function(e) {
- if (e.preventDefault)
- e.preventDefault();
- else
- e.returnValue = false;
-};
-exports.getButton = function(e) {
- if (e.type == "dblclick")
- return 0;
- if (e.type == "contextmenu" || (e.ctrlKey && useragent.isMac))
- return 2;
-
- // DOM Event
- if (e.preventDefault) {
- return e.button;
- }
- // old IE
- else {
- return {1:0, 2:2, 4:1}[e.button];
- }
-};
-
-if (document.documentElement.setCapture) {
- exports.capture = function(el, eventHandler, releaseCaptureHandler) {
- var called = false;
- function onReleaseCapture(e) {
- eventHandler(e);
-
- if (!called) {
- called = true;
- releaseCaptureHandler(e);
- }
-
- exports.removeListener(el, "mousemove", eventHandler);
- exports.removeListener(el, "mouseup", onReleaseCapture);
- exports.removeListener(el, "losecapture", onReleaseCapture);
-
- el.releaseCapture();
- }
-
- exports.addListener(el, "mousemove", eventHandler);
- exports.addListener(el, "mouseup", onReleaseCapture);
- exports.addListener(el, "losecapture", onReleaseCapture);
- el.setCapture();
- };
-}
-else {
- exports.capture = function(el, eventHandler, releaseCaptureHandler) {
- function onMouseUp(e) {
- eventHandler && eventHandler(e);
- releaseCaptureHandler && releaseCaptureHandler(e);
-
- document.removeEventListener("mousemove", eventHandler, true);
- document.removeEventListener("mouseup", onMouseUp, true);
-
- e.stopPropagation();
- }
-
- document.addEventListener("mousemove", eventHandler, true);
- document.addEventListener("mouseup", onMouseUp, true);
- };
-}
-
-exports.addMouseWheelListener = function(el, callback) {
- var factor = 8;
- var listener = function(e) {
- if (e.wheelDelta !== undefined) {
- if (e.wheelDeltaX !== undefined) {
- e.wheelX = -e.wheelDeltaX / factor;
- e.wheelY = -e.wheelDeltaY / factor;
- } else {
- e.wheelX = 0;
- e.wheelY = -e.wheelDelta / factor;
- }
- }
- else {
- if (e.axis && e.axis == e.HORIZONTAL_AXIS) {
- e.wheelX = (e.detail || 0) * 5;
- e.wheelY = 0;
- } else {
- e.wheelX = 0;
- e.wheelY = (e.detail || 0) * 5;
- }
- }
- callback(e);
- };
- exports.addListener(el, "DOMMouseScroll", listener);
- exports.addListener(el, "mousewheel", listener);
-};
-
-exports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbackName) {
- var clicks = 0;
- var startX, startY, timer;
- var eventNames = {
- 2: "dblclick",
- 3: "tripleclick",
- 4: "quadclick"
- };
-
- exports.addListener(el, "mousedown", function(e) {
- if (exports.getButton(e) != 0) {
- clicks = 0;
- } else {
- var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;
-
- if (!timer || isNewClick)
- clicks = 0;
-
- clicks += 1;
-
- if (timer)
- clearTimeout(timer)
- timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);
- }
- if (clicks == 1) {
- startX = e.clientX;
- startY = e.clientY;
- }
-
- eventHandler[callbackName]("mousedown", e);
-
- if (clicks > 4)
- clicks = 0;
- else if (clicks > 1)
- return eventHandler[callbackName](eventNames[clicks], e);
- });
-
- if (useragent.isOldIE) {
- exports.addListener(el, "dblclick", function(e) {
- clicks = 2;
- if (timer)
- clearTimeout(timer);
- timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);
- eventHandler[callbackName]("mousedown", e);
- eventHandler[callbackName](eventNames[clicks], e);
- });
- }
-};
-
-function normalizeCommandKeys(callback, e, keyCode) {
- var hashId = 0;
- if ((useragent.isOpera && !("KeyboardEvent" in window)) && useragent.isMac) {
- hashId = 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0)
- | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);
- } else {
- hashId = 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0)
- | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
- }
-
- if (keyCode in keys.MODIFIER_KEYS) {
- switch (keys.MODIFIER_KEYS[keyCode]) {
- case "Alt":
- hashId = 2;
- break;
- case "Shift":
- hashId = 4;
- break;
- case "Ctrl":
- hashId = 1;
- break;
- default:
- hashId = 8;
- break;
- }
- keyCode = 0;
- }
-
- if (hashId & 8 && (keyCode == 91 || keyCode == 93)) {
- keyCode = 0;
- }
-
- // If there is no hashID and the keyCode is not a function key, then
- // we don't call the callback as we don't handle a command key here
- // (it's a normal key/character input).
- if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {
- return false;
- }
- return callback(e, hashId, keyCode);
-}
-
-exports.addCommandKeyListener = function(el, callback) {
- var addListener = exports.addListener;
- if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) {
- // Old versions of Gecko aka. Firefox < 4.0 didn't repeat the keydown
- // event if the user pressed the key for a longer time. Instead, the
- // keydown event was fired once and later on only the keypress event.
- // To emulate the 'right' keydown behavior, the keyCode of the initial
- // keyDown event is stored and in the following keypress events the
- // stores keyCode is used to emulate a keyDown event.
- var lastKeyDownKeyCode = null;
- addListener(el, "keydown", function(e) {
- lastKeyDownKeyCode = e.keyCode;
- });
- addListener(el, "keypress", function(e) {
- return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);
- });
- } else {
- var lastDown = null;
-
- addListener(el, "keydown", function(e) {
- lastDown = e.keyIdentifier || e.keyCode;
- return normalizeCommandKeys(callback, e, e.keyCode);
- });
- }
-};
-
-if (window.postMessage && !useragent.isOldIE) {
- var postMessageId = 1;
- exports.nextTick = function(callback, win) {
- win = win || window;
- var messageName = "zero-timeout-message-" + postMessageId;
- exports.addListener(win, "message", function listener(e) {
- if (e.data == messageName) {
- exports.stopPropagation(e);
- exports.removeListener(win, "message", listener);
- callback();
- }
- });
- win.postMessage(messageName, "*");
- };
-}
-else {
- exports.nextTick = function(callback, win) {
- win = win || window;
- window.setTimeout(callback, 0);
- };
-}
-
-});
-
-// Most of the following code is taken from SproutCore with a few changes.
-
-ace.define('ace/lib/keys', ['require', 'exports', 'module' , 'ace/lib/oop'], function(require, exports, module) {
-
-
-var oop = require("./oop");
-var Keys = (function() {
- var ret = {
- MODIFIER_KEYS: {
- 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'
- },
-
- KEY_MODS: {
- "ctrl": 1, "alt": 2, "option" : 2,
- "shift": 4, "meta": 8, "command": 8
- },
-
- FUNCTION_KEYS : {
- 8 : "Backspace",
- 9 : "Tab",
- 13 : "Return",
- 19 : "Pause",
- 27 : "Esc",
- 32 : "Space",
- 33 : "PageUp",
- 34 : "PageDown",
- 35 : "End",
- 36 : "Home",
- 37 : "Left",
- 38 : "Up",
- 39 : "Right",
- 40 : "Down",
- 44 : "Print",
- 45 : "Insert",
- 46 : "Delete",
- 96 : "Numpad0",
- 97 : "Numpad1",
- 98 : "Numpad2",
- 99 : "Numpad3",
- 100: "Numpad4",
- 101: "Numpad5",
- 102: "Numpad6",
- 103: "Numpad7",
- 104: "Numpad8",
- 105: "Numpad9",
- 112: "F1",
- 113: "F2",
- 114: "F3",
- 115: "F4",
- 116: "F5",
- 117: "F6",
- 118: "F7",
- 119: "F8",
- 120: "F9",
- 121: "F10",
- 122: "F11",
- 123: "F12",
- 144: "Numlock",
- 145: "Scrolllock"
- },
-
- PRINTABLE_KEYS: {
- 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',
- 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',
- 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',
- 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',
- 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',
- 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',
- 188: ',', 190: '.', 191: '/', 192: '`', 219: '[', 220: '\\',
- 221: ']', 222: '\''
- }
- };
-
- // A reverse map of FUNCTION_KEYS
- for (var i in ret.FUNCTION_KEYS) {
- var name = ret.FUNCTION_KEYS[i].toLowerCase();
- ret[name] = parseInt(i, 10);
- }
-
- // Add the MODIFIER_KEYS, FUNCTION_KEYS and PRINTABLE_KEYS to the KEY
- // variables as well.
- oop.mixin(ret, ret.MODIFIER_KEYS);
- oop.mixin(ret, ret.PRINTABLE_KEYS);
- oop.mixin(ret, ret.FUNCTION_KEYS);
-
- // aliases
- ret.enter = ret["return"];
- ret.escape = ret.esc;
- ret.del = ret["delete"];
-
- // workaround for firefox bug
- ret[173] = '-';
-
- return ret;
-})();
-oop.mixin(exports, Keys);
-
-exports.keyCodeToString = function(keyCode) {
- return (Keys[keyCode] || String.fromCharCode(keyCode)).toLowerCase();
-}
-
-});
-
-ace.define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-ace.define('ace/lib/useragent', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase();
-var ua = navigator.userAgent;
-
-// Is the user using a browser that identifies itself as Windows
-exports.isWin = (os == "win");
-
-// Is the user using a browser that identifies itself as Mac OS
-exports.isMac = (os == "mac");
-
-// Is the user using a browser that identifies itself as Linux
-exports.isLinux = (os == "linux");
-
-exports.isIE =
- navigator.appName == "Microsoft Internet Explorer"
- && parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]);
-
-exports.isOldIE = exports.isIE && exports.isIE < 9;
-
-// Is this Firefox or related?
-exports.isGecko = exports.isMozilla = window.controllers && window.navigator.product === "Gecko";
-
-// oldGecko == rev < 2.0
-exports.isOldGecko = exports.isGecko && parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1], 10) < 4;
-
-// Is this Opera
-exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";
-
-// Is the user using a browser that identifies itself as WebKit
-exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;
-
-exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined;
-
-exports.isAIR = ua.indexOf("AdobeAIR") >= 0;
-
-exports.isIPad = ua.indexOf("iPad") >= 0;
-
-exports.isTouchPad = ua.indexOf("TouchPad") >= 0;
-exports.OS = {
- LINUX: "LINUX",
- MAC: "MAC",
- WINDOWS: "WINDOWS"
-};
-exports.getOS = function() {
- if (exports.isMac) {
- return exports.OS.MAC;
- } else if (exports.isLinux) {
- return exports.OS.LINUX;
- } else {
- return exports.OS.WINDOWS;
- }
-};
-
-});
-
-ace.define('ace/editor', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/useragent', 'ace/keyboard/textinput', 'ace/mouse/mouse_handler', 'ace/mouse/fold_handler', 'ace/keyboard/keybinding', 'ace/edit_session', 'ace/search', 'ace/range', 'ace/lib/event_emitter', 'ace/commands/command_manager', 'ace/commands/default_commands'], function(require, exports, module) {
-
-
-require("./lib/fixoldbrowsers");
-
-var oop = require("./lib/oop");
-var lang = require("./lib/lang");
-var useragent = require("./lib/useragent");
-var TextInput = require("./keyboard/textinput").TextInput;
-var MouseHandler = require("./mouse/mouse_handler").MouseHandler;
-var FoldHandler = require("./mouse/fold_handler").FoldHandler;
-var KeyBinding = require("./keyboard/keybinding").KeyBinding;
-var EditSession = require("./edit_session").EditSession;
-var Search = require("./search").Search;
-var Range = require("./range").Range;
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var CommandManager = require("./commands/command_manager").CommandManager;
-var defaultCommands = require("./commands/default_commands").commands;
-
-/**
- * new Editor(renderer, session)
- * - renderer (VirtualRenderer): Associated `VirtualRenderer` that draws everything
- * - session (EditSession): The `EditSession` to refer to
- *
- * Creates a new `Editor` object.
- *
- **/
-var Editor = function(renderer, session) {
- var container = renderer.getContainerElement();
- this.container = container;
- this.renderer = renderer;
-
- this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands);
- this.textInput = new TextInput(renderer.getTextAreaContainer(), this);
- this.renderer.textarea = this.textInput.getElement();
- this.keyBinding = new KeyBinding(this);
-
- // TODO detect touch event support
- this.$mouseHandler = new MouseHandler(this);
- new FoldHandler(this);
-
- this.$blockScrolling = 0;
- this.$search = new Search().set({
- wrap: true
- });
-
- this.setSession(session || new EditSession(""));
-};
-
-(function(){
-
- oop.implement(this, EventEmitter);
- this.setKeyboardHandler = function(keyboardHandler) {
- this.keyBinding.setKeyboardHandler(keyboardHandler);
- };
- this.getKeyboardHandler = function() {
- return this.keyBinding.getKeyboardHandler();
- };
- /**
- * Editor@changeSession(e)
- * - e (Object): An object with two properties, `oldSession` and `session`, that represent the old and new [[EditSession]]s.
- *
- * Emitted whenever the [[EditSession]] changes.
- **/
- this.setSession = function(session) {
- if (this.session == session)
- return;
-
- if (this.session) {
- var oldSession = this.session;
- this.session.removeEventListener("change", this.$onDocumentChange);
- this.session.removeEventListener("changeMode", this.$onChangeMode);
- this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate);
- this.session.removeEventListener("changeTabSize", this.$onChangeTabSize);
- this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit);
- this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode);
- this.session.removeEventListener("onChangeFold", this.$onChangeFold);
- this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker);
- this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker);
- this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint);
- this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation);
- this.session.removeEventListener("changeOverwrite", this.$onCursorChange);
- this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange);
- this.session.removeEventListener("changeLeftTop", this.$onScrollLeftChange);
-
- var selection = this.session.getSelection();
- selection.removeEventListener("changeCursor", this.$onCursorChange);
- selection.removeEventListener("changeSelection", this.$onSelectionChange);
- }
-
- this.session = session;
-
- this.$onDocumentChange = this.onDocumentChange.bind(this);
- session.addEventListener("change", this.$onDocumentChange);
- this.renderer.setSession(session);
-
- this.$onChangeMode = this.onChangeMode.bind(this);
- session.addEventListener("changeMode", this.$onChangeMode);
-
- this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);
- session.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate);
-
- this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);
- session.addEventListener("changeTabSize", this.$onChangeTabSize);
-
- this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);
- session.addEventListener("changeWrapLimit", this.$onChangeWrapLimit);
-
- this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);
- session.addEventListener("changeWrapMode", this.$onChangeWrapMode);
-
- this.$onChangeFold = this.onChangeFold.bind(this);
- session.addEventListener("changeFold", this.$onChangeFold);
-
- this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);
- this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker);
-
- this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);
- this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker);
-
- this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);
- this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint);
-
- this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);
- this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation);
-
- this.$onCursorChange = this.onCursorChange.bind(this);
- this.session.addEventListener("changeOverwrite", this.$onCursorChange);
-
- this.$onScrollTopChange = this.onScrollTopChange.bind(this);
- this.session.addEventListener("changeScrollTop", this.$onScrollTopChange);
-
- this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);
- this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange);
-
- this.selection = session.getSelection();
- this.selection.addEventListener("changeCursor", this.$onCursorChange);
-
- this.$onSelectionChange = this.onSelectionChange.bind(this);
- this.selection.addEventListener("changeSelection", this.$onSelectionChange);
-
- this.onChangeMode();
-
- this.$blockScrolling += 1;
- this.onCursorChange();
- this.$blockScrolling -= 1;
-
- this.onScrollTopChange();
- this.onScrollLeftChange();
- this.onSelectionChange();
- this.onChangeFrontMarker();
- this.onChangeBackMarker();
- this.onChangeBreakpoint();
- this.onChangeAnnotation();
- this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();
- this.renderer.updateFull();
-
- this._emit("changeSession", {
- session: session,
- oldSession: oldSession
- });
- };
- this.getSession = function() {
- return this.session;
- };
- this.setValue = function(val, cursorPos) {
- this.session.doc.setValue(val);
-
- if (!cursorPos)
- this.selectAll();
- else if (cursorPos == 1)
- this.navigateFileEnd();
- else if (cursorPos == -1)
- this.navigateFileStart();
-
- return val;
- };
- this.getValue = function() {
- return this.session.getValue();
- };
- this.getSelection = function() {
- return this.selection;
- };
- this.resize = function(force) {
- this.renderer.onResize(force);
- };
- this.setTheme = function(theme) {
- this.renderer.setTheme(theme);
- };
- this.getTheme = function() {
- return this.renderer.getTheme();
- };
- this.setStyle = function(style) {
- this.renderer.setStyle(style);
- };
- this.unsetStyle = function(style) {
- this.renderer.unsetStyle(style);
- };
- this.setFontSize = function(size) {
- this.container.style.fontSize = size;
- this.renderer.updateFontSize();
- };
- this.$highlightBrackets = function() {
- if (this.session.$bracketHighlight) {
- this.session.removeMarker(this.session.$bracketHighlight);
- this.session.$bracketHighlight = null;
- }
-
- if (this.$highlightPending) {
- return;
- }
-
- // perform highlight async to not block the browser during navigation
- var self = this;
- this.$highlightPending = true;
- setTimeout(function() {
- self.$highlightPending = false;
-
- var pos = self.session.findMatchingBracket(self.getCursorPosition());
- if (pos) {
- var range = new Range(pos.row, pos.column, pos.row, pos.column+1);
- self.session.$bracketHighlight = self.session.addMarker(range, "ace_bracket", "text");
- }
- }, 10);
- };
- this.focus = function() {
- // Safari needs the timeout
- // iOS and Firefox need it called immediately
- // to be on the save side we do both
- var _self = this;
- setTimeout(function() {
- _self.textInput.focus();
- });
- this.textInput.focus();
- };
- this.isFocused = function() {
- return this.textInput.isFocused();
- };
- this.blur = function() {
- this.textInput.blur();
- };
- this.onFocus = function() {
- if (this.$isFocused)
- return;
- this.$isFocused = true;
- this.renderer.showCursor();
- this.renderer.visualizeFocus();
- this._emit("focus");
- };
- this.onBlur = function() {
- if (!this.$isFocused)
- return;
- this.$isFocused = false;
- this.renderer.hideCursor();
- this.renderer.visualizeBlur();
- this._emit("blur");
- };
-
- this.$cursorChange = function() {
- this.renderer.updateCursor();
- };
- this.onDocumentChange = function(e) {
- var delta = e.data;
- var range = delta.range;
- var lastRow;
-
- if (range.start.row == range.end.row && delta.action != "insertLines" && delta.action != "removeLines")
- lastRow = range.end.row;
- else
- lastRow = Infinity;
- this.renderer.updateLines(range.start.row, lastRow);
-
- this._emit("change", e);
-
- // update cursor because tab characters can influence the cursor position
- this.$cursorChange();
- };
-
- this.onTokenizerUpdate = function(e) {
- var rows = e.data;
- this.renderer.updateLines(rows.first, rows.last);
- };
-
-
- this.onScrollTopChange = function() {
- this.renderer.scrollToY(this.session.getScrollTop());
- };
-
- this.onScrollLeftChange = function() {
- this.renderer.scrollToX(this.session.getScrollLeft());
- };
- this.onCursorChange = function() {
- this.$cursorChange();
-
- if (!this.$blockScrolling) {
- this.renderer.scrollCursorIntoView();
- }
-
- this.$highlightBrackets();
- this.$updateHighlightActiveLine();
- this._emit("changeSelection");
- };
- this.$updateHighlightActiveLine = function() {
- var session = this.getSession();
-
- if (session.$highlightLineMarker)
- session.removeMarker(session.$highlightLineMarker);
-
- session.$highlightLineMarker = null;
-
- if (this.$highlightActiveLine) {
- var cursor = this.getCursorPosition();
- var foldLine = this.session.getFoldLine(cursor.row);
-
- if ((this.getSelectionStyle() != "line" || !this.selection.isMultiLine())) {
- var range;
- if (foldLine) {
- range = new Range(foldLine.start.row, 0, foldLine.end.row + 1, 0);
- } else {
- range = new Range(cursor.row, 0, cursor.row+1, 0);
- }
- session.$highlightLineMarker = session.addMarker(range, "ace_active_line", "background");
- }
- }
- };
-
-
- this.onSelectionChange = function(e) {
- var session = this.session;
-
- if (session.$selectionMarker) {
- session.removeMarker(session.$selectionMarker);
- }
- session.$selectionMarker = null;
-
- if (!this.selection.isEmpty()) {
- var range = this.selection.getRange();
- var style = this.getSelectionStyle();
- session.$selectionMarker = session.addMarker(range, "ace_selection", style);
- } else {
- this.$updateHighlightActiveLine();
- }
-
- var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp()
- this.session.highlight(re);
-
- this._emit("changeSelection");
- };
-
- this.$getSelectionHighLightRegexp = function() {
- var session = this.session;
-
- var selection = this.getSelectionRange();
- if (selection.isEmpty() || selection.isMultiLine())
- return;
-
- var startOuter = selection.start.column - 1;
- var endOuter = selection.end.column + 1;
- var line = session.getLine(selection.start.row);
- var lineCols = line.length;
- var needle = line.substring(Math.max(startOuter, 0),
- Math.min(endOuter, lineCols));
-
- // Make sure the outer characters are not part of the word.
- if ((startOuter >= 0 && /^[\w\d]/.test(needle)) ||
- (endOuter <= lineCols && /[\w\d]$/.test(needle)))
- return;
-
- needle = line.substring(selection.start.column, selection.end.column);
- if (!/^[\w\d]+$/.test(needle))
- return;
-
- var re = this.$search.$assembleRegExp({
- wholeWord: true,
- caseSensitive: true,
- needle: needle
- });
-
- return re;
- };
-
-
- this.onChangeFrontMarker = function() {
- this.renderer.updateFrontMarkers();
- };
-
- this.onChangeBackMarker = function() {
- this.renderer.updateBackMarkers();
- };
-
-
- this.onChangeBreakpoint = function() {
- this.renderer.updateBreakpoints();
- };
-
- this.onChangeAnnotation = function() {
- this.renderer.setAnnotations(this.session.getAnnotations());
- };
-
-
- this.onChangeMode = function() {
- this.renderer.updateText();
- };
-
-
- this.onChangeWrapLimit = function() {
- this.renderer.updateFull();
- };
-
- this.onChangeWrapMode = function() {
- this.renderer.onResize(true);
- };
-
-
- this.onChangeFold = function() {
- // Update the active line marker as due to folding changes the current
- // line range on the screen might have changed.
- this.$updateHighlightActiveLine();
- // TODO: This might be too much updating. Okay for now.
- this.renderer.updateFull();
- };
- /**
- * Editor@copy(text)
- * - text (String): The copied text
- *
- * Emitted when text is copied.
- **/
- this.getCopyText = function() {
- var text = "";
- if (!this.selection.isEmpty())
- text = this.session.getTextRange(this.getSelectionRange());
-
- this._emit("copy", text);
- return text;
- };
- this.onCopy = function() {
- this.commands.exec("copy", this);
- };
- this.onCut = function() {
- this.commands.exec("cut", this);
- };
- /**
- * Editor@paste(text)
- * - text (String): The pasted text
- *
- * Emitted when text is pasted.
- **/
- this.onPaste = function(text) {
- // todo this should change when paste becomes a command
- if (this.$readOnly)
- return;
- this._emit("paste", text);
- this.insert(text);
- };
- this.insert = function(text) {
- var session = this.session;
- var mode = session.getMode();
-
- var cursor = this.getCursorPosition();
-
- if (this.getBehavioursEnabled()) {
- // Get a transform if the current mode wants one.
- var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);
- if (transform)
- text = transform.text;
- }
-
- text = text.replace("\t", this.session.getTabString());
-
- // remove selected text
- if (!this.selection.isEmpty()) {
- cursor = this.session.remove(this.getSelectionRange());
- this.clearSelection();
- }
- else if (this.session.getOverwrite()) {
- var range = new Range.fromPoints(cursor, cursor);
- range.end.column += text.length;
- this.session.remove(range);
- }
-
- this.clearSelection();
-
- var start = cursor.column;
- var lineState = session.getState(cursor.row);
- var shouldOutdent = mode.checkOutdent(lineState, session.getLine(cursor.row), text);
- var line = session.getLine(cursor.row);
- var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());
- var end = session.insert(cursor, text);
-
- if (transform && transform.selection) {
- if (transform.selection.length == 2) { // Transform relative to the current column
- this.selection.setSelectionRange(
- new Range(cursor.row, start + transform.selection[0],
- cursor.row, start + transform.selection[1]));
- } else { // Transform relative to the current row.
- this.selection.setSelectionRange(
- new Range(cursor.row + transform.selection[0],
- transform.selection[1],
- cursor.row + transform.selection[2],
- transform.selection[3]));
- }
- }
-
- var lineState = session.getState(cursor.row);
-
- // TODO disabled multiline auto indent
- // possibly doing the indent before inserting the text
- // if (cursor.row !== end.row) {
- if (session.getDocument().isNewLine(text)) {
- this.moveCursorTo(cursor.row+1, 0);
-
- var size = session.getTabSize();
- var minIndent = Number.MAX_VALUE;
-
- for (var row = cursor.row + 1; row <= end.row; ++row) {
- var indent = 0;
-
- line = session.getLine(row);
- for (var i = 0; i < line.length; ++i)
- if (line.charAt(i) == '\t')
- indent += size;
- else if (line.charAt(i) == ' ')
- indent += 1;
- else
- break;
- if (/[^\s]/.test(line))
- minIndent = Math.min(indent, minIndent);
- }
-
- for (var row = cursor.row + 1; row <= end.row; ++row) {
- var outdent = minIndent;
-
- line = session.getLine(row);
- for (var i = 0; i < line.length && outdent > 0; ++i)
- if (line.charAt(i) == '\t')
- outdent -= size;
- else if (line.charAt(i) == ' ')
- outdent -= 1;
- session.remove(new Range(row, 0, row, i));
- }
- session.indentRows(cursor.row + 1, end.row, lineIndent);
- }
- if (shouldOutdent)
- mode.autoOutdent(lineState, session, cursor.row);
- };
-
- this.onTextInput = function(text) {
- this.keyBinding.onTextInput(text);
- };
-
- this.onCommandKey = function(e, hashId, keyCode) {
- this.keyBinding.onCommandKey(e, hashId, keyCode);
- };
- this.setOverwrite = function(overwrite) {
- this.session.setOverwrite(overwrite);
- };
- this.getOverwrite = function() {
- return this.session.getOverwrite();
- };
- this.toggleOverwrite = function() {
- this.session.toggleOverwrite();
- };
- this.setScrollSpeed = function(speed) {
- this.$mouseHandler.setScrollSpeed(speed);
- };
- this.getScrollSpeed = function() {
- return this.$mouseHandler.getScrollSpeed();
- };
- this.setDragDelay = function(dragDelay) {
- this.$mouseHandler.setDragDelay(dragDelay);
- };
- this.getDragDelay = function() {
- return this.$mouseHandler.getDragDelay();
- };
-
- this.$selectionStyle = "line";
- /**
- * Editor@changeSelectionStyle(data)
- * - data (Object): Contains one property, `data`, which indicates the new selection style
- *
- * Emitted when the selection style changes, via [[Editor.setSelectionStyle]].
- *
- **/
- this.setSelectionStyle = function(style) {
- if (this.$selectionStyle == style) return;
-
- this.$selectionStyle = style;
- this.onSelectionChange();
- this._emit("changeSelectionStyle", {data: style});
- };
- this.getSelectionStyle = function() {
- return this.$selectionStyle;
- };
-
- this.$highlightActiveLine = true;
- this.setHighlightActiveLine = function(shouldHighlight) {
- if (this.$highlightActiveLine == shouldHighlight)
- return;
-
- this.$highlightActiveLine = shouldHighlight;
- this.$updateHighlightActiveLine();
- };
- this.getHighlightActiveLine = function() {
- return this.$highlightActiveLine;
- };
-
- this.$highlightGutterLine = true;
- this.setHighlightGutterLine = function(shouldHighlight) {
- if (this.$highlightGutterLine == shouldHighlight)
- return;
-
- this.renderer.setHighlightGutterLine(shouldHighlight);
- this.$highlightGutterLine = shouldHighlight;
- };
-
- this.getHighlightGutterLine = function() {
- return this.$highlightGutterLine;
- };
-
- this.$highlightSelectedWord = true;
- this.setHighlightSelectedWord = function(shouldHighlight) {
- if (this.$highlightSelectedWord == shouldHighlight)
- return;
-
- this.$highlightSelectedWord = shouldHighlight;
- this.$onSelectionChange();
- };
- this.getHighlightSelectedWord = function() {
- return this.$highlightSelectedWord;
- };
-
- this.setAnimatedScroll = function(shouldAnimate){
- this.renderer.setAnimatedScroll(shouldAnimate);
- };
-
- this.getAnimatedScroll = function(){
- return this.renderer.getAnimatedScroll();
- };
- this.setShowInvisibles = function(showInvisibles) {
- this.renderer.setShowInvisibles(showInvisibles);
- };
- this.getShowInvisibles = function() {
- return this.renderer.getShowInvisibles();
- };
-
- this.setDisplayIndentGuides = function(display) {
- this.renderer.setDisplayIndentGuides(display);
- };
-
- this.getDisplayIndentGuides = function() {
- return this.renderer.getDisplayIndentGuides();
- };
- this.setShowPrintMargin = function(showPrintMargin) {
- this.renderer.setShowPrintMargin(showPrintMargin);
- };
- this.getShowPrintMargin = function() {
- return this.renderer.getShowPrintMargin();
- };
- this.setPrintMarginColumn = function(showPrintMargin) {
- this.renderer.setPrintMarginColumn(showPrintMargin);
- };
- this.getPrintMarginColumn = function() {
- return this.renderer.getPrintMarginColumn();
- };
-
- this.$readOnly = false;
- this.setReadOnly = function(readOnly) {
- this.$readOnly = readOnly;
- };
- this.getReadOnly = function() {
- return this.$readOnly;
- };
-
- this.$modeBehaviours = true;
- this.setBehavioursEnabled = function (enabled) {
- this.$modeBehaviours = enabled;
- };
- this.getBehavioursEnabled = function () {
- return this.$modeBehaviours;
- };
- this.setShowFoldWidgets = function(show) {
- var gutter = this.renderer.$gutterLayer;
- if (gutter.getShowFoldWidgets() == show)
- return;
-
- this.renderer.$gutterLayer.setShowFoldWidgets(show);
- this.$showFoldWidgets = show;
- this.renderer.updateFull();
- };
- this.getShowFoldWidgets = function() {
- return this.renderer.$gutterLayer.getShowFoldWidgets();
- };
-
- this.setFadeFoldWidgets = function(show) {
- this.renderer.setFadeFoldWidgets(show);
- };
-
- this.getFadeFoldWidgets = function() {
- return this.renderer.getFadeFoldWidgets();
- };
- this.remove = function(dir) {
- if (this.selection.isEmpty()){
- if (dir == "left")
- this.selection.selectLeft();
- else
- this.selection.selectRight();
- }
-
- var range = this.getSelectionRange();
- if (this.getBehavioursEnabled()) {
- var session = this.session;
- var state = session.getState(range.start.row);
- var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);
- if (new_range)
- range = new_range;
- }
-
- this.session.remove(range);
- this.clearSelection();
- };
- this.removeWordRight = function() {
- if (this.selection.isEmpty())
- this.selection.selectWordRight();
-
- this.session.remove(this.getSelectionRange());
- this.clearSelection();
- };
- this.removeWordLeft = function() {
- if (this.selection.isEmpty())
- this.selection.selectWordLeft();
-
- this.session.remove(this.getSelectionRange());
- this.clearSelection();
- };
- this.removeToLineStart = function() {
- if (this.selection.isEmpty())
- this.selection.selectLineStart();
-
- this.session.remove(this.getSelectionRange());
- this.clearSelection();
- };
- this.removeToLineEnd = function() {
- if (this.selection.isEmpty())
- this.selection.selectLineEnd();
-
- var range = this.getSelectionRange();
- if (range.start.column == range.end.column && range.start.row == range.end.row) {
- range.end.column = 0;
- range.end.row++;
- }
-
- this.session.remove(range);
- this.clearSelection();
- };
- this.splitLine = function() {
- if (!this.selection.isEmpty()) {
- this.session.remove(this.getSelectionRange());
- this.clearSelection();
- }
-
- var cursor = this.getCursorPosition();
- this.insert("\n");
- this.moveCursorToPosition(cursor);
- };
- this.transposeLetters = function() {
- if (!this.selection.isEmpty()) {
- return;
- }
-
- var cursor = this.getCursorPosition();
- var column = cursor.column;
- if (column === 0)
- return;
-
- var line = this.session.getLine(cursor.row);
- var swap, range;
- if (column < line.length) {
- swap = line.charAt(column) + line.charAt(column-1);
- range = new Range(cursor.row, column-1, cursor.row, column+1);
- }
- else {
- swap = line.charAt(column-1) + line.charAt(column-2);
- range = new Range(cursor.row, column-2, cursor.row, column);
- }
- this.session.replace(range, swap);
- };
- this.toLowerCase = function() {
- var originalRange = this.getSelectionRange();
- if (this.selection.isEmpty()) {
- this.selection.selectWord();
- }
-
- var range = this.getSelectionRange();
- var text = this.session.getTextRange(range);
- this.session.replace(range, text.toLowerCase());
- this.selection.setSelectionRange(originalRange);
- };
- this.toUpperCase = function() {
- var originalRange = this.getSelectionRange();
- if (this.selection.isEmpty()) {
- this.selection.selectWord();
- }
-
- var range = this.getSelectionRange();
- var text = this.session.getTextRange(range);
- this.session.replace(range, text.toUpperCase());
- this.selection.setSelectionRange(originalRange);
- };
- this.indent = function() {
- var session = this.session;
- var range = this.getSelectionRange();
-
- if (range.start.row < range.end.row || range.start.column < range.end.column) {
- var rows = this.$getSelectedRows();
- session.indentRows(rows.first, rows.last, "\t");
- } else {
- var indentString;
-
- if (this.session.getUseSoftTabs()) {
- var size = session.getTabSize(),
- position = this.getCursorPosition(),
- column = session.documentToScreenColumn(position.row, position.column),
- count = (size - column % size);
-
- indentString = lang.stringRepeat(" ", count);
- } else
- indentString = "\t";
- return this.insert(indentString);
- }
- };
- this.blockOutdent = function() {
- var selection = this.session.getSelection();
- this.session.outdentRows(selection.getRange());
- };
- this.toggleCommentLines = function() {
- var state = this.session.getState(this.getCursorPosition().row);
- var rows = this.$getSelectedRows();
- this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);
- };
- this.removeLines = function() {
- var rows = this.$getSelectedRows();
- var range;
- if (rows.first === 0 || rows.last+1 < this.session.getLength())
- range = new Range(rows.first, 0, rows.last+1, 0);
- else
- range = new Range(
- rows.first-1, this.session.getLine(rows.first-1).length,
- rows.last, this.session.getLine(rows.last).length
- );
- this.session.remove(range);
- this.clearSelection();
- };
-
- this.duplicateSelection = function() {
- var sel = this.selection;
- var doc = this.session;
- var range = sel.getRange();
- if (range.isEmpty()) {
- var row = range.start.row;
- doc.duplicateLines(row, row);
- } else {
- var reverse = sel.isBackwards()
- var point = sel.isBackwards() ? range.start : range.end;
- var endPoint = doc.insert(point, doc.getTextRange(range), false);
- range.start = point;
- range.end = endPoint;
-
- sel.setSelectionRange(range, reverse)
- }
- };
- this.moveLinesDown = function() {
- this.$moveLines(function(firstRow, lastRow) {
- return this.session.moveLinesDown(firstRow, lastRow);
- });
- };
- this.moveLinesUp = function() {
- this.$moveLines(function(firstRow, lastRow) {
- return this.session.moveLinesUp(firstRow, lastRow);
- });
- };
- this.moveText = function(range, toPosition) {
- if (this.$readOnly)
- return null;
-
- return this.session.moveText(range, toPosition);
- };
- this.copyLinesUp = function() {
- this.$moveLines(function(firstRow, lastRow) {
- this.session.duplicateLines(firstRow, lastRow);
- return 0;
- });
- };
- this.copyLinesDown = function() {
- this.$moveLines(function(firstRow, lastRow) {
- return this.session.duplicateLines(firstRow, lastRow);
- });
- };
- this.$moveLines = function(mover) {
- var rows = this.$getSelectedRows();
- var selection = this.selection;
- if (!selection.isMultiLine()) {
- var range = selection.getRange();
- var reverse = selection.isBackwards();
- }
-
- var linesMoved = mover.call(this, rows.first, rows.last);
-
- if (range) {
- range.start.row += linesMoved;
- range.end.row += linesMoved;
- selection.setSelectionRange(range, reverse);
- }
- else {
- selection.setSelectionAnchor(rows.last+linesMoved+1, 0);
- selection.$moveSelection(function() {
- selection.moveCursorTo(rows.first+linesMoved, 0);
- });
- }
- };
- this.$getSelectedRows = function() {
- var range = this.getSelectionRange().collapseRows();
-
- return {
- first: range.start.row,
- last: range.end.row
- };
- };
-
- this.onCompositionStart = function(text) {
- this.renderer.showComposition(this.getCursorPosition());
- };
-
- this.onCompositionUpdate = function(text) {
- this.renderer.setCompositionText(text);
- };
-
- this.onCompositionEnd = function() {
- this.renderer.hideComposition();
- };
- this.getFirstVisibleRow = function() {
- return this.renderer.getFirstVisibleRow();
- };
- this.getLastVisibleRow = function() {
- return this.renderer.getLastVisibleRow();
- };
- this.isRowVisible = function(row) {
- return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());
- };
- this.isRowFullyVisible = function(row) {
- return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());
- };
- this.$getVisibleRowCount = function() {
- return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;
- };
-
- this.$moveByPage = function(dir, select) {
- var renderer = this.renderer;
- var config = this.renderer.layerConfig;
- var rows = dir * Math.floor(config.height / config.lineHeight);
-
- this.$blockScrolling++;
- if (select == true) {
- this.selection.$moveSelection(function(){
- this.moveCursorBy(rows, 0);
- });
- } else if (select == false) {
- this.selection.moveCursorBy(rows, 0);
- this.selection.clearSelection();
- }
- this.$blockScrolling--;
-
- var scrollTop = renderer.scrollTop;
-
- renderer.scrollBy(0, rows * config.lineHeight);
- if (select != null)
- renderer.scrollCursorIntoView(null, 0.5);
-
- renderer.animateScrolling(scrollTop);
- };
- this.selectPageDown = function() {
- this.$moveByPage(1, true);
- };
- this.selectPageUp = function() {
- this.$moveByPage(-1, true);
- };
- this.gotoPageDown = function() {
- this.$moveByPage(1, false);
- };
- this.gotoPageUp = function() {
- this.$moveByPage(-1, false);
- };
- this.scrollPageDown = function() {
- this.$moveByPage(1);
- };
- this.scrollPageUp = function() {
- this.$moveByPage(-1);
- };
- this.scrollToRow = function(row) {
- this.renderer.scrollToRow(row);
- };
- this.scrollToLine = function(line, center, animate, callback) {
- this.renderer.scrollToLine(line, center, animate, callback);
- };
- this.centerSelection = function() {
- var range = this.getSelectionRange();
- var pos = {
- row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),
- column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)
- }
- this.renderer.alignCursor(pos, 0.5);
- };
- this.getCursorPosition = function() {
- return this.selection.getCursor();
- };
- this.getCursorPositionScreen = function() {
- return this.session.documentToScreenPosition(this.getCursorPosition());
- };
- this.getSelectionRange = function() {
- return this.selection.getRange();
- };
- this.selectAll = function() {
- this.$blockScrolling += 1;
- this.selection.selectAll();
- this.$blockScrolling -= 1;
- };
- this.clearSelection = function() {
- this.selection.clearSelection();
- };
- this.moveCursorTo = function(row, column) {
- this.selection.moveCursorTo(row, column);
- };
- this.moveCursorToPosition = function(pos) {
- this.selection.moveCursorToPosition(pos);
- };
- this.jumpToMatching = function(select) {
- var cursor = this.getCursorPosition();
-
- var range = this.session.getBracketRange(cursor);
- if (!range) {
- range = this.find({
- needle: /[{}()\[\]]/g,
- preventScroll:true,
- start: {row: cursor.row, column: cursor.column - 1}
- });
- if (!range)
- return;
- var pos = range.start;
- if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)
- range = this.session.getBracketRange(pos);
- }
-
- pos = range && range.cursor || pos;
- if (pos) {
- if (select) {
- if (range && range.isEqual(this.getSelectionRange()))
- this.clearSelection();
- else
- this.selection.selectTo(pos.row, pos.column);
- } else {
- this.clearSelection();
- this.moveCursorTo(pos.row, pos.column);
- }
- }
- };
- this.gotoLine = function(lineNumber, column, animate) {
- this.selection.clearSelection();
- this.session.unfold({row: lineNumber - 1, column: column || 0});
-
- this.$blockScrolling += 1;
- this.moveCursorTo(lineNumber - 1, column || 0);
- this.$blockScrolling -= 1;
-
- if (!this.isRowFullyVisible(lineNumber - 1))
- this.scrollToLine(lineNumber - 1, true, animate);
- };
- this.navigateTo = function(row, column) {
- this.clearSelection();
- this.moveCursorTo(row, column);
- };
- this.navigateUp = function(times) {
- this.selection.clearSelection();
- times = times || 1;
- this.selection.moveCursorBy(-times, 0);
- };
- this.navigateDown = function(times) {
- this.selection.clearSelection();
- times = times || 1;
- this.selection.moveCursorBy(times, 0);
- };
- this.navigateLeft = function(times) {
- if (!this.selection.isEmpty()) {
- var selectionStart = this.getSelectionRange().start;
- this.moveCursorToPosition(selectionStart);
- }
- else {
- times = times || 1;
- while (times--) {
- this.selection.moveCursorLeft();
- }
- }
- this.clearSelection();
- };
- this.navigateRight = function(times) {
- if (!this.selection.isEmpty()) {
- var selectionEnd = this.getSelectionRange().end;
- this.moveCursorToPosition(selectionEnd);
- }
- else {
- times = times || 1;
- while (times--) {
- this.selection.moveCursorRight();
- }
- }
- this.clearSelection();
- };
- this.navigateLineStart = function() {
- this.selection.moveCursorLineStart();
- this.clearSelection();
- };
- this.navigateLineEnd = function() {
- this.selection.moveCursorLineEnd();
- this.clearSelection();
- };
- this.navigateFileEnd = function() {
- var scrollTop = this.renderer.scrollTop;
- this.selection.moveCursorFileEnd();
- this.clearSelection();
- this.renderer.animateScrolling(scrollTop);
- };
- this.navigateFileStart = function() {
- var scrollTop = this.renderer.scrollTop;
- this.selection.moveCursorFileStart();
- this.clearSelection();
- this.renderer.animateScrolling(scrollTop);
- };
- this.navigateWordRight = function() {
- this.selection.moveCursorWordRight();
- this.clearSelection();
- };
- this.navigateWordLeft = function() {
- this.selection.moveCursorWordLeft();
- this.clearSelection();
- };
- this.replace = function(replacement, options) {
- if (options)
- this.$search.set(options);
-
- var range = this.$search.find(this.session);
- var replaced = 0;
- if (!range)
- return replaced;
-
- if (this.$tryReplace(range, replacement)) {
- replaced = 1;
- }
- if (range !== null) {
- this.selection.setSelectionRange(range);
- this.renderer.scrollSelectionIntoView(range.start, range.end);
- }
-
- return replaced;
- };
- this.replaceAll = function(replacement, options) {
- if (options) {
- this.$search.set(options);
- }
-
- var ranges = this.$search.findAll(this.session);
- var replaced = 0;
- if (!ranges.length)
- return replaced;
-
- this.$blockScrolling += 1;
-
- var selection = this.getSelectionRange();
- this.clearSelection();
- this.selection.moveCursorTo(0, 0);
-
- for (var i = ranges.length - 1; i >= 0; --i) {
- if(this.$tryReplace(ranges[i], replacement)) {
- replaced++;
- }
- }
-
- this.selection.setSelectionRange(selection);
- this.$blockScrolling -= 1;
-
- return replaced;
- };
-
- this.$tryReplace = function(range, replacement) {
- var input = this.session.getTextRange(range);
- replacement = this.$search.replace(input, replacement);
- if (replacement !== null) {
- range.end = this.session.replace(range, replacement);
- return range;
- } else {
- return null;
- }
- };
- this.getLastSearchOptions = function() {
- return this.$search.getOptions();
- };
- this.find = function(needle, options, animate) {
- if (!options)
- options = {};
-
- if (typeof needle == "string" || needle instanceof RegExp)
- options.needle = needle;
- else if (typeof needle == "object")
- oop.mixin(options, needle);
-
- var range = this.selection.getRange();
- if (options.needle == null) {
- needle = this.session.getTextRange(range)
- || this.$search.$options.needle;
- if (!needle) {
- range = this.session.getWordRange(range.start.row, range.start.column);
- needle = this.session.getTextRange(range);
- }
- this.$search.set({needle: needle});
- }
-
- this.$search.set(options);
- if (!options.start)
- this.$search.set({start: range});
-
- var newRange = this.$search.find(this.session);
- if (options.preventScroll)
- return newRange;
- if (newRange) {
- this.revealRange(newRange, animate);
- return newRange;
- }
- // clear selection if nothing is found
- if (options.backwards)
- range.start = range.end;
- else
- range.end = range.start;
- this.selection.setRange(range);
- };
- this.findNext = function(options, animate) {
- this.find({skipCurrent: true, backwards: false}, options, animate);
- };
- this.findPrevious = function(options, animate) {
- this.find(options, {skipCurrent: true, backwards: true}, animate);
- };
-
- this.revealRange = function(range, animate) {
- this.$blockScrolling += 1;
- this.session.unfold(range);
- this.selection.setSelectionRange(range);
- this.$blockScrolling -= 1;
-
- var scrollTop = this.renderer.scrollTop;
- this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);
- if (animate != false)
- this.renderer.animateScrolling(scrollTop);
- };
- this.undo = function() {
- this.$blockScrolling++;
- this.session.getUndoManager().undo();
- this.$blockScrolling--;
- this.renderer.scrollCursorIntoView(null, 0.5);
- };
- this.redo = function() {
- this.$blockScrolling++;
- this.session.getUndoManager().redo();
- this.$blockScrolling--;
- this.renderer.scrollCursorIntoView(null, 0.5);
- };
- this.destroy = function() {
- this.renderer.destroy();
- };
-
-}).call(Editor.prototype);
-
-
-exports.Editor = Editor;
-});
-
-ace.define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-
-ace.define('ace/keyboard/textinput', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/lib/useragent', 'ace/lib/dom'], function(require, exports, module) {
-
-
-var event = require("../lib/event");
-var useragent = require("../lib/useragent");
-var dom = require("../lib/dom");
-
-var TextInput = function(parentNode, host) {
- var text = dom.createElement("textarea");
- if (useragent.isTouchPad)
- text.setAttribute("x-palm-disable-auto-cap", true);
-
- text.setAttribute("wrap", "off");
-
- text.style.top = "-2em";
- parentNode.insertBefore(text, parentNode.firstChild);
-
- var PLACEHOLDER = useragent.isIE ? "\x01" : "\x00";
- reset(true);
- if (isFocused())
- host.onFocus();
-
- var inCompostion = false;
- var copied = false;
- var pasted = false;
- var tempStyle = '';
-
- function reset(full) {
- try {
- if (full) {
- text.value = PLACEHOLDER;
- text.selectionStart = 0;
- text.selectionEnd = 1;
- } else
- text.select();
- } catch (e) {}
- }
-
- function sendText(valueToSend) {
- if (!copied) {
- var value = valueToSend || text.value;
- if (value) {
- if (value.length > 1) {
- if (value.charAt(0) == PLACEHOLDER)
- value = value.substr(1);
- else if (value.charAt(value.length - 1) == PLACEHOLDER)
- value = value.slice(0, -1);
- }
-
- if (value && value != PLACEHOLDER) {
- if (pasted)
- host.onPaste(value);
- else
- host.onTextInput(value);
- }
- }
- }
-
- copied = false;
- pasted = false;
-
- // Safari doesn't fire copy events if no text is selected
- reset(true);
- }
-
- var onTextInput = function(e) {
- if (!inCompostion)
- sendText(e.data);
- setTimeout(function () {
- if (!inCompostion)
- reset(true);
- }, 0);
- };
-
- var onPropertyChange = function(e) {
- setTimeout(function() {
- if (!inCompostion)
- if(text.value != "") {
- sendText();
- }
- }, 0);
- };
-
- var onCompositionStart = function(e) {
- inCompostion = true;
- host.onCompositionStart();
- setTimeout(onCompositionUpdate, 0);
- };
-
- var onCompositionUpdate = function() {
- if (!inCompostion) return;
- host.onCompositionUpdate(text.value);
- };
-
- var onCompositionEnd = function(e) {
- inCompostion = false;
- host.onCompositionEnd();
- };
-
- var onCopy = function(e) {
- copied = true;
- var copyText = host.getCopyText();
- if(copyText)
- text.value = copyText;
- else
- e.preventDefault();
- reset();
- setTimeout(function () {
- sendText();
- }, 0);
- };
-
- var onCut = function(e) {
- copied = true;
- var copyText = host.getCopyText();
- if(copyText) {
- text.value = copyText;
- host.onCut();
- } else
- e.preventDefault();
- reset();
- setTimeout(function () {
- sendText();
- }, 0);
- };
-
- event.addCommandKeyListener(text, host.onCommandKey.bind(host));
- event.addListener(text, "input", onTextInput);
-
- if (useragent.isOldIE) {
- var keytable = { 13:1, 27:1 };
- event.addListener(text, "keyup", function (e) {
- if (inCompostion && (!text.value || keytable[e.keyCode]))
- setTimeout(onCompositionEnd, 0);
- if ((text.value.charCodeAt(0)|0) < 129) {
- return;
- }
- inCompostion ? onCompositionUpdate() : onCompositionStart();
- });
-
- event.addListener(text, "propertychange", function() {
- if (text.value != PLACEHOLDER)
- setTimeout(sendText, 0);
- });
- }
-
- event.addListener(text, "paste", function(e) {
- // Mark that the next input text comes from past.
- pasted = true;
- // Some browsers support the event.clipboardData API. Use this to get
- // the pasted content which increases speed if pasting a lot of lines.
- if (e.clipboardData && e.clipboardData.getData) {
- sendText(e.clipboardData.getData("text/plain"));
- e.preventDefault();
- }
- else {
- // If a browser doesn't support any of the things above, use the regular
- // method to detect the pasted input.
- onPropertyChange();
- }
- });
-
- if ("onbeforecopy" in text && typeof clipboardData !== "undefined") {
- event.addListener(text, "beforecopy", function(e) {
- if (tempStyle)
- return; // without this text is copied when contextmenu is shown
- var copyText = host.getCopyText();
- if (copyText)
- clipboardData.setData("Text", copyText);
- else
- e.preventDefault();
- });
- event.addListener(parentNode, "keydown", function(e) {
- if (e.ctrlKey && e.keyCode == 88) {
- var copyText = host.getCopyText();
- if (copyText) {
- clipboardData.setData("Text", copyText);
- host.onCut();
- }
- event.preventDefault(e);
- }
- });
- event.addListener(text, "cut", onCut); // for ie9 context menu
- }
- else if (useragent.isOpera && !("KeyboardEvent" in window)) {
- event.addListener(parentNode, "keydown", function(e) {
- if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)
- return;
-
- if ((e.keyCode == 88 || e.keyCode == 67)) {
- var copyText = host.getCopyText();
- if (copyText) {
- text.value = copyText;
- text.select();
- if (e.keyCode == 88)
- host.onCut();
- }
- }
- });
- }
- else {
- event.addListener(text, "copy", onCopy);
- event.addListener(text, "cut", onCut);
- }
-
- event.addListener(text, "compositionstart", onCompositionStart);
- if (useragent.isGecko) {
- event.addListener(text, "text", onCompositionUpdate);
- }
- if (useragent.isWebKit) {
- event.addListener(text, "keyup", onCompositionUpdate);
- }
- event.addListener(text, "compositionend", onCompositionEnd);
-
- event.addListener(text, "blur", function() {
- host.onBlur();
- });
-
- event.addListener(text, "focus", function() {
- host.onFocus();
- reset();
- });
-
- this.focus = function() {
- reset();
- text.focus();
- };
-
- this.blur = function() {
- text.blur();
- };
-
- function isFocused() {
- return document.activeElement === text;
- }
- this.isFocused = isFocused;
-
- this.getElement = function() {
- return text;
- };
-
- this.onContextMenu = function(e) {
- if (!tempStyle)
- tempStyle = text.style.cssText;
-
- text.style.cssText =
- "position:fixed; z-index:100000;" +
- (useragent.isIE ? "background:rgba(0, 0, 0, 0.03); opacity:0.1;" : "") + //"background:rgba(250, 0, 0, 0.3); opacity:1;" +
- "left:" + (e.clientX - 2) + "px; top:" + (e.clientY - 2) + "px;";
-
- if (host.selection.isEmpty())
- text.value = "";
- else
- reset(true);
-
- if (e.type != "mousedown")
- return;
-
- if (host.renderer.$keepTextAreaAtCursor)
- host.renderer.$keepTextAreaAtCursor = null;
-
- // on windows context menu is opened after mouseup
- if (useragent.isWin && (useragent.isGecko || useragent.isIE))
- event.capture(host.container, function(e) {
- text.style.left = e.clientX - 2 + "px";
- text.style.top = e.clientY - 2 + "px";
- }, onContextMenuClose);
- };
-
- function onContextMenuClose() {
- setTimeout(function () {
- if (tempStyle) {
- text.style.cssText = tempStyle;
- tempStyle = '';
- }
- sendText();
- if (host.renderer.$keepTextAreaAtCursor == null) {
- host.renderer.$keepTextAreaAtCursor = true;
- host.renderer.$moveTextAreaToCursor();
- }
- }, 0);
- };
- this.onContextMenuClose = onContextMenuClose;
-
- // firefox fires contextmenu event after opening it
- if (!useragent.isGecko)
- event.addListener(text, "contextmenu", function(e) {
- host.textInput.onContextMenu(e);
- onContextMenuClose()
- });
-};
-
-exports.TextInput = TextInput;
-});
-
-ace.define('ace/mouse/mouse_handler', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/lib/useragent', 'ace/mouse/default_handlers', 'ace/mouse/default_gutter_handler', 'ace/mouse/mouse_event', 'ace/mouse/dragdrop'], function(require, exports, module) {
-
-
-var event = require("../lib/event");
-var useragent = require("../lib/useragent");
-var DefaultHandlers = require("./default_handlers").DefaultHandlers;
-var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler;
-var MouseEvent = require("./mouse_event").MouseEvent;
-var DragdropHandler = require("./dragdrop").DragdropHandler;
-
-var MouseHandler = function(editor) {
- this.editor = editor;
-
- new DefaultHandlers(this);
- new DefaultGutterHandler(this);
- new DragdropHandler(this);
-
- event.addListener(editor.container, "mousedown", function(e) {
- editor.focus();
- return event.preventDefault(e);
- });
-
- var mouseTarget = editor.renderer.getMouseEventTarget();
- event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"));
- event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"));
- event.addMultiMouseDownListener(mouseTarget, [300, 300, 250], this, "onMouseEvent");
- event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"));
-
- var gutterEl = editor.renderer.$gutter;
- event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"));
- event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"));
- event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"));
- event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"));
-};
-
-(function() {
-
- this.$scrollSpeed = 1;
- this.setScrollSpeed = function(speed) {
- this.$scrollSpeed = speed;
- };
-
- this.getScrollSpeed = function() {
- return this.$scrollSpeed;
- };
-
- this.onMouseEvent = function(name, e) {
- this.editor._emit(name, new MouseEvent(e, this.editor));
- };
-
- this.$dragDelay = 250;
- this.setDragDelay = function(dragDelay) {
- this.$dragDelay = dragDelay;
- };
-
- this.getDragDelay = function() {
- return this.$dragDelay;
- };
-
- this.onMouseMove = function(name, e) {
- // optimization, because mousemove doesn't have a default handler.
- var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
- if (!listeners || !listeners.length)
- return;
-
- this.editor._emit(name, new MouseEvent(e, this.editor));
- };
-
- this.onMouseWheel = function(name, e) {
- var mouseEvent = new MouseEvent(e, this.editor);
- mouseEvent.speed = this.$scrollSpeed * 2;
- mouseEvent.wheelX = e.wheelX;
- mouseEvent.wheelY = e.wheelY;
-
- this.editor._emit(name, mouseEvent);
- };
-
- this.setState = function(state) {
- this.state = state;
- };
-
- this.captureMouse = function(ev, state) {
- if (state)
- this.setState(state);
-
- this.x = ev.x;
- this.y = ev.y;
-
- // do not move textarea during selection
- var renderer = this.editor.renderer;
- if (renderer.$keepTextAreaAtCursor)
- renderer.$keepTextAreaAtCursor = null;
-
- var self = this;
- var onMouseMove = function(e) {
- self.x = e.clientX;
- self.y = e.clientY;
- };
-
- var onCaptureEnd = function(e) {
- clearInterval(timerId);
- self[self.state + "End"] && self[self.state + "End"](e);
- self.$clickSelection = null;
- if (renderer.$keepTextAreaAtCursor == null) {
- renderer.$keepTextAreaAtCursor = true;
- renderer.$moveTextAreaToCursor();
- }
- };
-
- var onCaptureInterval = function() {
- self[self.state] && self[self.state]();
- }
-
- if (useragent.isOldIE && ev.domEvent.type == "dblclick") {
- setTimeout(function() {
- onCaptureInterval();
- onCaptureEnd(ev.domEvent);
- });
- return;
- }
-
- event.capture(this.editor.container, onMouseMove, onCaptureEnd);
- var timerId = setInterval(onCaptureInterval, 20);
- };
-}).call(MouseHandler.prototype);
-
-exports.MouseHandler = MouseHandler;
-});
-
-ace.define('ace/mouse/default_handlers', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/useragent'], function(require, exports, module) {
-
-
-var dom = require("../lib/dom");
-var useragent = require("../lib/useragent");
-
-var DRAG_OFFSET = 5; // pixels
-
-function DefaultHandlers(mouseHandler) {
- mouseHandler.$clickSelection = null;
-
- var editor = mouseHandler.editor;
- editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler));
- editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler));
- editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler));
- editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler));
- editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler));
-
- var exports = ["select", "startSelect", "drag", "dragEnd", "dragWait",
- "dragWaitEnd", "startDrag", "focusWait"];
-
- exports.forEach(function(x) {
- mouseHandler[x] = this[x];
- }, this);
-
- mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange");
- mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange");
-
- mouseHandler.$focusWaitTimout = 250;
-}
-
-(function() {
-
- this.onMouseDown = function(ev) {
- var inSelection = ev.inSelection();
- var pos = ev.getDocumentPosition();
- this.mousedownEvent = ev;
- var editor = this.editor;
-
- var button = ev.getButton();
- if (button !== 0) {
- var selectionRange = editor.getSelectionRange();
- var selectionEmpty = selectionRange.isEmpty();
-
- if (selectionEmpty) {
- editor.moveCursorToPosition(pos);
- editor.selection.clearSelection();
- }
-
- // 2: contextmenu, 1: linux paste
- editor.textInput.onContextMenu(ev.domEvent);
- return; // stopping event here breaks contextmenu on ff mac
- }
-
- // if this click caused the editor to be focused should not clear the
- // selection
- if (inSelection && !editor.isFocused()) {
- editor.focus();
- if (this.$focusWaitTimout && !this.$clickSelection) {
- this.setState("focusWait");
- this.captureMouse(ev);
- return ev.preventDefault();
- }
- }
-
- if (!inSelection || this.$clickSelection || ev.getShiftKey()) {
- // Directly pick STATE_SELECT, since the user is not clicking inside
- // a selection.
- this.startSelect(pos);
- } else if (inSelection) {
- this.mousedownEvent.time = (new Date()).getTime();
- this.setState("dragWait");
- }
-
- this.captureMouse(ev);
- return ev.preventDefault();
- };
-
- this.startSelect = function(pos) {
- pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
- if (this.mousedownEvent.getShiftKey()) {
- this.editor.selection.selectToPosition(pos);
- }
- else if (!this.$clickSelection) {
- this.editor.moveCursorToPosition(pos);
- this.editor.selection.clearSelection();
- }
- this.setState("select");
- };
-
- this.select = function() {
- var anchor, editor = this.editor;
- var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
-
- if (this.$clickSelection) {
- var cmp = this.$clickSelection.comparePoint(cursor);
-
- if (cmp == -1) {
- anchor = this.$clickSelection.end;
- } else if (cmp == 1) {
- anchor = this.$clickSelection.start;
- } else {
- var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
- cursor = orientedRange.cursor;
- anchor = orientedRange.anchor;
- }
- editor.selection.setSelectionAnchor(anchor.row, anchor.column);
- }
- editor.selection.selectToPosition(cursor);
-
- editor.renderer.scrollCursorIntoView();
- };
-
- this.extendSelectionBy = function(unitName) {
- var anchor, editor = this.editor;
- var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
- var range = editor.selection[unitName](cursor.row, cursor.column);
-
- if (this.$clickSelection) {
- var cmpStart = this.$clickSelection.comparePoint(range.start);
- var cmpEnd = this.$clickSelection.comparePoint(range.end);
-
- if (cmpStart == -1 && cmpEnd <= 0) {
- anchor = this.$clickSelection.end;
- if (range.end.row != cursor.row || range.end.column != cursor.column)
- cursor = range.start;
- } else if (cmpEnd == 1 && cmpStart >= 0) {
- anchor = this.$clickSelection.start;
- if (range.start.row != cursor.row || range.start.column != cursor.column)
- cursor = range.end;
- } else if (cmpStart == -1 && cmpEnd == 1) {
- cursor = range.end;
- anchor = range.start;
- } else {
- var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
- cursor = orientedRange.cursor;
- anchor = orientedRange.anchor;
- }
- editor.selection.setSelectionAnchor(anchor.row, anchor.column);
- }
- editor.selection.selectToPosition(cursor);
-
- editor.renderer.scrollCursorIntoView();
- };
-
- this.startDrag = function() {
- var editor = this.editor;
- this.setState("drag");
- this.dragRange = editor.getSelectionRange();
- var style = editor.getSelectionStyle();
- this.dragSelectionMarker = editor.session.addMarker(this.dragRange, "ace_selection", style);
- editor.clearSelection();
- dom.addCssClass(editor.container, "ace_dragging");
- if (!this.$dragKeybinding) {
- this.$dragKeybinding = {
- handleKeyboard: function(data, hashId, keyString, keyCode) {
- if (keyString == "esc")
- return {command: this.command};
- },
- command: {
- exec: function(editor) {
- var self = editor.$mouseHandler;
- self.dragCursor = null;
- self.dragEnd();
- self.startSelect();
- }
- }
- }
- }
-
- editor.keyBinding.addKeyboardHandler(this.$dragKeybinding);
- };
-
- this.focusWait = function() {
- var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
- var time = (new Date()).getTime();
-
- if (distance > DRAG_OFFSET ||time - this.mousedownEvent.time > this.$focusWaitTimout)
- this.startSelect();
- };
-
- this.dragWait = function(e) {
- var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
- var time = (new Date()).getTime();
- var editor = this.editor;
-
- if (distance > DRAG_OFFSET) {
- this.startSelect(this.mousedownEvent.getDocumentPosition());
- } else if (time - this.mousedownEvent.time > editor.getDragDelay()) {
- this.startDrag();
- }
- };
-
- this.dragWaitEnd = function(e) {
- this.mousedownEvent.domEvent = e;
- this.startSelect();
- };
-
- this.drag = function() {
- var editor = this.editor;
- this.dragCursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
- editor.moveCursorToPosition(this.dragCursor);
- editor.renderer.scrollCursorIntoView();
- };
-
- this.dragEnd = function(e) {
- var editor = this.editor;
- var dragCursor = this.dragCursor;
- var dragRange = this.dragRange;
- dom.removeCssClass(editor.container, "ace_dragging");
- editor.session.removeMarker(this.dragSelectionMarker);
- editor.keyBinding.removeKeyboardHandler(this.$dragKeybinding);
-
- if (!dragCursor)
- return;
-
- editor.clearSelection();
- if (e && (e.ctrlKey || e.altKey)) {
- var session = editor.session;
- var newRange = dragRange;
- newRange.end = session.insert(dragCursor, session.getTextRange(dragRange));
- newRange.start = dragCursor;
- } else if (dragRange.contains(dragCursor.row, dragCursor.column)) {
- return;
- } else {
- var newRange = editor.moveText(dragRange, dragCursor);
- }
-
- if (!newRange)
- return;
-
- editor.selection.setSelectionRange(newRange);
- };
-
- this.onDoubleClick = function(ev) {
- var pos = ev.getDocumentPosition();
- var editor = this.editor;
- var session = editor.session;
-
- var range = session.getBracketRange(pos);
- if (range) {
- if (range.isEmpty()) {
- range.start.column--;
- range.end.column++;
- }
- this.$clickSelection = range;
- this.setState("select");
- return;
- }
-
- this.$clickSelection = editor.selection.getWordRange(pos.row, pos.column);
- this.setState("selectByWords");
- };
-
- this.onTripleClick = function(ev) {
- var pos = ev.getDocumentPosition();
- var editor = this.editor;
-
- this.setState("selectByLines");
- this.$clickSelection = editor.selection.getLineRange(pos.row);
- };
-
- this.onQuadClick = function(ev) {
- var editor = this.editor;
-
- editor.selectAll();
- this.$clickSelection = editor.getSelectionRange();
- this.setState("null");
- };
-
- this.onMouseWheel = function(ev) {
- if (ev.getShiftKey() || ev.getAccelKey()){
- return;
- }
- var editor = this.editor;
- var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
- if (isScrolable) {
- this.$passScrollEvent = false;
- } else {
- if (this.$passScrollEvent)
- return;
-
- if (!this.$scrollStopTimeout) {
- var self = this;
- this.$scrollStopTimeout = setTimeout(function() {
- self.$passScrollEvent = true;
- self.$scrollStopTimeout = null;
- }, 200);
- }
- }
-
- editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
- return ev.preventDefault();
- };
-
-}).call(DefaultHandlers.prototype);
-
-exports.DefaultHandlers = DefaultHandlers;
-
-function calcDistance(ax, ay, bx, by) {
- return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
-}
-
-function calcRangeOrientation(range, cursor) {
- if (range.start.row == range.end.row)
- var cmp = 2 * cursor.column - range.start.column - range.end.column;
- else
- var cmp = 2 * cursor.row - range.start.row - range.end.row;
-
- if (cmp < 0)
- return {cursor: range.start, anchor: range.end};
- else
- return {cursor: range.end, anchor: range.start};
-}
-
-});
-
-ace.define('ace/mouse/default_gutter_handler', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/event'], function(require, exports, module) {
-
-var dom = require("../lib/dom");
-var event = require("../lib/event");
-
-function GutterHandler(mouseHandler) {
- var editor = mouseHandler.editor;
- var gutter = editor.renderer.$gutterLayer;
-
- mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) {
- if (!editor.isFocused())
- return;
- var gutterRegion = gutter.getRegion(e);
-
- if (gutterRegion)
- return;
-
- var row = e.getDocumentPosition().row;
- var selection = editor.session.selection;
-
- if (e.getShiftKey())
- selection.selectTo(row, 0);
- else
- mouseHandler.$clickSelection = editor.selection.getLineRange(row);
-
- mouseHandler.captureMouse(e, "selectByLines");
- return e.preventDefault();
- });
-
-
- var tooltipTimeout, mouseEvent, tooltip, tooltipAnnotation;
- function createTooltip() {
- tooltip = dom.createElement("div");
- tooltip.className = "ace_gutter_tooltip";
- tooltip.style.maxWidth = "500px";
- tooltip.style.display = "none";
- editor.container.appendChild(tooltip);
- }
-
- function showTooltip() {
- if (!tooltip) {
- createTooltip();
- }
- var row = mouseEvent.getDocumentPosition().row;
- var annotation = gutter.$annotations[row];
- if (!annotation)
- return hideTooltip();
-
- var maxRow = editor.session.getLength();
- if (row == maxRow) {
- var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;
- var pos = mouseEvent.$pos;
- if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))
- return hideTooltip();
- }
-
- if (tooltipAnnotation == annotation)
- return;
- tooltipAnnotation = annotation.text.join("\n");
-
- tooltip.style.display = "block";
- tooltip.innerHTML = tooltipAnnotation;
- editor.on("mousewheel", hideTooltip);
-
- moveTooltip(mouseEvent);
- }
-
- function hideTooltip() {
- if (tooltipTimeout)
- tooltipTimeout = clearTimeout(tooltipTimeout);
- if (tooltipAnnotation) {
- tooltip.style.display = "none";
- tooltipAnnotation = null;
- editor.removeEventListener("mousewheel", hideTooltip);
- }
- }
-
- function moveTooltip(e) {
- var rect = editor.renderer.$gutter.getBoundingClientRect();
- tooltip.style.left = e.x - rect.left + 15 + "px";
- if (e.y + 3 * editor.renderer.lineHeight + 15 < rect.bottom) {
- tooltip.style.bottom = "";
- tooltip.style.top = e.y - rect.top + 15 + "px";
- } else {
- tooltip.style.top = "";
- tooltip.style.bottom = rect.bottom - e.y + 5 + "px";
- }
- }
-
- mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) {
- var target = e.domEvent.target || e.domEvent.srcElement;
- if (dom.hasCssClass(target, "ace_fold-widget"))
- return hideTooltip();
-
- if (tooltipAnnotation)
- moveTooltip(e);
-
- mouseEvent = e;
- if (tooltipTimeout)
- return;
- tooltipTimeout = setTimeout(function() {
- tooltipTimeout = null;
- if (mouseEvent)
- showTooltip();
- else
- hideTooltip();
- }, 50);
- });
-
- event.addListener(editor.renderer.$gutter, "mouseout", function(e) {
- mouseEvent = null;
- if (!tooltipAnnotation || tooltipTimeout)
- return;
-
- tooltipTimeout = setTimeout(function() {
- tooltipTimeout = null;
- hideTooltip();
- }, 50);
- });
-
-}
-
-exports.GutterHandler = GutterHandler;
-
-});
-
-ace.define('ace/mouse/mouse_event', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/lib/useragent'], function(require, exports, module) {
-
-
-var event = require("../lib/event");
-var useragent = require("../lib/useragent");
-var MouseEvent = exports.MouseEvent = function(domEvent, editor) {
- this.domEvent = domEvent;
- this.editor = editor;
-
- this.x = this.clientX = domEvent.clientX;
- this.y = this.clientY = domEvent.clientY;
-
- this.$pos = null;
- this.$inSelection = null;
-
- this.propagationStopped = false;
- this.defaultPrevented = false;
-};
-
-(function() {
-
- this.stopPropagation = function() {
- event.stopPropagation(this.domEvent);
- this.propagationStopped = true;
- };
-
- this.preventDefault = function() {
- event.preventDefault(this.domEvent);
- this.defaultPrevented = true;
- };
-
- this.stop = function() {
- this.stopPropagation();
- this.preventDefault();
- };
- this.getDocumentPosition = function() {
- if (this.$pos)
- return this.$pos;
-
- this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);
- return this.$pos;
- };
- this.inSelection = function() {
- if (this.$inSelection !== null)
- return this.$inSelection;
-
- var editor = this.editor;
-
- if (editor.getReadOnly()) {
- this.$inSelection = false;
- }
- else {
- var selectionRange = editor.getSelectionRange();
- if (selectionRange.isEmpty())
- this.$inSelection = false;
- else {
- var pos = this.getDocumentPosition();
- this.$inSelection = selectionRange.contains(pos.row, pos.column);
- }
- }
- return this.$inSelection;
- };
- this.getButton = function() {
- return event.getButton(this.domEvent);
- };
- this.getShiftKey = function() {
- return this.domEvent.shiftKey;
- };
-
- this.getAccelKey = useragent.isMac
- ? function() { return this.domEvent.metaKey; }
- : function() { return this.domEvent.ctrlKey; };
-
-}).call(MouseEvent.prototype);
-
-});
-
-ace.define('ace/mouse/dragdrop', ['require', 'exports', 'module' , 'ace/lib/event'], function(require, exports, module) {
-
-
-var event = require("../lib/event");
-
-var DragdropHandler = function(mouseHandler) {
- var editor = mouseHandler.editor;
- var dragSelectionMarker, x, y;
- var timerId, range, isBackwards;
- var dragCursor, counter = 0;
-
- var mouseTarget = editor.container;
- event.addListener(mouseTarget, "dragenter", function(e) {
- counter++;
- if (!dragSelectionMarker) {
- range = editor.getSelectionRange();
- isBackwards = editor.selection.isBackwards();
- var style = editor.getSelectionStyle();
- dragSelectionMarker = editor.session.addMarker(range, "ace_selection", style);
- editor.clearSelection();
- clearInterval(timerId);
- timerId = setInterval(onDragInterval, 20);
- }
- return event.preventDefault(e);
- });
-
- event.addListener(mouseTarget, "dragover", function(e) {
- x = e.clientX;
- y = e.clientY;
- return event.preventDefault(e);
- });
-
- var onDragInterval = function() {
- dragCursor = editor.renderer.screenToTextCoordinates(x, y);
- editor.moveCursorToPosition(dragCursor);
- editor.renderer.scrollCursorIntoView();
- };
-
- event.addListener(mouseTarget, "dragleave", function(e) {
- counter--;
- if (counter > 0)
- return;
- console.log(e.type, counter,e.target);
- clearInterval(timerId);
- editor.session.removeMarker(dragSelectionMarker);
- dragSelectionMarker = null;
- editor.selection.setSelectionRange(range, isBackwards);
- return event.preventDefault(e);
- });
-
- event.addListener(mouseTarget, "drop", function(e) {
- console.log(e.type, counter,e.target);
- counter = 0;
- clearInterval(timerId);
- editor.session.removeMarker(dragSelectionMarker);
- dragSelectionMarker = null;
-
- range.end = editor.session.insert(dragCursor, e.dataTransfer.getData('Text'));
- range.start = dragCursor;
- editor.focus();
- editor.selection.setSelectionRange(range);
- return event.preventDefault(e);
- });
-
-};
-
-exports.DragdropHandler = DragdropHandler;
-});
-
-ace.define('ace/mouse/fold_handler', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function FoldHandler(editor) {
-
- editor.on("click", function(e) {
- var position = e.getDocumentPosition();
- var session = editor.session;
-
- // If the user clicked on a fold, then expand it.
- var fold = session.getFoldAt(position.row, position.column, 1);
- if (fold) {
- if (e.getAccelKey())
- session.removeFold(fold);
- else
- session.expandFold(fold);
-
- e.stop();
- }
- });
-
- editor.on("gutterclick", function(e) {
- var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);
-
- if (gutterRegion == "foldWidgets") {
- var row = e.getDocumentPosition().row;
- var session = editor.session;
- if (session.foldWidgets && session.foldWidgets[row])
- editor.session.onFoldWidgetClick(row, e);
- e.stop();
- }
- });
-}
-
-exports.FoldHandler = FoldHandler;
-
-});
-
-ace.define('ace/keyboard/keybinding', ['require', 'exports', 'module' , 'ace/lib/keys', 'ace/lib/event'], function(require, exports, module) {
-
-
-var keyUtil = require("../lib/keys");
-var event = require("../lib/event");
-
-var KeyBinding = function(editor) {
- this.$editor = editor;
- this.$data = { };
- this.$handlers = [];
- this.setDefaultHandler(editor.commands);
-};
-
-(function() {
- this.setDefaultHandler = function(kb) {
- this.removeKeyboardHandler(this.$defaultHandler);
- this.$defaultHandler = kb;
- this.addKeyboardHandler(kb, 0);
- this.$data = {editor: this.$editor};
- };
-
- this.setKeyboardHandler = function(kb) {
- if (this.$handlers[this.$handlers.length - 1] == kb)
- return;
-
- while (this.$handlers[1])
- this.removeKeyboardHandler(this.$handlers[1]);
-
- this.addKeyboardHandler(kb, 1);
- };
-
- this.addKeyboardHandler = function(kb, pos) {
- if (!kb)
- return;
- var i = this.$handlers.indexOf(kb);
- if (i != -1)
- this.$handlers.splice(i, 1);
-
- if (pos == undefined)
- this.$handlers.push(kb);
- else
- this.$handlers.splice(pos, 0, kb);
-
- if (i == -1 && kb.attach)
- kb.attach(this.$editor);
- };
-
- this.removeKeyboardHandler = function(kb) {
- var i = this.$handlers.indexOf(kb);
- if (i == -1)
- return false;
- this.$handlers.splice(i, 1);
- kb.detach && kb.detach(this.$editor);
- return true;
- };
-
- this.getKeyboardHandler = function() {
- return this.$handlers[this.$handlers.length - 1];
- };
-
- this.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {
- var toExecute;
- for (var i = this.$handlers.length; i--;) {
- toExecute = this.$handlers[i].handleKeyboard(
- this.$data, hashId, keyString, keyCode, e
- );
- if (toExecute && toExecute.command)
- break;
- }
-
- if (!toExecute || !toExecute.command)
- return false;
-
- var success = false;
- var commands = this.$editor.commands;
-
- // allow keyboardHandler to consume keys
- if (toExecute.command != "null")
- success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);
- else
- success = toExecute.passEvent != true;
-
- // do not stop input events to not break repeating
- if (success && e && hashId != -1)
- event.stopEvent(e);
-
- return success;
- };
-
- this.onCommandKey = function(e, hashId, keyCode) {
- var keyString = keyUtil.keyCodeToString(keyCode);
- this.$callKeyboardHandlers(hashId, keyString, keyCode, e);
- };
-
- this.onTextInput = function(text) {
- var success = this.$callKeyboardHandlers(-1, text);
- if (!success)
- this.$editor.commands.exec("insertstring", this.$editor, text);
- };
-
-}).call(KeyBinding.prototype);
-
-exports.KeyBinding = KeyBinding;
-});
-
-ace.define('ace/edit_session', ['require', 'exports', 'module' , 'ace/config', 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/net', 'ace/lib/event_emitter', 'ace/selection', 'ace/mode/text', 'ace/range', 'ace/document', 'ace/background_tokenizer', 'ace/search_highlight', 'ace/edit_session/folding', 'ace/edit_session/bracket_match'], function(require, exports, module) {
-
-
-var config = require("./config");
-var oop = require("./lib/oop");
-var lang = require("./lib/lang");
-var net = require("./lib/net");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Selection = require("./selection").Selection;
-var TextMode = require("./mode/text").Mode;
-var Range = require("./range").Range;
-var Document = require("./document").Document;
-var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer;
-var SearchHighlight = require("./search_highlight").SearchHighlight;
-
-// events
-/**
- * EditSession@change(e)
- * - e (Object): An object containing a `delta` of information about the change.
- *
- * Emitted when the document changes.
- **/
-/**
- * EditSession@changeTabSize()
- *
- * Emitted when the tab size changes, via [[EditSession.setTabSize]].
- **/
-/**
- * EditSession@changeOverwrite()
- *
- * Emitted when the ability to overwrite text changes, via [[EditSession.setOverwrite]].
- **/
-/**
- * EditSession@changeBreakpoint()
- *
- * Emitted when the gutter changes, either by setting or removing breakpoints, or when the gutter decorations change.
- **/
-/**
- * EditSession@changeFrontMarker()
- *
- * Emitted when a front marker changes.
- **/
-/**
- * EditSession@changeBackMarker()
- *
- * Emitted when a back marker changes.
- **/
-/**
- * EditSession@changeAnnotation()
- *
- * Emitted when an annotation changes, like through [[EditSession.setAnnotations]].
- **/
-/**
- * EditSession@tokenizerUpdate(e)
- * - e (Object): An object containing one property, `"data"`, that contains information about the changing rows
- *
- * Emitted when a background tokenizer asynchronously processes new rows.
- *
- **/
-/** hide
- * EditSession@loadMode(e)
- *
- *
- *
- **/
-/**
- * EditSession@changeMode()
- *
- * Emitted when the current mode changes.
- *
- **/
-/**
- * EditSession@changeWrapMode()
- *
- * Emitted when the wrap mode changes.
- *
- **/
-/**
- * EditSession@changeWrapLimit()
- *
- * Emitted when the wrapping limit changes.
- *
- **/
-/**
- * EditSession@changeFold(e)
- *
- * Emitted when a code fold is added or removed.
- *
- **/
- /**
- * EditSession@changeScrollTop(scrollTop)
- * - scrollTop (Number): The new scroll top value
- *
- * Emitted when the scroll top changes.
- **/
-/**
- * EditSession@changeScrollLeft(scrollLeft)
- * - scrollLeft (Number): The new scroll left value
- *
- * Emitted when the scroll left changes.
- **/
-
-
-/**
- * new EditSession(text, mode)
- * - text (Document | String): If `text` is a `Document`, it associates the `EditSession` with it. Otherwise, a new `Document` is created, with the initial text
- * - mode (TextMode): The initial language mode to use for the document
- *
- * Sets up a new `EditSession` and associates it with the given `Document` and `TextMode`.
- *
- **/
-
-var EditSession = function(text, mode) {
- this.$modified = true;
- this.$breakpoints = [];
- this.$decorations = [];
- this.$frontMarkers = {};
- this.$backMarkers = {};
- this.$markerId = 1;
- this.$resetRowCache(0);
- this.$wrapData = [];
- this.$foldData = [];
- this.$rowLengthCache = [];
- this.$undoSelect = true;
- this.$foldData.toString = function() {
- var str = "";
- this.forEach(function(foldLine) {
- str += "\n" + foldLine.toString();
- });
- return str;
- }
-
- if (typeof text == "object" && text.getLine) {
- this.setDocument(text);
- } else {
- this.setDocument(new Document(text));
- }
-
- this.selection = new Selection(this);
- this.setMode(mode);
-};
-
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setDocument = function(doc) {
- if (this.doc)
- throw new Error("Document is already set");
-
- this.doc = doc;
- doc.on("change", this.onChange.bind(this));
- this.on("changeFold", this.onChangeFold.bind(this));
-
- if (this.bgTokenizer) {
- this.bgTokenizer.setDocument(this.getDocument());
- this.bgTokenizer.start(0);
- }
- };
- this.getDocument = function() {
- return this.doc;
- };
- this.$resetRowCache = function(docRow) {
- if (!docRow) {
- this.$docRowCache = [];
- this.$screenRowCache = [];
- return;
- }
-
- var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;
- var l = this.$docRowCache.length;
- this.$docRowCache.splice(i, l);
- this.$screenRowCache.splice(i, l);
-
- };
-
- this.$getRowCacheIndex = function(cacheArray, val) {
- var low = 0;
- var hi = cacheArray.length - 1;
-
- while (low <= hi) {
- var mid = (low + hi) >> 1;
- var c = cacheArray[mid];
-
- if (val > c)
- low = mid + 1;
- else if (val < c)
- hi = mid - 1;
- else
- return mid;
- }
-
- return low && low -1;
- };
-
- this.onChangeFold = function(e) {
- var fold = e.data;
- this.$resetRowCache(fold.start.row);
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- this.$modified = true;
-
- this.$resetRowCache(delta.range.start.row);
-
- var removedFolds = this.$updateInternalDataOnChange(e);
- if (!this.$fromUndo && this.$undoManager && !delta.ignore) {
- this.$deltasDoc.push(delta);
- if (removedFolds && removedFolds.length != 0) {
- this.$deltasFold.push({
- action: "removeFolds",
- folds: removedFolds
- });
- }
-
- this.$informUndoManager.schedule();
- }
-
- this.bgTokenizer.$updateOnChange(delta);
- this._emit("change", e);
- };
- this.setValue = function(text) {
- this.doc.setValue(text);
- this.selection.moveCursorTo(0, 0);
- this.selection.clearSelection();
-
- this.$resetRowCache(0);
- this.$deltas = [];
- this.$deltasDoc = [];
- this.$deltasFold = [];
- this.getUndoManager().reset();
- };
- /** alias of: EditSession.getValue
- * EditSession.toString() -> String
- *
- * Returns the current [[Document `Document`]] as a string.
- *
- **/
- this.getValue =
- this.toString = function() {
- return this.doc.getValue();
- };
- this.getSelection = function() {
- return this.selection;
- };
- this.getState = function(row) {
- return this.bgTokenizer.getState(row);
- };
- this.getTokens = function(row) {
- return this.bgTokenizer.getTokens(row);
- };
- this.getTokenAt = function(row, column) {
- var tokens = this.bgTokenizer.getTokens(row);
- var token, c = 0;
- if (column == null) {
- i = tokens.length - 1;
- c = this.getLine(row).length;
- } else {
- for (var i = 0; i < tokens.length; i++) {
- c += tokens[i].value.length;
- if (c >= column)
- break;
- }
- }
- token = tokens[i];
- if (!token)
- return null;
- token.index = i;
- token.start = c - token.value.length;
- return token;
- };
-
- this.highlight = function(re) {
- if (!this.$searchHighlight) {
- var highlight = new SearchHighlight(null, "ace_selected_word", "text");
- this.$searchHighlight = this.addDynamicMarker(highlight);
- }
- this.$searchHighlight.setRegexp(re);
- }
- /**
- * EditSession.setUndoManager(undoManager)
- * - undoManager (UndoManager): The new undo manager
- *
- * Sets the undo manager.
- **/
- this.setUndoManager = function(undoManager) {
- this.$undoManager = undoManager;
- this.$deltas = [];
- this.$deltasDoc = [];
- this.$deltasFold = [];
-
- if (this.$informUndoManager)
- this.$informUndoManager.cancel();
-
- if (undoManager) {
- var self = this;
- this.$syncInformUndoManager = function() {
- self.$informUndoManager.cancel();
-
- if (self.$deltasFold.length) {
- self.$deltas.push({
- group: "fold",
- deltas: self.$deltasFold
- });
- self.$deltasFold = [];
- }
-
- if (self.$deltasDoc.length) {
- self.$deltas.push({
- group: "doc",
- deltas: self.$deltasDoc
- });
- self.$deltasDoc = [];
- }
-
- if (self.$deltas.length > 0) {
- undoManager.execute({
- action: "aceupdate",
- args: [self.$deltas, self]
- });
- }
-
- self.$deltas = [];
- }
- this.$informUndoManager =
- lang.deferredCall(this.$syncInformUndoManager);
- }
- };
-
- this.$defaultUndoManager = {
- undo: function() {},
- redo: function() {},
- reset: function() {}
- };
- this.getUndoManager = function() {
- return this.$undoManager || this.$defaultUndoManager;
- },
-
- /**
- * EditSession.getTabString() -> String
- *
- * Returns the current value for tabs. If the user is using soft tabs, this will be a series of spaces (defined by [[EditSession.getTabSize `getTabSize()`]]); otherwise it's simply `'\t'`.
- **/
- this.getTabString = function() {
- if (this.getUseSoftTabs()) {
- return lang.stringRepeat(" ", this.getTabSize());
- } else {
- return "\t";
- }
- };
-
- this.$useSoftTabs = true;
- this.setUseSoftTabs = function(useSoftTabs) {
- if (this.$useSoftTabs === useSoftTabs) return;
-
- this.$useSoftTabs = useSoftTabs;
- };
- this.getUseSoftTabs = function() {
- return this.$useSoftTabs;
- };
-
- this.$tabSize = 4;
- this.setTabSize = function(tabSize) {
- if (isNaN(tabSize) || this.$tabSize === tabSize) return;
-
- this.$modified = true;
- this.$rowLengthCache = [];
- this.$tabSize = tabSize;
- this._emit("changeTabSize");
- };
- this.getTabSize = function() {
- return this.$tabSize;
- };
- this.isTabStop = function(position) {
- return this.$useSoftTabs && (position.column % this.$tabSize == 0);
- };
-
- this.$overwrite = false;
- this.setOverwrite = function(overwrite) {
- if (this.$overwrite == overwrite) return;
-
- this.$overwrite = overwrite;
- this._emit("changeOverwrite");
- };
- this.getOverwrite = function() {
- return this.$overwrite;
- };
- this.toggleOverwrite = function() {
- this.setOverwrite(!this.$overwrite);
- };
- this.addGutterDecoration = function(row, className) {
- if (!this.$decorations[row])
- this.$decorations[row] = "";
- this.$decorations[row] += " " + className;
- this._emit("changeBreakpoint", {});
- };
- this.removeGutterDecoration = function(row, className) {
- this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, "");
- this._emit("changeBreakpoint", {});
- };
- this.getBreakpoints = function() {
- return this.$breakpoints;
- };
- this.setBreakpoints = function(rows) {
- this.$breakpoints = [];
- for (var i=0; i<rows.length; i++) {
- this.$breakpoints[rows[i]] = "ace_breakpoint";
- }
- this._emit("changeBreakpoint", {});
- };
- this.clearBreakpoints = function() {
- this.$breakpoints = [];
- this._emit("changeBreakpoint", {});
- };
- this.setBreakpoint = function(row, className) {
- if (className === undefined)
- className = "ace_breakpoint";
- if (className)
- this.$breakpoints[row] = className;
- else
- delete this.$breakpoints[row];
- this._emit("changeBreakpoint", {});
- };
- this.clearBreakpoint = function(row) {
- delete this.$breakpoints[row];
- this._emit("changeBreakpoint", {});
- };
- this.addMarker = function(range, clazz, type, inFront) {
- var id = this.$markerId++;
-
- var marker = {
- range : range,
- type : type || "line",
- renderer: typeof type == "function" ? type : null,
- clazz : clazz,
- inFront: !!inFront,
- id: id
- }
-
- if (inFront) {
- this.$frontMarkers[id] = marker;
- this._emit("changeFrontMarker")
- } else {
- this.$backMarkers[id] = marker;
- this._emit("changeBackMarker")
- }
-
- return id;
- };
- this.addDynamicMarker = function(marker, inFront) {
- if (!marker.update)
- return;
- var id = this.$markerId++;
- marker.id = id;
- marker.inFront = !!inFront;
-
- if (inFront) {
- this.$frontMarkers[id] = marker;
- this._emit("changeFrontMarker")
- } else {
- this.$backMarkers[id] = marker;
- this._emit("changeBackMarker")
- }
-
- return marker;
- };
- this.removeMarker = function(markerId) {
- var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];
- if (!marker)
- return;
-
- var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;
- if (marker) {
- delete (markers[markerId]);
- this._emit(marker.inFront ? "changeFrontMarker" : "changeBackMarker");
- }
- };
- this.getMarkers = function(inFront) {
- return inFront ? this.$frontMarkers : this.$backMarkers;
- };
- /**
- * EditSession.setAnnotations(annotations)
- * - annotations (Array): A list of annotations
- *
- * Sets annotations for the `EditSession`. This functions emits the `'changeAnnotation'` event.
- **/
- this.setAnnotations = function(annotations) {
- this.$annotations = {};
- for (var i=0; i<annotations.length; i++) {
- var annotation = annotations[i];
- var row = annotation.row;
- if (this.$annotations[row])
- this.$annotations[row].push(annotation);
- else
- this.$annotations[row] = [annotation];
- }
- this._emit("changeAnnotation", {});
- };
- this.getAnnotations = function() {
- return this.$annotations || {};
- };
- this.clearAnnotations = function() {
- this.$annotations = {};
- this._emit("changeAnnotation", {});
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r?\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getWordRange = function(row, column) {
- var line = this.getLine(row);
-
- var inToken = false;
- if (column > 0)
- inToken = !!line.charAt(column - 1).match(this.tokenRe);
-
- if (!inToken)
- inToken = !!line.charAt(column).match(this.tokenRe);
-
- if (inToken)
- var re = this.tokenRe;
- else if (/^\s+$/.test(line.slice(column-1, column+1)))
- var re = /\s/;
- else
- var re = this.nonTokenRe;
-
- var start = column;
- if (start > 0) {
- do {
- start--;
- }
- while (start >= 0 && line.charAt(start).match(re));
- start++;
- }
-
- var end = column;
- while (end < line.length && line.charAt(end).match(re)) {
- end++;
- }
-
- return new Range(row, start, row, end);
- };
- this.getAWordRange = function(row, column) {
- var wordRange = this.getWordRange(row, column);
- var line = this.getLine(wordRange.end.row);
-
- while (line.charAt(wordRange.end.column).match(/[ \t]/)) {
- wordRange.end.column += 1;
- }
- return wordRange;
- };
- this.setNewLineMode = function(newLineMode) {
- this.doc.setNewLineMode(newLineMode);
- };
- this.getNewLineMode = function() {
- return this.doc.getNewLineMode();
- };
-
- this.$useWorker = true;
- this.setUseWorker = function(useWorker) {
- if (this.$useWorker == useWorker)
- return;
-
- this.$useWorker = useWorker;
-
- this.$stopWorker();
- if (useWorker)
- this.$startWorker();
- };
- this.getUseWorker = function() {
- return this.$useWorker;
- };
- this.onReloadTokenizer = function(e) {
- var rows = e.data;
- this.bgTokenizer.start(rows.first);
- this._emit("tokenizerUpdate", e);
- };
-
- this.$modes = {};
- this._loadMode = function(mode, callback) {
- if (!this.$modes["null"])
- this.$modes["null"] = this.$modes["ace/mode/text"] = new TextMode();
-
- if (this.$modes[mode])
- return callback(this.$modes[mode]);
-
- var _self = this;
- var module;
- try {
- module = require(mode);
- } catch (e) {};
- // sometimes require returns empty object (this bug is present in requirejs 2 as well)
- if (module && module.Mode)
- return done(module);
-
- // set mode to text until loading is finished
- if (!this.$mode)
- this.$setModePlaceholder();
-
- fetch(mode, function() {
- require([mode], done);
- });
-
- function done(module) {
- if (_self.$modes[mode])
- return callback(_self.$modes[mode]);
-
- _self.$modes[mode] = new module.Mode();
- _self.$modes[mode].$id = mode;
- _self._emit("loadmode", {
- name: mode,
- mode: _self.$modes[mode]
- });
- callback(_self.$modes[mode]);
- }
-
- function fetch(name, callback) {
- if (!config.get("packaged"))
- return callback();
-
- net.loadScript(config.moduleUrl(name, "mode"), callback);
- }
- };
-
- this.$setModePlaceholder = function() {
- this.$mode = this.$modes["null"];
- var tokenizer = this.$mode.getTokenizer();
-
- if (!this.bgTokenizer) {
- this.bgTokenizer = new BackgroundTokenizer(tokenizer);
- var _self = this;
- this.bgTokenizer.addEventListener("update", function(e) {
- _self._emit("tokenizerUpdate", e);
- });
- } else {
- this.bgTokenizer.setTokenizer(tokenizer);
- }
- this.bgTokenizer.setDocument(this.getDocument());
-
- this.tokenRe = this.$mode.tokenRe;
- this.nonTokenRe = this.$mode.nonTokenRe;
- };
- this.$mode = null;
- this.$modeId = null;
- this.setMode = function(mode) {
- mode = mode || "null";
- // load on demand
- if (typeof mode === "string") {
- if (this.$modeId == mode)
- return;
-
- this.$modeId = mode;
- var _self = this;
- this._loadMode(mode, function(module) {
- if (_self.$modeId !== mode)
- return;
-
- _self.setMode(module);
- });
- return;
- }
-
- if (this.$mode === mode) return;
- this.$mode = mode;
- this.$modeId = mode.$id;
-
- this.$stopWorker();
-
- if (this.$useWorker)
- this.$startWorker();
-
- var tokenizer = mode.getTokenizer();
-
- if(tokenizer.addEventListener !== undefined) {
- var onReloadTokenizer = this.onReloadTokenizer.bind(this);
- tokenizer.addEventListener("update", onReloadTokenizer);
- }
-
- if (!this.bgTokenizer) {
- this.bgTokenizer = new BackgroundTokenizer(tokenizer);
- var _self = this;
- this.bgTokenizer.addEventListener("update", function(e) {
- _self._emit("tokenizerUpdate", e);
- });
- } else {
- this.bgTokenizer.setTokenizer(tokenizer);
- }
-
- this.bgTokenizer.setDocument(this.getDocument());
- this.bgTokenizer.start(0);
-
- this.tokenRe = mode.tokenRe;
- this.nonTokenRe = mode.nonTokenRe;
-
- this.$setFolding(mode.foldingRules);
-
- this._emit("changeMode");
- };
- this.$stopWorker = function() {
- if (this.$worker)
- this.$worker.terminate();
-
- this.$worker = null;
- };
- this.$startWorker = function() {
- if (typeof Worker !== "undefined" && !require.noWorker) {
- try {
- this.$worker = this.$mode.createWorker(this);
- } catch (e) {
- console.log("Could not load worker");
- console.log(e);
- this.$worker = null;
- }
- }
- else
- this.$worker = null;
- };
- this.getMode = function() {
- return this.$mode;
- };
-
- this.$scrollTop = 0;
- this.setScrollTop = function(scrollTop) {
- scrollTop = Math.round(Math.max(0, scrollTop));
- if (this.$scrollTop === scrollTop)
- return;
-
- this.$scrollTop = scrollTop;
- this._emit("changeScrollTop", scrollTop);
- };
- this.getScrollTop = function() {
- return this.$scrollTop;
- };
-
- this.$scrollLeft = 0;
- this.setScrollLeft = function(scrollLeft) {
- scrollLeft = Math.round(Math.max(0, scrollLeft));
- if (this.$scrollLeft === scrollLeft)
- return;
-
- this.$scrollLeft = scrollLeft;
- this._emit("changeScrollLeft", scrollLeft);
- };
- this.getScrollLeft = function() {
- return this.$scrollLeft;
- };
- this.getScreenWidth = function() {
- this.$computeWidth();
- return this.screenWidth;
- };
-
- this.$computeWidth = function(force) {
- if (this.$modified || force) {
- this.$modified = false;
-
- if (this.$useWrapMode)
- return this.screenWidth = this.$wrapLimit;
-
- var lines = this.doc.getAllLines();
- var cache = this.$rowLengthCache;
- var longestScreenLine = 0;
- var foldIndex = 0;
- var foldLine = this.$foldData[foldIndex];
- var foldStart = foldLine ? foldLine.start.row : Infinity;
- var len = lines.length;
-
- for (var i = 0; i < len; i++) {
- if (i > foldStart) {
- i = foldLine.end.row + 1;
- if (i >= len)
- break;
- foldLine = this.$foldData[foldIndex++];
- foldStart = foldLine ? foldLine.start.row : Infinity;
- }
-
- if (cache[i] == null)
- cache[i] = this.$getStringScreenWidth(lines[i])[0];
-
- if (cache[i] > longestScreenLine)
- longestScreenLine = cache[i];
- }
- this.screenWidth = longestScreenLine;
- }
- };
- this.getLine = function(row) {
- return this.doc.getLine(row);
- };
- this.getLines = function(firstRow, lastRow) {
- return this.doc.getLines(firstRow, lastRow);
- };
- this.getLength = function() {
- return this.doc.getLength();
- };
- this.getTextRange = function(range) {
- return this.doc.getTextRange(range || this.selection.getRange());
- };
- this.insert = function(position, text) {
- return this.doc.insert(position, text);
- };
- this.remove = function(range) {
- return this.doc.remove(range);
- };
- this.undoChanges = function(deltas, dontSelect) {
- if (!deltas.length)
- return;
-
- this.$fromUndo = true;
- var lastUndoRange = null;
- for (var i = deltas.length - 1; i != -1; i--) {
- var delta = deltas[i];
- if (delta.group == "doc") {
- this.doc.revertDeltas(delta.deltas);
- lastUndoRange =
- this.$getUndoSelection(delta.deltas, true, lastUndoRange);
- } else {
- delta.deltas.forEach(function(foldDelta) {
- this.addFolds(foldDelta.folds);
- }, this);
- }
- }
- this.$fromUndo = false;
- lastUndoRange &&
- this.$undoSelect &&
- !dontSelect &&
- this.selection.setSelectionRange(lastUndoRange);
- return lastUndoRange;
- };
- this.redoChanges = function(deltas, dontSelect) {
- if (!deltas.length)
- return;
-
- this.$fromUndo = true;
- var lastUndoRange = null;
- for (var i = 0; i < deltas.length; i++) {
- var delta = deltas[i];
- if (delta.group == "doc") {
- this.doc.applyDeltas(delta.deltas);
- lastUndoRange =
- this.$getUndoSelection(delta.deltas, false, lastUndoRange);
- }
- }
- this.$fromUndo = false;
- lastUndoRange &&
- this.$undoSelect &&
- !dontSelect &&
- this.selection.setSelectionRange(lastUndoRange);
- return lastUndoRange;
- };
- this.setUndoSelect = function(enable) {
- this.$undoSelect = enable;
- };
- this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {
- function isInsert(delta) {
- var insert =
- delta.action == "insertText" || delta.action == "insertLines";
- return isUndo ? !insert : insert;
- }
-
- var delta = deltas[0];
- var range, point;
- var lastDeltaIsInsert = false;
- if (isInsert(delta)) {
- range = delta.range.clone();
- lastDeltaIsInsert = true;
- } else {
- range = Range.fromPoints(delta.range.start, delta.range.start);
- lastDeltaIsInsert = false;
- }
-
- for (var i = 1; i < deltas.length; i++) {
- delta = deltas[i];
- if (isInsert(delta)) {
- point = delta.range.start;
- if (range.compare(point.row, point.column) == -1) {
- range.setStart(delta.range.start);
- }
- point = delta.range.end;
- if (range.compare(point.row, point.column) == 1) {
- range.setEnd(delta.range.end);
- }
- lastDeltaIsInsert = true;
- } else {
- point = delta.range.start;
- if (range.compare(point.row, point.column) == -1) {
- range =
- Range.fromPoints(delta.range.start, delta.range.start);
- }
- lastDeltaIsInsert = false;
- }
- }
-
- // Check if this range and the last undo range has something in common.
- // If true, merge the ranges.
- if (lastUndoRange != null) {
- var cmp = lastUndoRange.compareRange(range);
- if (cmp == 1) {
- range.setStart(lastUndoRange.start);
- } else if (cmp == -1) {
- range.setEnd(lastUndoRange.end);
- }
- }
-
- return range;
- },
-
- /** related to: Document.replace
- * EditSession.replace(range, text) -> Object
- * - range (Range): A specified Range to replace
- * - text (String): The new text to use as a replacement
- * + (Object): Returns an object containing the final row and column, like this:<br/>
- * ```{row: endRow, column: 0}```<br/>
- * If the text and range are empty, this function returns an object containing the current `range.start` value.<br/>
- * If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value.
- *
- * Replaces a range in the document with the new `text`.
- *
- *
- *
- **/
- this.replace = function(range, text) {
- return this.doc.replace(range, text);
- };
- this.moveText = function(fromRange, toPosition) {
- var text = this.getTextRange(fromRange);
- this.remove(fromRange);
-
- var toRow = toPosition.row;
- var toColumn = toPosition.column;
-
- // Make sure to update the insert location, when text is removed in
- // front of the chosen point of insertion.
- if (!fromRange.isMultiLine() && fromRange.start.row == toRow &&
- fromRange.end.column < toColumn)
- toColumn -= text.length;
-
- if (fromRange.isMultiLine() && fromRange.end.row < toRow) {
- var lines = this.doc.$split(text);
- toRow -= lines.length - 1;
- }
-
- var endRow = toRow + fromRange.end.row - fromRange.start.row;
- var endColumn = fromRange.isMultiLine() ?
- fromRange.end.column :
- toColumn + fromRange.end.column - fromRange.start.column;
-
- var toRange = new Range(toRow, toColumn, endRow, endColumn);
-
- this.insert(toRange.start, text);
-
- return toRange;
- };
- this.indentRows = function(startRow, endRow, indentString) {
- indentString = indentString.replace(/\t/g, this.getTabString());
- for (var row=startRow; row<=endRow; row++)
- this.insert({row: row, column:0}, indentString);
- };
- this.outdentRows = function (range) {
- var rowRange = range.collapseRows();
- var deleteRange = new Range(0, 0, 0, 0);
- var size = this.getTabSize();
-
- for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {
- var line = this.getLine(i);
-
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- for (var j = 0; j < size; ++j)
- if (line.charAt(j) != ' ')
- break;
- if (j < size && line.charAt(j) == '\t') {
- deleteRange.start.column = j;
- deleteRange.end.column = j + 1;
- } else {
- deleteRange.start.column = 0;
- deleteRange.end.column = j;
- }
- this.remove(deleteRange);
- }
- };
- this.moveLinesUp = function(firstRow, lastRow) {
- if (firstRow <= 0) return 0;
-
- var removed = this.doc.removeLines(firstRow, lastRow);
- this.doc.insertLines(firstRow - 1, removed);
- return -1;
- };
- this.moveLinesDown = function(firstRow, lastRow) {
- if (lastRow >= this.doc.getLength()-1) return 0;
-
- var removed = this.doc.removeLines(firstRow, lastRow);
- this.doc.insertLines(firstRow+1, removed);
- return 1;
- };
- this.duplicateLines = function(firstRow, lastRow) {
- var firstRow = this.$clipRowToDocument(firstRow);
- var lastRow = this.$clipRowToDocument(lastRow);
-
- var lines = this.getLines(firstRow, lastRow);
- this.doc.insertLines(firstRow, lines);
-
- var addedRows = lastRow - firstRow + 1;
- return addedRows;
- };
-
-
- this.$clipRowToDocument = function(row) {
- return Math.max(0, Math.min(row, this.doc.getLength()-1));
- };
-
- this.$clipColumnToRow = function(row, column) {
- if (column < 0)
- return 0;
- return Math.min(this.doc.getLine(row).length, column);
- };
-
-
- this.$clipPositionToDocument = function(row, column) {
- column = Math.max(0, column);
-
- if (row < 0) {
- row = 0;
- column = 0;
- } else {
- var len = this.doc.getLength();
- if (row >= len) {
- row = len - 1;
- column = this.doc.getLine(len-1).length;
- } else {
- column = Math.min(this.doc.getLine(row).length, column);
- }
- }
-
- return {
- row: row,
- column: column
- };
- };
-
- this.$clipRangeToDocument = function(range) {
- if (range.start.row < 0) {
- range.start.row = 0;
- range.start.column = 0;
- } else {
- range.start.column = this.$clipColumnToRow(
- range.start.row,
- range.start.column
- );
- }
-
- var len = this.doc.getLength() - 1;
- if (range.end.row > len) {
- range.end.row = len;
- range.end.column = this.doc.getLine(len).length;
- } else {
- range.end.column = this.$clipColumnToRow(
- range.end.row,
- range.end.column
- );
- }
- return range;
- };
-
- // WRAPMODE
- this.$wrapLimit = 80;
- this.$useWrapMode = false;
- this.$wrapLimitRange = {
- min : null,
- max : null
- };
- this.setUseWrapMode = function(useWrapMode) {
- if (useWrapMode != this.$useWrapMode) {
- this.$useWrapMode = useWrapMode;
- this.$modified = true;
- this.$resetRowCache(0);
-
- // If wrapMode is activaed, the wrapData array has to be initialized.
- if (useWrapMode) {
- var len = this.getLength();
- this.$wrapData = [];
- for (var i = 0; i < len; i++) {
- this.$wrapData.push([]);
- }
- this.$updateWrapData(0, len - 1);
- }
-
- this._emit("changeWrapMode");
- }
- };
- this.getUseWrapMode = function() {
- return this.$useWrapMode;
- };
-
- // Allow the wrap limit to move freely between min and max. Either
- // parameter can be null to allow the wrap limit to be unconstrained
- // in that direction. Or set both parameters to the same number to pin
- // the limit to that value.
- /**
- * EditSession.setWrapLimitRange(min, max)
- * - min (Number): The minimum wrap value (the left side wrap)
- * - max (Number): The maximum wrap value (the right side wrap)
- *
- * Sets the boundaries of wrap. Either value can be `null` to have an unconstrained wrap, or, they can be the same number to pin the limit. If the wrap limits for `min` or `max` are different, this method also emits the `'changeWrapMode'` event.
- **/
- this.setWrapLimitRange = function(min, max) {
- if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {
- this.$wrapLimitRange.min = min;
- this.$wrapLimitRange.max = max;
- this.$modified = true;
- // This will force a recalculation of the wrap limit
- this._emit("changeWrapMode");
- }
- };
- this.adjustWrapLimit = function(desiredLimit) {
- var wrapLimit = this.$constrainWrapLimit(desiredLimit);
- if (wrapLimit != this.$wrapLimit && wrapLimit > 0) {
- this.$wrapLimit = wrapLimit;
- this.$modified = true;
- if (this.$useWrapMode) {
- this.$updateWrapData(0, this.getLength() - 1);
- this.$resetRowCache(0);
- this._emit("changeWrapLimit");
- }
- return true;
- }
- return false;
- };
- this.$constrainWrapLimit = function(wrapLimit) {
- var min = this.$wrapLimitRange.min;
- if (min)
- wrapLimit = Math.max(min, wrapLimit);
-
- var max = this.$wrapLimitRange.max;
- if (max)
- wrapLimit = Math.min(max, wrapLimit);
-
- // What would a limit of 0 even mean?
- return Math.max(1, wrapLimit);
- };
- this.getWrapLimit = function() {
- return this.$wrapLimit;
- };
- this.getWrapLimitRange = function() {
- // Avoid unexpected mutation by returning a copy
- return {
- min : this.$wrapLimitRange.min,
- max : this.$wrapLimitRange.max
- };
- };
- this.$updateInternalDataOnChange = function(e) {
- var useWrapMode = this.$useWrapMode;
- var len;
- var action = e.data.action;
- var firstRow = e.data.range.start.row;
- var lastRow = e.data.range.end.row;
- var start = e.data.range.start;
- var end = e.data.range.end;
- var removedFolds = null;
-
- if (action.indexOf("Lines") != -1) {
- if (action == "insertLines") {
- lastRow = firstRow + (e.data.lines.length);
- } else {
- lastRow = firstRow;
- }
- len = e.data.lines ? e.data.lines.length : lastRow - firstRow;
- } else {
- len = lastRow - firstRow;
- }
-
- if (len != 0) {
- if (action.indexOf("remove") != -1) {
- this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len);
-
- var foldLines = this.$foldData;
- removedFolds = this.getFoldsInRange(e.data.range);
- this.removeFolds(removedFolds);
-
- var foldLine = this.getFoldLine(end.row);
- var idx = 0;
- if (foldLine) {
- foldLine.addRemoveChars(end.row, end.column, start.column - end.column);
- foldLine.shiftRow(-len);
-
- var foldLineBefore = this.getFoldLine(firstRow);
- if (foldLineBefore && foldLineBefore !== foldLine) {
- foldLineBefore.merge(foldLine);
- foldLine = foldLineBefore;
- }
- idx = foldLines.indexOf(foldLine) + 1;
- }
-
- for (idx; idx < foldLines.length; idx++) {
- var foldLine = foldLines[idx];
- if (foldLine.start.row >= end.row) {
- foldLine.shiftRow(-len);
- }
- }
-
- lastRow = firstRow;
- } else {
- var args;
- if (useWrapMode) {
- args = [firstRow, 0];
- for (var i = 0; i < len; i++) args.push([]);
- this.$wrapData.splice.apply(this.$wrapData, args);
- } else {
- args = Array(len);
- args.unshift(firstRow, 0);
- this.$rowLengthCache.splice.apply(this.$rowLengthCache, args);
- }
-
- // If some new line is added inside of a foldLine, then split
- // the fold line up.
- var foldLines = this.$foldData;
- var foldLine = this.getFoldLine(firstRow);
- var idx = 0;
- if (foldLine) {
- var cmp = foldLine.range.compareInside(start.row, start.column)
- // Inside of the foldLine range. Need to split stuff up.
- if (cmp == 0) {
- foldLine = foldLine.split(start.row, start.column);
- foldLine.shiftRow(len);
- foldLine.addRemoveChars(
- lastRow, 0, end.column - start.column);
- } else
- // Infront of the foldLine but same row. Need to shift column.
- if (cmp == -1) {
- foldLine.addRemoveChars(firstRow, 0, end.column - start.column);
- foldLine.shiftRow(len);
- }
- // Nothing to do if the insert is after the foldLine.
- idx = foldLines.indexOf(foldLine) + 1;
- }
-
- for (idx; idx < foldLines.length; idx++) {
- var foldLine = foldLines[idx];
- if (foldLine.start.row >= firstRow) {
- foldLine.shiftRow(len);
- }
- }
- }
- } else {
- // Realign folds. E.g. if you add some new chars before a fold, the
- // fold should "move" to the right.
- len = Math.abs(e.data.range.start.column - e.data.range.end.column);
- if (action.indexOf("remove") != -1) {
- // Get all the folds in the change range and remove them.
- removedFolds = this.getFoldsInRange(e.data.range);
- this.removeFolds(removedFolds);
-
- len = -len;
- }
- var foldLine = this.getFoldLine(firstRow);
- if (foldLine) {
- foldLine.addRemoveChars(firstRow, start.column, len);
- }
- }
-
- if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {
- console.error("doc.getLength() and $wrapData.length have to be the same!");
- }
-
- if (useWrapMode)
- this.$updateWrapData(firstRow, lastRow);
- else
- this.$updateRowLengthCache(firstRow, lastRow);
-
- return removedFolds;
- };
-
- this.$updateRowLengthCache = function(firstRow, lastRow, b) {
- this.$rowLengthCache[firstRow] = null;
- this.$rowLengthCache[lastRow] = null;
- };
- this.$updateWrapData = function(firstRow, lastRow) {
- var lines = this.doc.getAllLines();
- var tabSize = this.getTabSize();
- var wrapData = this.$wrapData;
- var wrapLimit = this.$wrapLimit;
- var tokens;
- var foldLine;
-
- var row = firstRow;
- lastRow = Math.min(lastRow, lines.length - 1);
- while (row <= lastRow) {
- foldLine = this.getFoldLine(row, foldLine);
- if (!foldLine) {
- tokens = this.$getDisplayTokens(lang.stringTrimRight(lines[row]));
- wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);
- row ++;
- } else {
- tokens = [];
- foldLine.walk(
- function(placeholder, row, column, lastColumn) {
- var walkTokens;
- if (placeholder) {
- walkTokens = this.$getDisplayTokens(
- placeholder, tokens.length);
- walkTokens[0] = PLACEHOLDER_START;
- for (var i = 1; i < walkTokens.length; i++) {
- walkTokens[i] = PLACEHOLDER_BODY;
- }
- } else {
- walkTokens = this.$getDisplayTokens(
- lines[row].substring(lastColumn, column),
- tokens.length);
- }
- tokens = tokens.concat(walkTokens);
- }.bind(this),
- foldLine.end.row,
- lines[foldLine.end.row].length + 1
- );
- // Remove spaces/tabs from the back of the token array.
- while (tokens.length != 0 && tokens[tokens.length - 1] >= SPACE)
- tokens.pop();
-
- wrapData[foldLine.start.row]
- = this.$computeWrapSplits(tokens, wrapLimit, tabSize);
- row = foldLine.end.row + 1;
- }
- }
- };
-
- // "Tokens"
- var CHAR = 1,
- CHAR_EXT = 2,
- PLACEHOLDER_START = 3,
- PLACEHOLDER_BODY = 4,
- PUNCTUATION = 9,
- SPACE = 10,
- TAB = 11,
- TAB_SPACE = 12;
- this.$computeWrapSplits = function(tokens, wrapLimit) {
- if (tokens.length == 0) {
- return [];
- }
-
- var splits = [];
- var displayLength = tokens.length;
- var lastSplit = 0, lastDocSplit = 0;
-
- function addSplit(screenPos) {
- var displayed = tokens.slice(lastSplit, screenPos);
-
- // The document size is the current size - the extra width for tabs
- // and multipleWidth characters.
- var len = displayed.length;
- displayed.join("").
- // Get all the TAB_SPACEs.
- replace(/12/g, function() {
- len -= 1;
- }).
- // Get all the CHAR_EXT/multipleWidth characters.
- replace(/2/g, function() {
- len -= 1;
- });
-
- lastDocSplit += len;
- splits.push(lastDocSplit);
- lastSplit = screenPos;
- }
-
- while (displayLength - lastSplit > wrapLimit) {
- // This is, where the split should be.
- var split = lastSplit + wrapLimit;
-
- // If there is a space or tab at this split position, then making
- // a split is simple.
- if (tokens[split] >= SPACE) {
- // Include all following spaces + tabs in this split as well.
- while (tokens[split] >= SPACE) {
- split ++;
- }
- addSplit(split);
- continue;
- }
-
- // === ELSE ===
- // Check if split is inside of a placeholder. Placeholder are
- // not splitable. Therefore, seek the beginning of the placeholder
- // and try to place the split beofre the placeholder's start.
- if (tokens[split] == PLACEHOLDER_START
- || tokens[split] == PLACEHOLDER_BODY)
- {
- // Seek the start of the placeholder and do the split
- // before the placeholder. By definition there always
- // a PLACEHOLDER_START between split and lastSplit.
- for (split; split != lastSplit - 1; split--) {
- if (tokens[split] == PLACEHOLDER_START) {
- // split++; << No incremental here as we want to
- // have the position before the Placeholder.
- break;
- }
- }
-
- // If the PLACEHOLDER_START is not the index of the
- // last split, then we can do the split
- if (split > lastSplit) {
- addSplit(split);
- continue;
- }
-
- // If the PLACEHOLDER_START IS the index of the last
- // split, then we have to place the split after the
- // placeholder. So, let's seek for the end of the placeholder.
- split = lastSplit + wrapLimit;
- for (split; split < tokens.length; split++) {
- if (tokens[split] != PLACEHOLDER_BODY)
- {
- break;
- }
- }
-
- // If spilt == tokens.length, then the placeholder is the last
- // thing in the line and adding a new split doesn't make sense.
- if (split == tokens.length) {
- break; // Breaks the while-loop.
- }
-
- // Finally, add the split...
- addSplit(split);
- continue;
- }
-
- // === ELSE ===
- // Search for the first non space/tab/placeholder/punctuation token backwards.
- var minSplit = Math.max(split - 10, lastSplit - 1);
- while (split > minSplit && tokens[split] < PLACEHOLDER_START) {
- split --;
- }
- while (split > minSplit && tokens[split] == PUNCTUATION) {
- split --;
- }
- // If we found one, then add the split.
- if (split > minSplit) {
- addSplit(++split);
- continue;
- }
-
- // === ELSE ===
- split = lastSplit + wrapLimit;
- // The split is inside of a CHAR or CHAR_EXT token and no space
- // around -> force a split.
- addSplit(split);
- }
- return splits;
- };
- this.$getDisplayTokens = function(str, offset) {
- var arr = [];
- var tabSize;
- offset = offset || 0;
-
- for (var i = 0; i < str.length; i++) {
- var c = str.charCodeAt(i);
- // Tab
- if (c == 9) {
- tabSize = this.getScreenTabSize(arr.length + offset);
- arr.push(TAB);
- for (var n = 1; n < tabSize; n++) {
- arr.push(TAB_SPACE);
- }
- }
- // Space
- else if (c == 32) {
- arr.push(SPACE);
- } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {
- arr.push(PUNCTUATION);
- }
- // full width characters
- else if (c >= 0x1100 && isFullWidth(c)) {
- arr.push(CHAR, CHAR_EXT);
- } else {
- arr.push(CHAR);
- }
- }
- return arr;
- };
- this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {
- if (maxScreenColumn == 0)
- return [0, 0];
- if (maxScreenColumn == null)
- maxScreenColumn = Infinity;
- screenColumn = screenColumn || 0;
-
- var c, column;
- for (column = 0; column < str.length; column++) {
- c = str.charCodeAt(column);
- // tab
- if (c == 9) {
- screenColumn += this.getScreenTabSize(screenColumn);
- }
- // full width characters
- else if (c >= 0x1100 && isFullWidth(c)) {
- screenColumn += 2;
- } else {
- screenColumn += 1;
- }
- if (screenColumn > maxScreenColumn) {
- break;
- }
- }
-
- return [screenColumn, column];
- };
- this.getRowLength = function(row) {
- if (!this.$useWrapMode || !this.$wrapData[row]) {
- return 1;
- } else {
- return this.$wrapData[row].length + 1;
- }
- };
- this.getScreenLastRowColumn = function(screenRow) {
- var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);
- return this.documentToScreenColumn(pos.row, pos.column);
- };
- this.getDocumentLastRowColumn = function(docRow, docColumn) {
- var screenRow = this.documentToScreenRow(docRow, docColumn);
- return this.getScreenLastRowColumn(screenRow);
- };
- this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {
- var screenRow = this.documentToScreenRow(docRow, docColumn);
- return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);
- };
- this.getRowSplitData = function(row) {
- if (!this.$useWrapMode) {
- return undefined;
- } else {
- return this.$wrapData[row];
- }
- };
- this.getScreenTabSize = function(screenColumn) {
- return this.$tabSize - screenColumn % this.$tabSize;
- };
- this.screenToDocumentRow = function(screenRow, screenColumn) {
- return this.screenToDocumentPosition(screenRow, screenColumn).row;
- };
- this.screenToDocumentColumn = function(screenRow, screenColumn) {
- return this.screenToDocumentPosition(screenRow, screenColumn).column;
- };
- this.screenToDocumentPosition = function(screenRow, screenColumn) {
- if (screenRow < 0)
- return {row: 0, column: 0};
-
- var line;
- var docRow = 0;
- var docColumn = 0;
- var column;
- var row = 0;
- var rowLength = 0;
-
- var rowCache = this.$screenRowCache;
- var i = this.$getRowCacheIndex(rowCache, screenRow);
- if (0 < i && i < rowCache.length) {
- var row = rowCache[i];
- var docRow = this.$docRowCache[i];
- var doCache = screenRow > row || (screenRow == row && i == rowCache.length - 1);
- } else {
- var doCache = i != 0 || !rowCache.length;
- }
-
- var maxRow = this.getLength() - 1;
- var foldLine = this.getNextFoldLine(docRow);
- var foldStart = foldLine ? foldLine.start.row : Infinity;
-
- while (row <= screenRow) {
- rowLength = this.getRowLength(docRow);
- if (row + rowLength - 1 >= screenRow || docRow >= maxRow) {
- break;
- } else {
- row += rowLength;
- docRow++;
- if (docRow > foldStart) {
- docRow = foldLine.end.row+1;
- foldLine = this.getNextFoldLine(docRow, foldLine);
- foldStart = foldLine ? foldLine.start.row : Infinity;
- }
- }
- if (doCache) {
- this.$docRowCache.push(docRow);
- this.$screenRowCache.push(row);
- }
- }
-
- if (foldLine && foldLine.start.row <= docRow) {
- line = this.getFoldDisplayLine(foldLine);
- docRow = foldLine.start.row;
- } else if (row + rowLength <= screenRow || docRow > maxRow) {
- // clip at the end of the document
- return {
- row: maxRow,
- column: this.getLine(maxRow).length
- }
- } else {
- line = this.getLine(docRow);
- foldLine = null;
- }
-
- if (this.$useWrapMode) {
- var splits = this.$wrapData[docRow];
- if (splits) {
- column = splits[screenRow - row];
- if(screenRow > row && splits.length) {
- docColumn = splits[screenRow - row - 1] || splits[splits.length - 1];
- line = line.substring(docColumn);
- }
- }
- }
-
- docColumn += this.$getStringScreenWidth(line, screenColumn)[1];
-
- // We remove one character at the end so that the docColumn
- // position returned is not associated to the next row on the screen.
- if (this.$useWrapMode && docColumn >= column)
- docColumn = column - 1;
-
- if (foldLine)
- return foldLine.idxToPosition(docColumn);
-
- return {row: docRow, column: docColumn};
- };
- this.documentToScreenPosition = function(docRow, docColumn) {
- // Normalize the passed in arguments.
- if (typeof docColumn === "undefined")
- var pos = this.$clipPositionToDocument(docRow.row, docRow.column);
- else
- pos = this.$clipPositionToDocument(docRow, docColumn);
-
- docRow = pos.row;
- docColumn = pos.column;
-
- var screenRow = 0;
- var foldStartRow = null;
- var fold = null;
-
- // Clamp the docRow position in case it's inside of a folded block.
- fold = this.getFoldAt(docRow, docColumn, 1);
- if (fold) {
- docRow = fold.start.row;
- docColumn = fold.start.column;
- }
-
- var rowEnd, row = 0;
-
-
- var rowCache = this.$docRowCache;
- var i = this.$getRowCacheIndex(rowCache, docRow);
- if (0 < i && i < rowCache.length) {
- var row = rowCache[i];
- var screenRow = this.$screenRowCache[i];
- var doCache = docRow > row || (docRow == row && i == rowCache.length - 1);
- } else {
- var doCache = i != 0 || !rowCache.length;
- }
-
- var foldLine = this.getNextFoldLine(row);
- var foldStart = foldLine ?foldLine.start.row :Infinity;
-
- while (row < docRow) {
- if (row >= foldStart) {
- rowEnd = foldLine.end.row + 1;
- if (rowEnd > docRow)
- break;
- foldLine = this.getNextFoldLine(rowEnd, foldLine);
- foldStart = foldLine ?foldLine.start.row :Infinity;
- }
- else {
- rowEnd = row + 1;
- }
-
- screenRow += this.getRowLength(row);
- row = rowEnd;
-
- if (doCache) {
- this.$docRowCache.push(row);
- this.$screenRowCache.push(screenRow);
- }
- }
-
- // Calculate the text line that is displayed in docRow on the screen.
- var textLine = "";
- // Check if the final row we want to reach is inside of a fold.
- if (foldLine && row >= foldStart) {
- textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);
- foldStartRow = foldLine.start.row;
- } else {
- textLine = this.getLine(docRow).substring(0, docColumn);
- foldStartRow = docRow;
- }
- // Clamp textLine if in wrapMode.
- if (this.$useWrapMode) {
- var wrapRow = this.$wrapData[foldStartRow];
- var screenRowOffset = 0;
- while (textLine.length >= wrapRow[screenRowOffset]) {
- screenRow ++;
- screenRowOffset++;
- }
- textLine = textLine.substring(
- wrapRow[screenRowOffset - 1] || 0, textLine.length
- );
- }
-
- return {
- row: screenRow,
- column: this.$getStringScreenWidth(textLine)[0]
- };
- };
- this.documentToScreenColumn = function(row, docColumn) {
- return this.documentToScreenPosition(row, docColumn).column;
- };
- this.documentToScreenRow = function(docRow, docColumn) {
- return this.documentToScreenPosition(docRow, docColumn).row;
- };
- this.getScreenLength = function() {
- var screenRows = 0;
- var fold = null;
- if (!this.$useWrapMode) {
- screenRows = this.getLength();
-
- // Remove the folded lines again.
- var foldData = this.$foldData;
- for (var i = 0; i < foldData.length; i++) {
- fold = foldData[i];
- screenRows -= fold.end.row - fold.start.row;
- }
- } else {
- var lastRow = this.$wrapData.length;
- var row = 0, i = 0;
- var fold = this.$foldData[i++];
- var foldStart = fold ? fold.start.row :Infinity;
-
- while (row < lastRow) {
- screenRows += this.$wrapData[row].length + 1;
- row ++;
- if (row > foldStart) {
- row = fold.end.row+1;
- fold = this.$foldData[i++];
- foldStart = fold ?fold.start.row :Infinity;
- }
- }
- }
-
- return screenRows;
- }
-
- // For every keystroke this gets called once per char in the whole doc!!
- // Wouldn't hurt to make it a bit faster for c >= 0x1100
- function isFullWidth(c) {
- if (c < 0x1100)
- return false;
- return c >= 0x1100 && c <= 0x115F ||
- c >= 0x11A3 && c <= 0x11A7 ||
- c >= 0x11FA && c <= 0x11FF ||
- c >= 0x2329 && c <= 0x232A ||
- c >= 0x2E80 && c <= 0x2E99 ||
- c >= 0x2E9B && c <= 0x2EF3 ||
- c >= 0x2F00 && c <= 0x2FD5 ||
- c >= 0x2FF0 && c <= 0x2FFB ||
- c >= 0x3000 && c <= 0x303E ||
- c >= 0x3041 && c <= 0x3096 ||
- c >= 0x3099 && c <= 0x30FF ||
- c >= 0x3105 && c <= 0x312D ||
- c >= 0x3131 && c <= 0x318E ||
- c >= 0x3190 && c <= 0x31BA ||
- c >= 0x31C0 && c <= 0x31E3 ||
- c >= 0x31F0 && c <= 0x321E ||
- c >= 0x3220 && c <= 0x3247 ||
- c >= 0x3250 && c <= 0x32FE ||
- c >= 0x3300 && c <= 0x4DBF ||
- c >= 0x4E00 && c <= 0xA48C ||
- c >= 0xA490 && c <= 0xA4C6 ||
- c >= 0xA960 && c <= 0xA97C ||
- c >= 0xAC00 && c <= 0xD7A3 ||
- c >= 0xD7B0 && c <= 0xD7C6 ||
- c >= 0xD7CB && c <= 0xD7FB ||
- c >= 0xF900 && c <= 0xFAFF ||
- c >= 0xFE10 && c <= 0xFE19 ||
- c >= 0xFE30 && c <= 0xFE52 ||
- c >= 0xFE54 && c <= 0xFE66 ||
- c >= 0xFE68 && c <= 0xFE6B ||
- c >= 0xFF01 && c <= 0xFF60 ||
- c >= 0xFFE0 && c <= 0xFFE6;
- };
-
-}).call(EditSession.prototype);
-
-require("./edit_session/folding").Folding.call(EditSession.prototype);
-require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype);
-
-exports.EditSession = EditSession;
-});
-
-ace.define('ace/config', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {
-"no use strict";
-
-var lang = require("./lib/lang");
-
-var global = (function() {
- return this;
-})();
-
-var options = {
- packaged: false,
- workerPath: "",
- modePath: "",
- themePath: "",
- suffix: ".js",
- $moduleUrls: {}
-};
-
-exports.get = function(key) {
- if (!options.hasOwnProperty(key))
- throw new Error("Unknown config key: " + key);
-
- return options[key];
-};
-
-exports.set = function(key, value) {
- if (!options.hasOwnProperty(key))
- throw new Error("Unknown config key: " + key);
-
- options[key] = value;
-};
-
-exports.all = function() {
- return lang.copyObject(options);
-};
-
-exports.moduleUrl = function(name, component) {
- if (options.$moduleUrls[name])
- return options.$moduleUrls[name];
-
- var parts = name.split("/");
- component = component || parts[parts.length - 2] || "";
- var base = parts[parts.length - 1].replace(component, "").replace(/(^[\-_])|([\-_]$)/, "");
-
- if (!base && parts.length > 1)
- base = parts[parts.length - 2];
- return this.get(component + "Path") + "/" + component + "-" + base + this.get("suffix");
-};
-
-exports.setModuleUrl = function(name, subst) {
- return options.$moduleUrls[name] = subst;
-};
-
-exports.init = function() {
- options.packaged = require.packaged || module.packaged || (global.define && define.packaged);
-
- if (!global.document)
- return "";
-
- var scriptOptions = {};
- var scriptUrl = "";
-
- var scripts = document.getElementsByTagName("script");
- for (var i=0; i<scripts.length; i++) {
- var script = scripts[i];
-
- var src = script.src || script.getAttribute("src");
- if (!src) {
- continue;
- }
-
- var attributes = script.attributes;
- for (var j=0, l=attributes.length; j < l; j++) {
- var attr = attributes[j];
- if (attr.name.indexOf("data-ace-") === 0) {
- scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, ""))] = attr.value;
- }
- }
-
- var m = src.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);
- if (m)
- scriptUrl = m[1];
- }
-
- if (scriptUrl) {
- scriptOptions.base = scriptOptions.base || scriptUrl;
- scriptOptions.packaged = true;
- }
-
- scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
- scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
- scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
- delete scriptOptions.base;
-
- for (var key in scriptOptions)
- if (typeof scriptOptions[key] !== "undefined")
- exports.set(key, scriptOptions[key]);
-};
-
-function deHyphenate(str) {
- return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });
-}
-
-});
-ace.define('ace/lib/net', ['require', 'exports', 'module' , 'ace/lib/useragent'], function(require, exports, module) {
-
-
-var useragent = require("./useragent");
-
-exports.get = function (url, callback) {
- var xhr = exports.createXhr();
- xhr.open('GET', url, true);
- xhr.onreadystatechange = function (evt) {
- //Do not explicitly handle errors, those should be
- //visible via console output in the browser.
- if (xhr.readyState === 4) {
- callback(xhr.responseText);
- }
- };
- xhr.send(null);
-};
-
-var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
-
-exports.createXhr = function() {
- //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
- var xhr, i, progId;
- if (typeof XMLHttpRequest !== "undefined") {
- return new XMLHttpRequest();
- } else {
- for (i = 0; i < 3; i++) {
- progId = progIds[i];
- try {
- xhr = new ActiveXObject(progId);
- } catch (e) {}
-
- if (xhr) {
- progIds = [progId]; // so faster next time
- break;
- }
- }
- }
-
- if (!xhr) {
- throw new Error("createXhr(): XMLHttpRequest not available");
- }
-
- return xhr;
-};
-
-exports.loadScript = function(path, callback) {
- var head = document.getElementsByTagName('head')[0];
- var s = document.createElement('script');
-
- s.src = path;
- head.appendChild(s);
-
- if (useragent.isOldIE)
- s.onreadystatechange = function () {
- this.readyState == 'loaded' && callback();
- };
- else
- s.onload = callback;
-};
-
-});
-
-ace.define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-ace.define('ace/selection', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/event_emitter', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var lang = require("./lib/lang");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-
-/**
- * new Selection(session)
- * - session (EditSession): The session to use
- *
- * Creates a new `Selection` object.
- *
-**/
-/**
- * Selection@changeCursor()
- *
- * Emitted when the cursor position changes.
- *
-**/
-/**
- * Selection@changeSelection()
- *
- * Emitted when the cursor selection changes.
- *
-**/
-var Selection = function(session) {
- this.session = session;
- this.doc = session.getDocument();
-
- this.clearSelection();
- this.lead = this.selectionLead = this.doc.createAnchor(0, 0);
- this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);
-
- var self = this;
- this.lead.on("change", function(e) {
- self._emit("changeCursor");
- if (!self.$isEmpty)
- self._emit("changeSelection");
- if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)
- self.$desiredColumn = null;
- });
-
- this.selectionAnchor.on("change", function() {
- if (!self.$isEmpty)
- self._emit("changeSelection");
- });
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.isEmpty = function() {
- return (this.$isEmpty || (
- this.anchor.row == this.lead.row &&
- this.anchor.column == this.lead.column
- ));
- };
- this.isMultiLine = function() {
- if (this.isEmpty()) {
- return false;
- }
-
- return this.getRange().isMultiLine();
- };
- this.getCursor = function() {
- return this.lead.getPosition();
- };
- this.setSelectionAnchor = function(row, column) {
- this.anchor.setPosition(row, column);
-
- if (this.$isEmpty) {
- this.$isEmpty = false;
- this._emit("changeSelection");
- }
- };
- this.getSelectionAnchor = function() {
- if (this.$isEmpty)
- return this.getSelectionLead()
- else
- return this.anchor.getPosition();
- };
- this.getSelectionLead = function() {
- return this.lead.getPosition();
- };
- this.shiftSelection = function(columns) {
- if (this.$isEmpty) {
- this.moveCursorTo(this.lead.row, this.lead.column + columns);
- return;
- };
-
- var anchor = this.getSelectionAnchor();
- var lead = this.getSelectionLead();
-
- var isBackwards = this.isBackwards();
-
- if (!isBackwards || anchor.column !== 0)
- this.setSelectionAnchor(anchor.row, anchor.column + columns);
-
- if (isBackwards || lead.column !== 0) {
- this.$moveSelection(function() {
- this.moveCursorTo(lead.row, lead.column + columns);
- });
- }
- };
- this.isBackwards = function() {
- var anchor = this.anchor;
- var lead = this.lead;
- return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));
- };
- this.getRange = function() {
- var anchor = this.anchor;
- var lead = this.lead;
-
- if (this.isEmpty())
- return Range.fromPoints(lead, lead);
-
- if (this.isBackwards()) {
- return Range.fromPoints(lead, anchor);
- }
- else {
- return Range.fromPoints(anchor, lead);
- }
- };
- this.clearSelection = function() {
- if (!this.$isEmpty) {
- this.$isEmpty = true;
- this._emit("changeSelection");
- }
- };
- this.selectAll = function() {
- var lastRow = this.doc.getLength() - 1;
- this.setSelectionAnchor(0, 0);
- this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);
- };
- this.setRange =
- this.setSelectionRange = function(range, reverse) {
- if (reverse) {
- this.setSelectionAnchor(range.end.row, range.end.column);
- this.selectTo(range.start.row, range.start.column);
- } else {
- this.setSelectionAnchor(range.start.row, range.start.column);
- this.selectTo(range.end.row, range.end.column);
- }
- this.$desiredColumn = null;
- };
-
- this.$moveSelection = function(mover) {
- var lead = this.lead;
- if (this.$isEmpty)
- this.setSelectionAnchor(lead.row, lead.column);
-
- mover.call(this);
- };
- this.selectTo = function(row, column) {
- this.$moveSelection(function() {
- this.moveCursorTo(row, column);
- });
- };
- this.selectToPosition = function(pos) {
- this.$moveSelection(function() {
- this.moveCursorToPosition(pos);
- });
- };
- this.selectUp = function() {
- this.$moveSelection(this.moveCursorUp);
- };
- this.selectDown = function() {
- this.$moveSelection(this.moveCursorDown);
- };
- this.selectRight = function() {
- this.$moveSelection(this.moveCursorRight);
- };
- this.selectLeft = function() {
- this.$moveSelection(this.moveCursorLeft);
- };
- this.selectLineStart = function() {
- this.$moveSelection(this.moveCursorLineStart);
- };
- this.selectLineEnd = function() {
- this.$moveSelection(this.moveCursorLineEnd);
- };
- this.selectFileEnd = function() {
- this.$moveSelection(this.moveCursorFileEnd);
- };
- this.selectFileStart = function() {
- this.$moveSelection(this.moveCursorFileStart);
- };
- this.selectWordRight = function() {
- this.$moveSelection(this.moveCursorWordRight);
- };
- this.selectWordLeft = function() {
- this.$moveSelection(this.moveCursorWordLeft);
- };
- this.getWordRange = function(row, column) {
- if (typeof column == "undefined") {
- var cursor = row || this.lead;
- row = cursor.row;
- column = cursor.column;
- }
- return this.session.getWordRange(row, column);
- };
-
- this.selectWord = function() {
- this.setSelectionRange(this.getWordRange());
- };
- this.selectAWord = function() {
- var cursor = this.getCursor();
- var range = this.session.getAWordRange(cursor.row, cursor.column);
- this.setSelectionRange(range);
- };
-
- this.getLineRange = function(row, excludeLastChar) {
- var rowStart = typeof row == "number" ? row : this.lead.row;
- var rowEnd;
-
- var foldLine = this.session.getFoldLine(rowStart);
- if (foldLine) {
- rowStart = foldLine.start.row;
- rowEnd = foldLine.end.row;
- } else {
- rowEnd = rowStart;
- }
- if (excludeLastChar)
- return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);
- else
- return new Range(rowStart, 0, rowEnd + 1, 0);
- };
- this.selectLine = function() {
- this.setSelectionRange(this.getLineRange());
- };
- this.moveCursorUp = function() {
- this.moveCursorBy(-1, 0);
- };
- this.moveCursorDown = function() {
- this.moveCursorBy(1, 0);
- };
- this.moveCursorLeft = function() {
- var cursor = this.lead.getPosition(),
- fold;
-
- if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {
- this.moveCursorTo(fold.start.row, fold.start.column);
- } else if (cursor.column == 0) {
- // cursor is a line (start
- if (cursor.row > 0) {
- this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);
- }
- }
- else {
- var tabSize = this.session.getTabSize();
- if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(" ").length-1 == tabSize)
- this.moveCursorBy(0, -tabSize);
- else
- this.moveCursorBy(0, -1);
- }
- };
- this.moveCursorRight = function() {
- var cursor = this.lead.getPosition(),
- fold;
- if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {
- this.moveCursorTo(fold.end.row, fold.end.column);
- }
- else if (this.lead.column == this.doc.getLine(this.lead.row).length) {
- if (this.lead.row < this.doc.getLength() - 1) {
- this.moveCursorTo(this.lead.row + 1, 0);
- }
- }
- else {
- var tabSize = this.session.getTabSize();
- var cursor = this.lead;
- if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(" ").length-1 == tabSize)
- this.moveCursorBy(0, tabSize);
- else
- this.moveCursorBy(0, 1);
- }
- };
- this.moveCursorLineStart = function() {
- var row = this.lead.row;
- var column = this.lead.column;
- var screenRow = this.session.documentToScreenRow(row, column);
-
- // Determ the doc-position of the first character at the screen line.
- var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);
-
- // Determ the line
- var beforeCursor = this.session.getDisplayLine(
- row, null, firstColumnPosition.row,
- firstColumnPosition.column
- );
-
- var leadingSpace = beforeCursor.match(/^\s*/);
- if (leadingSpace[0].length == column) {
- this.moveCursorTo(
- firstColumnPosition.row, firstColumnPosition.column
- );
- }
- else {
- this.moveCursorTo(
- firstColumnPosition.row,
- firstColumnPosition.column + leadingSpace[0].length
- );
- }
- };
- this.moveCursorLineEnd = function() {
- var lead = this.lead;
- var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);
- if (this.lead.column == lineEnd.column) {
- var line = this.session.getLine(lineEnd.row);
- if (lineEnd.column == line.length) {
- var textEnd = line.search(/\s+$/);
- if (textEnd > 0)
- lineEnd.column = textEnd;
- }
- }
-
- this.moveCursorTo(lineEnd.row, lineEnd.column);
- };
- this.moveCursorFileEnd = function() {
- var row = this.doc.getLength() - 1;
- var column = this.doc.getLine(row).length;
- this.moveCursorTo(row, column);
- };
- this.moveCursorFileStart = function() {
- this.moveCursorTo(0, 0);
- };
- this.moveCursorLongWordRight = function() {
- var row = this.lead.row;
- var column = this.lead.column;
- var line = this.doc.getLine(row);
- var rightOfCursor = line.substring(column);
-
- var match;
- this.session.nonTokenRe.lastIndex = 0;
- this.session.tokenRe.lastIndex = 0;
-
- // skip folds
- var fold = this.session.getFoldAt(row, column, 1);
- if (fold) {
- this.moveCursorTo(fold.end.row, fold.end.column);
- return;
- }
-
- // first skip space
- if (match = this.session.nonTokenRe.exec(rightOfCursor)) {
- column += this.session.nonTokenRe.lastIndex;
- this.session.nonTokenRe.lastIndex = 0;
- rightOfCursor = line.substring(column);
- }
-
- // if at line end proceed with next line
- if (column >= line.length) {
- this.moveCursorTo(row, line.length);
- this.moveCursorRight();
- if (row < this.doc.getLength() - 1)
- this.moveCursorWordRight();
- return;
- }
-
- // advance to the end of the next token
- if (match = this.session.tokenRe.exec(rightOfCursor)) {
- column += this.session.tokenRe.lastIndex;
- this.session.tokenRe.lastIndex = 0;
- }
-
- this.moveCursorTo(row, column);
- };
- this.moveCursorLongWordLeft = function() {
- var row = this.lead.row;
- var column = this.lead.column;
-
- // skip folds
- var fold;
- if (fold = this.session.getFoldAt(row, column, -1)) {
- this.moveCursorTo(fold.start.row, fold.start.column);
- return;
- }
-
- var str = this.session.getFoldStringAt(row, column, -1);
- if (str == null) {
- str = this.doc.getLine(row).substring(0, column)
- }
-
- var leftOfCursor = lang.stringReverse(str);
- var match;
- this.session.nonTokenRe.lastIndex = 0;
- this.session.tokenRe.lastIndex = 0;
-
- // skip whitespace
- if (match = this.session.nonTokenRe.exec(leftOfCursor)) {
- column -= this.session.nonTokenRe.lastIndex;
- leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);
- this.session.nonTokenRe.lastIndex = 0;
- }
-
- // if at begin of the line proceed in line above
- if (column <= 0) {
- this.moveCursorTo(row, 0);
- this.moveCursorLeft();
- if (row > 0)
- this.moveCursorWordLeft();
- return;
- }
-
- // move to the begin of the word
- if (match = this.session.tokenRe.exec(leftOfCursor)) {
- column -= this.session.tokenRe.lastIndex;
- this.session.tokenRe.lastIndex = 0;
- }
-
- this.moveCursorTo(row, column);
- };
-
- this.$shortWordEndIndex = function(rightOfCursor) {
- var match, index = 0, ch;
- var whitespaceRe = /\s/;
- var tokenRe = this.session.tokenRe;
-
- tokenRe.lastIndex = 0;
- if (match = this.session.tokenRe.exec(rightOfCursor)) {
- index = this.session.tokenRe.lastIndex;
- } else {
- while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
- index ++;
-
- if (index <= 1) {
- tokenRe.lastIndex = 0;
- while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {
- tokenRe.lastIndex = 0;
- index ++;
- if (whitespaceRe.test(ch)) {
- if (index > 2) {
- index--
- break;
- } else {
- while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
- index ++;
- if (index > 2)
- break
- }
- }
- }
- }
- }
- tokenRe.lastIndex = 0;
-
- return index;
- };
-
- this.moveCursorShortWordRight = function() {
- var row = this.lead.row;
- var column = this.lead.column;
- var line = this.doc.getLine(row);
- var rightOfCursor = line.substring(column);
-
- var fold = this.session.getFoldAt(row, column, 1);
- if (fold)
- return this.moveCursorTo(fold.end.row, fold.end.column);
-
- if (column == line.length) {
- var l = this.doc.getLength();
- do {
- row++;
- rightOfCursor = this.doc.getLine(row)
- } while (row < l && /^\s*$/.test(rightOfCursor))
-
- if (!/^\s+/.test(rightOfCursor))
- rightOfCursor = ""
- column = 0;
- }
-
- var index = this.$shortWordEndIndex(rightOfCursor);
-
- this.moveCursorTo(row, column + index);
- };
-
- this.moveCursorShortWordLeft = function() {
- var row = this.lead.row;
- var column = this.lead.column;
-
- var fold;
- if (fold = this.session.getFoldAt(row, column, -1))
- return this.moveCursorTo(fold.start.row, fold.start.column);
-
- var line = this.session.getLine(row).substring(0, column);
- if (column == 0) {
- do {
- row--;
- line = this.doc.getLine(row);
- } while (row > 0 && /^\s*$/.test(line))
-
- column = line.length;
- if (!/\s+$/.test(line))
- line = ""
- }
-
- var leftOfCursor = lang.stringReverse(line);
- var index = this.$shortWordEndIndex(leftOfCursor);
-
- return this.moveCursorTo(row, column - index);
- };
-
- this.moveCursorWordRight = function() {
- if (this.session.$selectLongWords)
- this.moveCursorLongWordRight();
- else
- this.moveCursorShortWordRight();
- };
-
- this.moveCursorWordLeft = function() {
- if (this.session.$selectLongWords)
- this.moveCursorLongWordLeft();
- else
- this.moveCursorShortWordLeft();
- };
- this.moveCursorBy = function(rows, chars) {
- var screenPos = this.session.documentToScreenPosition(
- this.lead.row,
- this.lead.column
- );
-
- if (chars === 0) {
- if (this.$desiredColumn)
- screenPos.column = this.$desiredColumn;
- else
- this.$desiredColumn = screenPos.column;
- }
-
- var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column);
-
- // move the cursor and update the desired column
- this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);
- };
- this.moveCursorToPosition = function(position) {
- this.moveCursorTo(position.row, position.column);
- };
- this.moveCursorTo = function(row, column, keepDesiredColumn) {
- // Ensure the row/column is not inside of a fold.
- var fold = this.session.getFoldAt(row, column, 1);
- if (fold) {
- row = fold.start.row;
- column = fold.start.column;
- }
-
- this.$keepDesiredColumnOnChange = true;
- this.lead.setPosition(row, column);
- this.$keepDesiredColumnOnChange = false;
-
- if (!keepDesiredColumn)
- this.$desiredColumn = null;
- };
- this.moveCursorToScreen = function(row, column, keepDesiredColumn) {
- var pos = this.session.screenToDocumentPosition(row, column);
- this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);
- };
-
- // remove listeners from document
- this.detach = function() {
- this.lead.detach();
- this.anchor.detach();
- this.session = this.doc = null;
- }
-
- this.fromOrientedRange = function(range) {
- this.setSelectionRange(range, range.cursor == range.start);
- this.$desiredColumn = range.desiredColumn || this.$desiredColumn;
- }
-
- this.toOrientedRange = function(range) {
- var r = this.getRange();
- if (range) {
- range.start.column = r.start.column;
- range.start.row = r.start.row;
- range.end.column = r.end.column;
- range.end.row = r.end.row;
- } else {
- range = r;
- }
-
- range.cursor = this.isBackwards() ? range.start : range.end;
- range.desiredColumn = this.$desiredColumn;
- return range;
- }
-
-}).call(Selection.prototype);
-
-exports.Selection = Selection;
-});
-
-ace.define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-ace.define('ace/mode/text', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/behaviour', 'ace/unicode'], function(require, exports, module) {
-
-
-var Tokenizer = require("../tokenizer").Tokenizer;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var Behaviour = require("./behaviour").Behaviour;
-var unicode = require("../unicode");
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new TextHighlightRules().getRules());
- this.$behaviour = new Behaviour();
-};
-
-(function() {
-
- this.tokenRe = new RegExp("^["
- + unicode.packages.L
- + unicode.packages.Mn + unicode.packages.Mc
- + unicode.packages.Nd
- + unicode.packages.Pc + "\\$_]+", "g"
- );
-
- this.nonTokenRe = new RegExp("^(?:[^"
- + unicode.packages.L
- + unicode.packages.Mn + unicode.packages.Mc
- + unicode.packages.Nd
- + unicode.packages.Pc + "\\$_]|\s])+", "g"
- );
-
- this.getTokenizer = function() {
- return this.$tokenizer;
- };
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return "";
- };
-
- this.checkOutdent = function(state, line, input) {
- return false;
- };
-
- this.autoOutdent = function(state, doc, row) {
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
- this.createWorker = function(session) {
- return null;
- };
-
- this.createModeDelegates = function (mapping) {
- if (!this.$embeds) {
- return;
- }
- this.$modes = {};
- for (var i = 0; i < this.$embeds.length; i++) {
- if (mapping[this.$embeds[i]]) {
- this.$modes[this.$embeds[i]] = new mapping[this.$embeds[i]]();
- }
- }
-
- var delegations = ['toggleCommentLines', 'getNextLineIndent', 'checkOutdent', 'autoOutdent', 'transformAction'];
-
- for (var i = 0; i < delegations.length; i++) {
- (function(scope) {
- var functionName = delegations[i];
- var defaultHandler = scope[functionName];
- scope[delegations[i]] = function() {
- return this.$delegator(functionName, arguments, defaultHandler);
- }
- } (this));
- }
- }
-
- this.$delegator = function(method, args, defaultHandler) {
- var state = args[0];
-
- for (var i = 0; i < this.$embeds.length; i++) {
- if (!this.$modes[this.$embeds[i]]) continue;
-
- var split = state.split(this.$embeds[i]);
- if (!split[0] && split[1]) {
- args[0] = split[1];
- var mode = this.$modes[this.$embeds[i]];
- return mode[method].apply(mode, args);
- }
- }
- var ret = defaultHandler.apply(this, args);
- return defaultHandler ? ret : undefined;
- };
-
- this.transformAction = function(state, action, editor, session, param) {
- if (this.$behaviour) {
- var behaviours = this.$behaviour.getBehaviours();
- for (var key in behaviours) {
- if (behaviours[key][action]) {
- var ret = behaviours[key][action].apply(this, arguments);
- if (ret) {
- return ret;
- }
- }
- }
- }
- }
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/tokenizer', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Tokenizer
- *
- * This class takes a set of highlighting rules, and creates a tokenizer out of them. For more information, see [the wiki on extending highlighters](https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#wiki-extendingTheHighlighter).
- *
- **/
-
-/**
- * new Tokenizer(rules, flag)
- * - rules (Object): The highlighting rules
- * - flag (String): Any additional regular expression flags to pass (like "i" for case insensitive)
- *
- * Constructs a new tokenizer based on the given rules and flags.
- *
- **/
-var Tokenizer = function(rules, flag) {
- flag = flag ? "g" + flag : "g";
- this.rules = rules;
-
- this.regExps = {};
- this.matchMappings = {};
- for ( var key in this.rules) {
- var rule = this.rules[key];
- var state = rule;
- var ruleRegExps = [];
- var matchTotal = 0;
- var mapping = this.matchMappings[key] = {};
-
- for ( var i = 0; i < state.length; i++) {
-
- if (state[i].regex instanceof RegExp)
- state[i].regex = state[i].regex.toString().slice(1, -1);
-
- // Count number of matching groups. 2 extra groups from the full match
- // And the catch-all on the end (used to force a match);
- var matchcount = new RegExp("(?:(" + state[i].regex + ")|(.))").exec("a").length - 2;
-
- // Replace any backreferences and offset appropriately.
- var adjustedregex = state[i].regex.replace(/\\([0-9]+)/g, function (match, digit) {
- return "\\" + (parseInt(digit, 10) + matchTotal + 1);
- });
-
- if (matchcount > 1 && state[i].token.length !== matchcount-1)
- throw new Error("For " + state[i].regex + " the matching groups and length of the token array don't match (rule #" + i + " of state " + key + ")");
-
- mapping[matchTotal] = {
- rule: i,
- len: matchcount
- };
- matchTotal += matchcount;
-
- ruleRegExps.push(adjustedregex);
- }
-
- this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
- }
-};
-
-(function() {
-
- /**
- * Tokenizer.getLineTokens() -> Object
- *
- * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
- **/
- this.getLineTokens = function(line, startState) {
- var currentState = startState || "start";
- var state = this.rules[currentState];
- var mapping = this.matchMappings[currentState];
- var re = this.regExps[currentState];
- re.lastIndex = 0;
-
- var match, tokens = [];
-
- var lastIndex = 0;
-
- var token = {
- type: null,
- value: ""
- };
-
- while (match = re.exec(line)) {
- var type = "text";
- var rule = null;
- var value = [match[0]];
-
- for (var i = 0; i < match.length-2; i++) {
- if (match[i + 1] === undefined)
- continue;
-
- rule = state[mapping[i].rule];
-
- if (mapping[i].len > 1)
- value = match.slice(i+2, i+1+mapping[i].len);
-
- // compute token type
- if (typeof rule.token == "function")
- type = rule.token.apply(this, value);
- else
- type = rule.token;
-
- if (rule.next) {
- currentState = rule.next;
- state = this.rules[currentState];
- mapping = this.matchMappings[currentState];
- lastIndex = re.lastIndex;
-
- re = this.regExps[currentState];
-
- if (re === undefined) {
- throw new Error("You indicated a state of " + rule.next + " to go to, but it doesn't exist!");
- }
-
- re.lastIndex = lastIndex;
- }
- break;
- }
-
- if (value[0]) {
- if (typeof type == "string") {
- value = [value.join("")];
- type = [type];
- }
- for (var i = 0; i < value.length; i++) {
- if (!value[i])
- continue;
-
- if ((!rule || rule.merge || type[i] === "text") && token.type === type[i]) {
- token.value += value[i];
- } else {
- if (token.type)
- tokens.push(token);
-
- token = {
- type: type[i],
- value: value[i]
- };
- }
- }
- }
-
- if (lastIndex == line.length)
- break;
-
- lastIndex = re.lastIndex;
- }
-
- if (token.type)
- tokens.push(token);
-
- return {
- tokens : tokens,
- state : currentState
- };
- };
-
-}).call(Tokenizer.prototype);
-
-exports.Tokenizer = Tokenizer;
-});
-
-ace.define('ace/mode/text_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {
-
-
-var lang = require("../lib/lang");
-
-var TextHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [{
- token : "empty_line",
- regex : '^$'
- }, {
- token : "text",
- regex : ".+"
- }]
- };
-};
-
-(function() {
-
- this.addRules = function(rules, prefix) {
- for (var key in rules) {
- var state = rules[key];
- for (var i=0; i<state.length; i++) {
- var rule = state[i];
- if (rule.next) {
- rule.next = prefix + rule.next;
- }
- }
- this.$rules[prefix + key] = state;
- }
- };
-
- this.getRules = function() {
- return this.$rules;
- };
-
- this.embedRules = function (HighlightRules, prefix, escapeRules, states) {
- var embedRules = new HighlightRules().getRules();
- if (states) {
- for (var i = 0; i < states.length; i++) {
- states[i] = prefix + states[i];
- }
- } else {
- states = [];
- for (var key in embedRules) {
- states.push(prefix + key);
- }
- }
- this.addRules(embedRules, prefix);
-
- for (var i = 0; i < states.length; i++) {
- Array.prototype.unshift.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));
- }
-
- if (!this.$embeds) {
- this.$embeds = [];
- }
- this.$embeds.push(prefix);
- }
-
- this.getEmbeds = function() {
- return this.$embeds;
- }
-
- this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
- var keywords = Object.create(null);
- Object.keys(map).forEach(function(className) {
- var list = map[className].split(splitChar || "|");
- for (var i = list.length; i--; )
- keywords[list[i]] = className;
- });
- map = null;
- return ignoreCase
- ? function(value) {return keywords[value.toLowerCase()] || defaultToken }
- : function(value) {return keywords[value] || defaultToken };
- }
-
-}).call(TextHighlightRules.prototype);
-
-exports.TextHighlightRules = TextHighlightRules;
-});
-
-ace.define('ace/mode/behaviour', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var Behaviour = function() {
- this.$behaviours = {};
-};
-
-(function () {
-
- this.add = function (name, action, callback) {
- switch (undefined) {
- case this.$behaviours:
- this.$behaviours = {};
- case this.$behaviours[name]:
- this.$behaviours[name] = {};
- }
- this.$behaviours[name][action] = callback;
- }
-
- this.addBehaviours = function (behaviours) {
- for (var key in behaviours) {
- for (var action in behaviours[key]) {
- this.add(key, action, behaviours[key][action]);
- }
- }
- }
-
- this.remove = function (name) {
- if (this.$behaviours && this.$behaviours[name]) {
- delete this.$behaviours[name];
- }
- }
-
- this.inherit = function (mode, filter) {
- if (typeof mode === "function") {
- var behaviours = new mode().getBehaviours(filter);
- } else {
- var behaviours = mode.getBehaviours(filter);
- }
- this.addBehaviours(behaviours);
- }
-
- this.getBehaviours = function (filter) {
- if (!filter) {
- return this.$behaviours;
- } else {
- var ret = {}
- for (var i = 0; i < filter.length; i++) {
- if (this.$behaviours[filter[i]]) {
- ret[filter[i]] = this.$behaviours[filter[i]];
- }
- }
- return ret;
- }
- }
-
-}).call(Behaviour.prototype);
-
-exports.Behaviour = Behaviour;
-});
-ace.define('ace/unicode', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/*
-XRegExp Unicode plugin pack: Categories 1.0
-(c) 2010 Steven Levithan
-MIT License
-<http://xregexp.com>
-Uses the Unicode 5.2 character database
-
-This package for the XRegExp Unicode plugin enables the following Unicode categories (aka properties):
-
-L - Letter (the top-level Letter category is included in the Unicode plugin base script)
- Ll - Lowercase letter
- Lu - Uppercase letter
- Lt - Titlecase letter
- Lm - Modifier letter
- Lo - Letter without case
-M - Mark
- Mn - Non-spacing mark
- Mc - Spacing combining mark
- Me - Enclosing mark
-N - Number
- Nd - Decimal digit
- Nl - Letter number
- No - Other number
-P - Punctuation
- Pd - Dash punctuation
- Ps - Open punctuation
- Pe - Close punctuation
- Pi - Initial punctuation
- Pf - Final punctuation
- Pc - Connector punctuation
- Po - Other punctuation
-S - Symbol
- Sm - Math symbol
- Sc - Currency symbol
- Sk - Modifier symbol
- So - Other symbol
-Z - Separator
- Zs - Space separator
- Zl - Line separator
- Zp - Paragraph separator
-C - Other
- Cc - Control
- Cf - Format
- Co - Private use
- Cs - Surrogate
- Cn - Unassigned
-
-Example usage:
-
- \p{N}
- \p{Cn}
-*/
-
-
-// will be populated by addUnicodePackage
-exports.packages = {};
-
-addUnicodePackage({
- L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",
- Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",
- Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",
- Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",
- Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",
- Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",
- M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",
- Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",
- Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",
- Me: "0488048906DE20DD-20E020E2-20E4A670-A672",
- N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",
- Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",
- Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",
- No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",
- P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",
- Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",
- Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",
- Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",
- Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",
- Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",
- Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",
- Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",
- S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",
- Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",
- Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",
- Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",
- So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",
- Z: "002000A01680180E2000-200A20282029202F205F3000",
- Zs: "002000A01680180E2000-200A202F205F3000",
- Zl: "2028",
- Zp: "2029",
- C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",
- Cc: "0000-001F007F-009F",
- Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",
- Co: "E000-F8FF",
- Cs: "D800-DFFF",
- Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"
-});
-
-function addUnicodePackage (pack) {
- var codePoint = /\w{4}/g;
- for (var name in pack)
- exports.packages[name] = pack[name].replace(codePoint, "\\u$&");
-};
-
-});
-
-ace.define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-ace.define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-ace.define('ace/background_tokenizer', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-// tokenizing lines longer than this makes editor very slow
-var MAX_LINE_LENGTH = 5000;
-
-/**
- * new BackgroundTokenizer(tokenizer, editor)
- * - tokenizer (Tokenizer): The tokenizer to use
- * - editor (Editor): The editor to associate with
- *
- * Creates a new `BackgroundTokenizer` object.
- *
- *
- **/
-
-var BackgroundTokenizer = function(tokenizer, editor) {
- this.running = false;
- this.lines = [];
- this.states = [];
- this.currentLine = 0;
- this.tokenizer = tokenizer;
-
- var self = this;
-
- this.$worker = function() {
- if (!self.running) { return; }
-
- var workerStart = new Date();
- var startLine = self.currentLine;
- var doc = self.doc;
-
- var processedLines = 0;
-
- var len = doc.getLength();
- while (self.currentLine < len) {
- self.$tokenizeRow(self.currentLine);
- while (self.lines[self.currentLine])
- self.currentLine++;
-
- // only check every 5 lines
- processedLines ++;
- if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) {
- self.fireUpdateEvent(startLine, self.currentLine-1);
- self.running = setTimeout(self.$worker, 20);
- return;
- }
- }
-
- self.running = false;
-
- self.fireUpdateEvent(startLine, len - 1);
- };
-};
-
-(function(){
-
- oop.implement(this, EventEmitter);
- this.setTokenizer = function(tokenizer) {
- this.tokenizer = tokenizer;
- this.lines = [];
- this.states = [];
-
- this.start(0);
- };
- this.setDocument = function(doc) {
- this.doc = doc;
- this.lines = [];
- this.states = [];
-
- this.stop();
- };
- /**
- * BackgroundTokenizer@update(e)
- * - e (Object): An object containing two properties, `first` and `last`, which indicate the rows of the region being updated.
- *
- * Fires whenever the background tokeniziers between a range of rows are going to be updated.
- *
- **/
- this.fireUpdateEvent = function(firstRow, lastRow) {
- var data = {
- first: firstRow,
- last: lastRow
- };
- this._emit("update", {data: data});
- };
- this.start = function(startRow) {
- this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());
-
- // remove all cached items below this line
- this.lines.splice(this.currentLine, this.lines.length);
- this.states.splice(this.currentLine, this.states.length);
-
- this.stop();
- // pretty long delay to prevent the tokenizer from interfering with the user
- this.running = setTimeout(this.$worker, 700);
- };
-
- this.$updateOnChange = function(delta) {
- var range = delta.range;
- var startRow = range.start.row;
- var len = range.end.row - startRow;
-
- if (len === 0) {
- this.lines[startRow] = null;
- } else if (delta.action == "removeText" || delta.action == "removeLines") {
- this.lines.splice(startRow, len + 1, null);
- this.states.splice(startRow, len + 1, null);
- } else {
- var args = Array(len + 1);
- args.unshift(startRow, 1);
- this.lines.splice.apply(this.lines, args);
- this.states.splice.apply(this.states, args);
- }
-
- this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());
-
- this.stop();
- // pretty long delay to prevent the tokenizer from interfering with the user
- this.running = setTimeout(this.$worker, 700);
- };
- this.stop = function() {
- if (this.running)
- clearTimeout(this.running);
- this.running = false;
- };
- this.getTokens = function(row) {
- return this.lines[row] || this.$tokenizeRow(row);
- };
- this.getState = function(row) {
- if (this.currentLine == row)
- this.$tokenizeRow(row);
- return this.states[row] || "start";
- };
-
- this.$tokenizeRow = function(row) {
- var line = this.doc.getLine(row);
- var state = this.states[row - 1];
-
- if (line.length > MAX_LINE_LENGTH) {
- var overflow = {value: line.substr(MAX_LINE_LENGTH), type: "text"};
- line = line.slice(0, MAX_LINE_LENGTH);
- }
- var data = this.tokenizer.getLineTokens(line, state);
- if (overflow) {
- data.tokens.push(overflow);
- data.state = "start";
- }
-
- if (this.states[row] !== data.state) {
- this.states[row] = data.state;
- this.lines[row + 1] = null;
- if (this.currentLine > row + 1)
- this.currentLine = row + 1;
- } else if (this.currentLine == row) {
- this.currentLine = row + 1;
- }
-
- return this.lines[row] = data.tokens;
- };
-
-}).call(BackgroundTokenizer.prototype);
-
-exports.BackgroundTokenizer = BackgroundTokenizer;
-});
-
-ace.define('ace/search_highlight', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/lib/oop', 'ace/range'], function(require, exports, module) {
-
-
-var lang = require("./lib/lang");
-var oop = require("./lib/oop");
-var Range = require("./range").Range;
-
-var SearchHighlight = function(regExp, clazz, type) {
- this.setRegexp(regExp);
- this.clazz = clazz;
- this.type = type || "text";
-};
-
-(function() {
- this.setRegexp = function(regExp) {
- if (this.regExp+"" == regExp+"")
- return;
- this.regExp = regExp;
- this.cache = [];
- };
-
- this.update = function(html, markerLayer, session, config) {
- if (!this.regExp)
- return;
- var start = config.firstRow, end = config.lastRow;
-
- for (var i = start; i <= end; i++) {
- var ranges = this.cache[i];
- if (ranges == null) {
- ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);
- ranges = ranges.map(function(match) {
- return new Range(i, match.offset, i, match.offset + match.length);
- });
- this.cache[i] = ranges.length ? ranges : "";
- }
-
- for (var j = ranges.length; j --; ) {
- markerLayer.drawSingleLineMarker(
- html, ranges[j].toScreenRange(session), this.clazz, config,
- null, this.type
- );
- }
- }
- };
-
-}).call(SearchHighlight.prototype);
-
-exports.SearchHighlight = SearchHighlight;
-});
-
-ace.define('ace/edit_session/folding', ['require', 'exports', 'module' , 'ace/range', 'ace/edit_session/fold_line', 'ace/edit_session/fold', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-var FoldLine = require("./fold_line").FoldLine;
-var Fold = require("./fold").Fold;
-var TokenIterator = require("../token_iterator").TokenIterator;
-
-function Folding() {
- /*
- * Looks up a fold at a given row/column. Possible values for side:
- * -1: ignore a fold if fold.start = row/column
- * +1: ignore a fold if fold.end = row/column
- */
- this.getFoldAt = function(row, column, side) {
- var foldLine = this.getFoldLine(row);
- if (!foldLine)
- return null;
-
- var folds = foldLine.folds;
- for (var i = 0; i < folds.length; i++) {
- var fold = folds[i];
- if (fold.range.contains(row, column)) {
- if (side == 1 && fold.range.isEnd(row, column)) {
- continue;
- } else if (side == -1 && fold.range.isStart(row, column)) {
- continue;
- }
- return fold;
- }
- }
- };
- this.getFoldsInRange = function(range) {
- range = range.clone();
- var start = range.start;
- var end = range.end;
- var foldLines = this.$foldData;
- var foundFolds = [];
-
- start.column += 1;
- end.column -= 1;
-
- for (var i = 0; i < foldLines.length; i++) {
- var cmp = foldLines[i].range.compareRange(range);
- if (cmp == 2) {
- // Range is before foldLine. No intersection. This means,
- // there might be other foldLines that intersect.
- continue;
- }
- else if (cmp == -2) {
- // Range is after foldLine. There can't be any other foldLines then,
- // so let's give up.
- break;
- }
-
- var folds = foldLines[i].folds;
- for (var j = 0; j < folds.length; j++) {
- var fold = folds[j];
- cmp = fold.range.compareRange(range);
- if (cmp == -2) {
- break;
- } else if (cmp == 2) {
- continue;
- } else
- // WTF-state: Can happen due to -1/+1 to start/end column.
- if (cmp == 42) {
- break;
- }
- foundFolds.push(fold);
- }
- }
- return foundFolds;
- };
- this.getAllFolds = function() {
- var folds = [];
- var foldLines = this.$foldData;
-
- function addFold(fold) {
- folds.push(fold);
- if (!fold.subFolds)
- return;
-
- for (var i = 0; i < fold.subFolds.length; i++)
- addFold(fold.subFolds[i]);
- }
-
- for (var i = 0; i < foldLines.length; i++)
- for (var j = 0; j < foldLines[i].folds.length; j++)
- addFold(foldLines[i].folds[j]);
-
- return folds;
- };
- this.getFoldStringAt = function(row, column, trim, foldLine) {
- foldLine = foldLine || this.getFoldLine(row);
- if (!foldLine)
- return null;
-
- var lastFold = {
- end: { column: 0 }
- };
- // TODO: Refactor to use getNextFoldTo function.
- var str, fold;
- for (var i = 0; i < foldLine.folds.length; i++) {
- fold = foldLine.folds[i];
- var cmp = fold.range.compareEnd(row, column);
- if (cmp == -1) {
- str = this
- .getLine(fold.start.row)
- .substring(lastFold.end.column, fold.start.column);
- break;
- }
- else if (cmp === 0) {
- return null;
- }
- lastFold = fold;
- }
- if (!str)
- str = this.getLine(fold.start.row).substring(lastFold.end.column);
-
- if (trim == -1)
- return str.substring(0, column - lastFold.end.column);
- else if (trim == 1)
- return str.substring(column - lastFold.end.column);
- else
- return str;
- };
-
- this.getFoldLine = function(docRow, startFoldLine) {
- var foldData = this.$foldData;
- var i = 0;
- if (startFoldLine)
- i = foldData.indexOf(startFoldLine);
- if (i == -1)
- i = 0;
- for (i; i < foldData.length; i++) {
- var foldLine = foldData[i];
- if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {
- return foldLine;
- } else if (foldLine.end.row > docRow) {
- return null;
- }
- }
- return null;
- };
-
- // returns the fold which starts after or contains docRow
- this.getNextFoldLine = function(docRow, startFoldLine) {
- var foldData = this.$foldData;
- var i = 0;
- if (startFoldLine)
- i = foldData.indexOf(startFoldLine);
- if (i == -1)
- i = 0;
- for (i; i < foldData.length; i++) {
- var foldLine = foldData[i];
- if (foldLine.end.row >= docRow) {
- return foldLine;
- }
- }
- return null;
- };
-
- this.getFoldedRowCount = function(first, last) {
- var foldData = this.$foldData, rowCount = last-first+1;
- for (var i = 0; i < foldData.length; i++) {
- var foldLine = foldData[i],
- end = foldLine.end.row,
- start = foldLine.start.row;
- if (end >= last) {
- if(start < last) {
- if(start >= first)
- rowCount -= last-start;
- else
- rowCount = 0;//in one fold
- }
- break;
- } else if(end >= first){
- if (start >= first) //fold inside range
- rowCount -= end-start;
- else
- rowCount -= end-first+1;
- }
- }
- return rowCount;
- };
-
- this.$addFoldLine = function(foldLine) {
- this.$foldData.push(foldLine);
- this.$foldData.sort(function(a, b) {
- return a.start.row - b.start.row;
- });
- return foldLine;
- };
- this.addFold = function(placeholder, range) {
- var foldData = this.$foldData;
- var added = false;
- var fold;
-
- if (placeholder instanceof Fold)
- fold = placeholder;
- else
- fold = new Fold(range, placeholder);
-
- this.$clipRangeToDocument(fold.range);
-
- var startRow = fold.start.row;
- var startColumn = fold.start.column;
- var endRow = fold.end.row;
- var endColumn = fold.end.column;
-
- // --- Some checking ---
- if (fold.placeholder.length < 2)
- throw "Placeholder has to be at least 2 characters";
-
- if (startRow == endRow && endColumn - startColumn < 2)
- throw "The range has to be at least 2 characters width";
-
- var startFold = this.getFoldAt(startRow, startColumn, 1);
- var endFold = this.getFoldAt(endRow, endColumn, -1);
- if (startFold && endFold == startFold)
- return startFold.addSubFold(fold);
-
- if (
- (startFold && !startFold.range.isStart(startRow, startColumn))
- || (endFold && !endFold.range.isEnd(endRow, endColumn))
- ) {
- throw "A fold can't intersect already existing fold" + fold.range + startFold.range;
- }
-
- // Check if there are folds in the range we create the new fold for.
- var folds = this.getFoldsInRange(fold.range);
- if (folds.length > 0) {
- // Remove the folds from fold data.
- this.removeFolds(folds);
- // Add the removed folds as subfolds on the new fold.
- fold.subFolds = folds;
- }
-
- for (var i = 0; i < foldData.length; i++) {
- var foldLine = foldData[i];
- if (endRow == foldLine.start.row) {
- foldLine.addFold(fold);
- added = true;
- break;
- }
- else if (startRow == foldLine.end.row) {
- foldLine.addFold(fold);
- added = true;
- if (!fold.sameRow) {
- // Check if we might have to merge two FoldLines.
- var foldLineNext = foldData[i + 1];
- if (foldLineNext && foldLineNext.start.row == endRow) {
- // We need to merge!
- foldLine.merge(foldLineNext);
- break;
- }
- }
- break;
- }
- else if (endRow <= foldLine.start.row) {
- break;
- }
- }
-
- if (!added)
- foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));
-
- if (this.$useWrapMode)
- this.$updateWrapData(foldLine.start.row, foldLine.start.row);
- else
- this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);
-
- // Notify that fold data has changed.
- this.$modified = true;
- this._emit("changeFold", { data: fold });
-
- return fold;
- };
-
- this.addFolds = function(folds) {
- folds.forEach(function(fold) {
- this.addFold(fold);
- }, this);
- };
-
- this.removeFold = function(fold) {
- var foldLine = fold.foldLine;
- var startRow = foldLine.start.row;
- var endRow = foldLine.end.row;
-
- var foldLines = this.$foldData;
- var folds = foldLine.folds;
- // Simple case where there is only one fold in the FoldLine such that
- // the entire fold line can get removed directly.
- if (folds.length == 1) {
- foldLines.splice(foldLines.indexOf(foldLine), 1);
- } else
- // If the fold is the last fold of the foldLine, just remove it.
- if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {
- folds.pop();
- foldLine.end.row = folds[folds.length - 1].end.row;
- foldLine.end.column = folds[folds.length - 1].end.column;
- } else
- // If the fold is the first fold of the foldLine, just remove it.
- if (foldLine.range.isStart(fold.start.row, fold.start.column)) {
- folds.shift();
- foldLine.start.row = folds[0].start.row;
- foldLine.start.column = folds[0].start.column;
- } else
- // We know there are more then 2 folds and the fold is not at the edge.
- // This means, the fold is somewhere in between.
- //
- // If the fold is in one row, we just can remove it.
- if (fold.sameRow) {
- folds.splice(folds.indexOf(fold), 1);
- } else
- // The fold goes over more then one row. This means remvoing this fold
- // will cause the fold line to get splitted up. newFoldLine is the second part
- {
- var newFoldLine = foldLine.split(fold.start.row, fold.start.column);
- folds = newFoldLine.folds;
- folds.shift();
- newFoldLine.start.row = folds[0].start.row;
- newFoldLine.start.column = folds[0].start.column;
- }
-
- if (this.$useWrapMode)
- this.$updateWrapData(startRow, endRow);
- else
- this.$updateRowLengthCache(startRow, endRow);
-
- // Notify that fold data has changed.
- this.$modified = true;
- this._emit("changeFold", { data: fold });
- };
-
- this.removeFolds = function(folds) {
- // We need to clone the folds array passed in as it might be the folds
- // array of a fold line and as we call this.removeFold(fold), folds
- // are removed from folds and changes the current index.
- var cloneFolds = [];
- for (var i = 0; i < folds.length; i++) {
- cloneFolds.push(folds[i]);
- }
-
- cloneFolds.forEach(function(fold) {
- this.removeFold(fold);
- }, this);
- this.$modified = true;
- };
-
- this.expandFold = function(fold) {
- this.removeFold(fold);
- fold.subFolds.forEach(function(fold) {
- this.addFold(fold);
- }, this);
- fold.subFolds = [];
- };
-
- this.expandFolds = function(folds) {
- folds.forEach(function(fold) {
- this.expandFold(fold);
- }, this);
- };
-
- this.unfold = function(location, expandInner) {
- var range, folds;
- if (location == null)
- range = new Range(0, 0, this.getLength(), 0);
- else if (typeof location == "number")
- range = new Range(location, 0, location, this.getLine(location).length);
- else if ("row" in location)
- range = Range.fromPoints(location, location);
- else
- range = location;
-
- folds = this.getFoldsInRange(range);
- if (expandInner) {
- this.removeFolds(folds);
- } else {
- // TODO: might need to remove and add folds in one go instead of using
- // expandFolds several times.
- while (folds.length) {
- this.expandFolds(folds);
- folds = this.getFoldsInRange(range);
- }
- }
- };
- this.isRowFolded = function(docRow, startFoldRow) {
- return !!this.getFoldLine(docRow, startFoldRow);
- };
-
- this.getRowFoldEnd = function(docRow, startFoldRow) {
- var foldLine = this.getFoldLine(docRow, startFoldRow);
- return foldLine ? foldLine.end.row : docRow;
- };
-
- this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {
- if (startRow == null) {
- startRow = foldLine.start.row;
- startColumn = 0;
- }
-
- if (endRow == null) {
- endRow = foldLine.end.row;
- endColumn = this.getLine(endRow).length;
- }
-
- // Build the textline using the FoldLine walker.
- var doc = this.doc;
- var textLine = "";
-
- foldLine.walk(function(placeholder, row, column, lastColumn) {
- if (row < startRow) {
- return;
- } else if (row == startRow) {
- if (column < startColumn) {
- return;
- }
- lastColumn = Math.max(startColumn, lastColumn);
- }
- if (placeholder) {
- textLine += placeholder;
- } else {
- textLine += doc.getLine(row).substring(lastColumn, column);
- }
- }.bind(this), endRow, endColumn);
- return textLine;
- };
-
- this.getDisplayLine = function(row, endColumn, startRow, startColumn) {
- var foldLine = this.getFoldLine(row);
-
- if (!foldLine) {
- var line;
- line = this.doc.getLine(row);
- return line.substring(startColumn || 0, endColumn || line.length);
- } else {
- return this.getFoldDisplayLine(
- foldLine, row, endColumn, startRow, startColumn);
- }
- };
-
- this.$cloneFoldData = function() {
- var fd = [];
- fd = this.$foldData.map(function(foldLine) {
- var folds = foldLine.folds.map(function(fold) {
- return fold.clone();
- });
- return new FoldLine(fd, folds);
- });
-
- return fd;
- };
-
- this.toggleFold = function(tryToUnfold) {
- var selection = this.selection;
- var range = selection.getRange();
- var fold;
- var bracketPos;
-
- if (range.isEmpty()) {
- var cursor = range.start;
- fold = this.getFoldAt(cursor.row, cursor.column);
-
- if (fold) {
- this.expandFold(fold);
- return;
- }
- else if (bracketPos = this.findMatchingBracket(cursor)) {
- if (range.comparePoint(bracketPos) == 1) {
- range.end = bracketPos;
- }
- else {
- range.start = bracketPos;
- range.start.column++;
- range.end.column--;
- }
- }
- else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {
- if (range.comparePoint(bracketPos) == 1)
- range.end = bracketPos;
- else
- range.start = bracketPos;
-
- range.start.column++;
- }
- else {
- range = this.getCommentFoldRange(cursor.row, cursor.column) || range;
- }
- } else {
- var folds = this.getFoldsInRange(range);
- if (tryToUnfold && folds.length) {
- this.expandFolds(folds);
- return;
- }
- else if (folds.length == 1 ) {
- fold = folds[0];
- }
- }
-
- if (!fold)
- fold = this.getFoldAt(range.start.row, range.start.column);
-
- if (fold && fold.range.toString() == range.toString()) {
- this.expandFold(fold);
- return;
- }
-
- var placeholder = "...";
- if (!range.isMultiLine()) {
- placeholder = this.getTextRange(range);
- if(placeholder.length < 4)
- return;
- placeholder = placeholder.trim().substring(0, 2) + "..";
- }
-
- this.addFold(placeholder, range);
- };
-
- this.getCommentFoldRange = function(row, column) {
- var iterator = new TokenIterator(this, row, column);
- var token = iterator.getCurrentToken();
- if (token && /^comment|string/.test(token.type)) {
- var range = new Range();
- var re = new RegExp(token.type.replace(/\..*/, "\\."));
- do {
- token = iterator.stepBackward();
- } while(token && re.test(token.type));
-
- iterator.stepForward();
- range.start.row = iterator.getCurrentTokenRow();
- range.start.column = iterator.getCurrentTokenColumn() + 2;
-
- iterator = new TokenIterator(this, row, column);
-
- do {
- token = iterator.stepForward();
- } while(token && re.test(token.type));
-
- token = iterator.stepBackward();
-
- range.end.row = iterator.getCurrentTokenRow();
- range.end.column = iterator.getCurrentTokenColumn() + token.value.length;
- return range;
- }
- };
-
- this.foldAll = function(startRow, endRow) {
- var foldWidgets = this.foldWidgets;
- endRow = endRow || this.getLength();
- for (var row = startRow || 0; row < endRow; row++) {
- if (foldWidgets[row] == null)
- foldWidgets[row] = this.getFoldWidget(row);
- if (foldWidgets[row] != "start")
- continue;
-
- var range = this.getFoldWidgetRange(row);
- // sometimes range can be incompatible with existing fold
- // wouldn't it be better for addFold to return null istead of throwing?
- if (range && range.end.row < endRow) try {
- this.addFold("...", range);
- } catch(e) {}
- }
- };
-
- this.$foldStyles = {
- "manual": 1,
- "markbegin": 1,
- "markbeginend": 1
- };
- this.$foldStyle = "markbegin";
- this.setFoldStyle = function(style) {
- if (!this.$foldStyles[style])
- throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]");
-
- if (this.$foldStyle == style)
- return;
-
- this.$foldStyle = style;
-
- if (style == "manual")
- this.unfold();
-
- // reset folding
- var mode = this.$foldMode;
- this.$setFolding(null);
- this.$setFolding(mode);
- };
-
- // structured folding
- this.$setFolding = function(foldMode) {
- if (this.$foldMode == foldMode)
- return;
-
- this.$foldMode = foldMode;
-
- this.removeListener('change', this.$updateFoldWidgets);
- this._emit("changeAnnotation");
-
- if (!foldMode || this.$foldStyle == "manual") {
- this.foldWidgets = null;
- return;
- }
-
- this.foldWidgets = [];
- this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);
- this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);
-
- this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);
- this.on('change', this.$updateFoldWidgets);
-
- };
-
- this.onFoldWidgetClick = function(row, e) {
- var type = this.getFoldWidget(row);
- var line = this.getLine(row);
- var onlySubfolds = e.shiftKey;
- var addSubfolds = onlySubfolds || e.ctrlKey || e.altKey || e.metaKey;
- var fold;
-
- if (type == "end")
- fold = this.getFoldAt(row, 0, -1);
- else
- fold = this.getFoldAt(row, line.length, 1);
-
- if (fold) {
- if (addSubfolds)
- this.removeFold(fold);
- else
- this.expandFold(fold);
- return;
- }
-
- var range = this.getFoldWidgetRange(row);
- if (range) {
- // sometimes singleline folds can be missed by the code above
- if (!range.isMultiLine()) {
- fold = this.getFoldAt(range.start.row, range.start.column, 1);
- if (fold && range.isEqual(fold.range)) {
- this.removeFold(fold);
- return;
- }
- }
-
- if (!onlySubfolds)
- this.addFold("...", range);
-
- if (addSubfolds)
- this.foldAll(range.start.row + 1, range.end.row);
- } else {
- if (addSubfolds)
- this.foldAll(row + 1, this.getLength());
- (e.target || e.srcElement).className += " invalid"
- }
- };
-
- this.updateFoldWidgets = function(e) {
- var delta = e.data;
- var range = delta.range;
- var firstRow = range.start.row;
- var len = range.end.row - firstRow;
-
- if (len === 0) {
- this.foldWidgets[firstRow] = null;
- } else if (delta.action == "removeText" || delta.action == "removeLines") {
- this.foldWidgets.splice(firstRow, len + 1, null);
- } else {
- var args = Array(len + 1);
- args.unshift(firstRow, 1);
- this.foldWidgets.splice.apply(this.foldWidgets, args);
- }
- };
-
-}
-
-exports.Folding = Folding;
-
-});
-
-ace.define('ace/edit_session/fold_line', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-function FoldLine(foldData, folds) {
- this.foldData = foldData;
- if (Array.isArray(folds)) {
- this.folds = folds;
- } else {
- folds = this.folds = [ folds ];
- }
-
- var last = folds[folds.length - 1]
- this.range = new Range(folds[0].start.row, folds[0].start.column,
- last.end.row, last.end.column);
- this.start = this.range.start;
- this.end = this.range.end;
-
- this.folds.forEach(function(fold) {
- fold.setFoldLine(this);
- }, this);
-}
-
-(function() {
- /*
- * Note: This doesn't update wrapData!
- */
- this.shiftRow = function(shift) {
- this.start.row += shift;
- this.end.row += shift;
- this.folds.forEach(function(fold) {
- fold.start.row += shift;
- fold.end.row += shift;
- });
- }
-
- this.addFold = function(fold) {
- if (fold.sameRow) {
- if (fold.start.row < this.startRow || fold.endRow > this.endRow) {
- throw "Can't add a fold to this FoldLine as it has no connection";
- }
- this.folds.push(fold);
- this.folds.sort(function(a, b) {
- return -a.range.compareEnd(b.start.row, b.start.column);
- });
- if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {
- this.end.row = fold.end.row;
- this.end.column = fold.end.column;
- } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {
- this.start.row = fold.start.row;
- this.start.column = fold.start.column;
- }
- } else if (fold.start.row == this.end.row) {
- this.folds.push(fold);
- this.end.row = fold.end.row;
- this.end.column = fold.end.column;
- } else if (fold.end.row == this.start.row) {
- this.folds.unshift(fold);
- this.start.row = fold.start.row;
- this.start.column = fold.start.column;
- } else {
- throw "Trying to add fold to FoldRow that doesn't have a matching row";
- }
- fold.foldLine = this;
- }
-
- this.containsRow = function(row) {
- return row >= this.start.row && row <= this.end.row;
- }
-
- this.walk = function(callback, endRow, endColumn) {
- var lastEnd = 0,
- folds = this.folds,
- fold,
- comp, stop, isNewRow = true;
-
- if (endRow == null) {
- endRow = this.end.row;
- endColumn = this.end.column;
- }
-
- for (var i = 0; i < folds.length; i++) {
- fold = folds[i];
-
- comp = fold.range.compareStart(endRow, endColumn);
- // This fold is after the endRow/Column.
- if (comp == -1) {
- callback(null, endRow, endColumn, lastEnd, isNewRow);
- return;
- }
-
- stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);
- stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);
-
- // If the user requested to stop the walk or endRow/endColumn is
- // inside of this fold (comp == 0), then end here.
- if (stop || comp == 0) {
- return;
- }
-
- // Note the new lastEnd might not be on the same line. However,
- // it's the callback's job to recognize this.
- isNewRow = !fold.sameRow;
- lastEnd = fold.end.column;
- }
- callback(null, endRow, endColumn, lastEnd, isNewRow);
- }
-
- this.getNextFoldTo = function(row, column) {
- var fold, cmp;
- for (var i = 0; i < this.folds.length; i++) {
- fold = this.folds[i];
- cmp = fold.range.compareEnd(row, column);
- if (cmp == -1) {
- return {
- fold: fold,
- kind: "after"
- };
- } else if (cmp == 0) {
- return {
- fold: fold,
- kind: "inside"
- }
- }
- }
- return null;
- }
-
- this.addRemoveChars = function(row, column, len) {
- var ret = this.getNextFoldTo(row, column),
- fold, folds;
- if (ret) {
- fold = ret.fold;
- if (ret.kind == "inside"
- && fold.start.column != column
- && fold.start.row != row)
- {
- //throwing here breaks whole editor
- //TODO: properly handle this
- window.console && window.console.log(row, column, fold);
- } else if (fold.start.row == row) {
- folds = this.folds;
- var i = folds.indexOf(fold);
- if (i == 0) {
- this.start.column += len;
- }
- for (i; i < folds.length; i++) {
- fold = folds[i];
- fold.start.column += len;
- if (!fold.sameRow) {
- return;
- }
- fold.end.column += len;
- }
- this.end.column += len;
- }
- }
- }
-
- this.split = function(row, column) {
- var fold = this.getNextFoldTo(row, column).fold,
- folds = this.folds;
- var foldData = this.foldData;
-
- if (!fold) {
- return null;
- }
- var i = folds.indexOf(fold);
- var foldBefore = folds[i - 1];
- this.end.row = foldBefore.end.row;
- this.end.column = foldBefore.end.column;
-
- // Remove the folds after row/column and create a new FoldLine
- // containing these removed folds.
- folds = folds.splice(i, folds.length - i);
-
- var newFoldLine = new FoldLine(foldData, folds);
- foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);
- return newFoldLine;
- }
-
- this.merge = function(foldLineNext) {
- var folds = foldLineNext.folds;
- for (var i = 0; i < folds.length; i++) {
- this.addFold(folds[i]);
- }
- // Remove the foldLineNext - no longer needed, as
- // it's merged now with foldLineNext.
- var foldData = this.foldData;
- foldData.splice(foldData.indexOf(foldLineNext), 1);
- }
-
- this.toString = function() {
- var ret = [this.range.toString() + ": [" ];
-
- this.folds.forEach(function(fold) {
- ret.push(" " + fold.toString());
- });
- ret.push("]")
- return ret.join("\n");
- }
-
- this.idxToPosition = function(idx) {
- var lastFoldEndColumn = 0;
- var fold;
-
- for (var i = 0; i < this.folds.length; i++) {
- var fold = this.folds[i];
-
- idx -= fold.start.column - lastFoldEndColumn;
- if (idx < 0) {
- return {
- row: fold.start.row,
- column: fold.start.column + idx
- };
- }
-
- idx -= fold.placeholder.length;
- if (idx < 0) {
- return fold.start;
- }
-
- lastFoldEndColumn = fold.end.column;
- }
-
- return {
- row: this.end.row,
- column: this.end.column + idx
- };
- }
-}).call(FoldLine.prototype);
-
-exports.FoldLine = FoldLine;
-});
-
-ace.define('ace/edit_session/fold', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/*
- * Simple fold-data struct.
- **/
-var Fold = exports.Fold = function(range, placeholder) {
- this.foldLine = null;
- this.placeholder = placeholder;
- this.range = range;
- this.start = range.start;
- this.end = range.end;
-
- this.sameRow = range.start.row == range.end.row;
- this.subFolds = [];
-};
-
-(function() {
-
- this.toString = function() {
- return '"' + this.placeholder + '" ' + this.range.toString();
- };
-
- this.setFoldLine = function(foldLine) {
- this.foldLine = foldLine;
- this.subFolds.forEach(function(fold) {
- fold.setFoldLine(foldLine);
- });
- };
-
- this.clone = function() {
- var range = this.range.clone();
- var fold = new Fold(range, this.placeholder);
- this.subFolds.forEach(function(subFold) {
- fold.subFolds.push(subFold.clone());
- });
- return fold;
- };
-
- this.addSubFold = function(fold) {
- if (this.range.isEqual(fold))
- return this;
-
- if (!this.range.containsRange(fold))
- throw "A fold can't intersect already existing fold" + fold.range + this.range;
-
- var row = fold.range.start.row, column = fold.range.start.column;
- for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {
- cmp = this.subFolds[i].range.compare(row, column);
- if (cmp != 1)
- break;
- }
- var afterStart = this.subFolds[i];
-
- if (cmp == 0)
- return afterStart.addSubFold(fold);
-
- // cmp == -1
- var row = fold.range.end.row, column = fold.range.end.column;
- for (var j = i, cmp = -1; j < this.subFolds.length; j++) {
- cmp = this.subFolds[j].range.compare(row, column);
- if (cmp != 1)
- break;
- }
- var afterEnd = this.subFolds[j];
-
- if (cmp == 0)
- throw "A fold can't intersect already existing fold" + fold.range + this.range;
-
- var consumedFolds = this.subFolds.splice(i, j - i, fold);
- fold.setFoldLine(this.foldLine);
-
- return fold;
- };
-
-}).call(Fold.prototype);
-
-});
-
-ace.define('ace/token_iterator', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class TokenIterator
- *
- * This class provides an essay way to treat the document as a stream of tokens, and provides methods to iterate over these tokens.
- *
- **/
-
-/**
- * new TokenIterator(session, initialRow, initialColumn)
- * - session (EditSession): The session to associate with
- * - initialRow (Number): The row to start the tokenizing at
- * - initialColumn (Number): The column to start the tokenizing at
- *
- * Creates a new token iterator object. The initial token index is set to the provided row and column coordinates.
- *
- **/
-var TokenIterator = function(session, initialRow, initialColumn) {
- this.$session = session;
- this.$row = initialRow;
- this.$rowTokens = session.getTokens(initialRow);
-
- var token = session.getTokenAt(initialRow, initialColumn);
- this.$tokenIndex = token ? token.index : -1;
-};
-
-(function() {
-
- /**
- * TokenIterator.stepBackward() -> [String]
- * + (String): If the current point is not at the top of the file, this function returns `null`. Otherwise, it returns an array of the tokenized strings.
- *
- * Tokenizes all the items from the current point to the row prior in the document.
- **/
- this.stepBackward = function() {
- this.$tokenIndex -= 1;
-
- while (this.$tokenIndex < 0) {
- this.$row -= 1;
- if (this.$row < 0) {
- this.$row = 0;
- return null;
- }
-
- this.$rowTokens = this.$session.getTokens(this.$row);
- this.$tokenIndex = this.$rowTokens.length - 1;
- }
-
- return this.$rowTokens[this.$tokenIndex];
- };
- this.stepForward = function() {
- var rowCount = this.$session.getLength();
- this.$tokenIndex += 1;
-
- while (this.$tokenIndex >= this.$rowTokens.length) {
- this.$row += 1;
- if (this.$row >= rowCount) {
- this.$row = rowCount - 1;
- return null;
- }
-
- this.$rowTokens = this.$session.getTokens(this.$row);
- this.$tokenIndex = 0;
- }
-
- return this.$rowTokens[this.$tokenIndex];
- };
- this.getCurrentToken = function () {
- return this.$rowTokens[this.$tokenIndex];
- };
- this.getCurrentTokenRow = function () {
- return this.$row;
- };
- this.getCurrentTokenColumn = function() {
- var rowTokens = this.$rowTokens;
- var tokenIndex = this.$tokenIndex;
-
- // If a column was cached by EditSession.getTokenAt, then use it
- var column = rowTokens[tokenIndex].start;
- if (column !== undefined)
- return column;
-
- column = 0;
- while (tokenIndex > 0) {
- tokenIndex -= 1;
- column += rowTokens[tokenIndex].value.length;
- }
-
- return column;
- };
-
-}).call(TokenIterator.prototype);
-
-exports.TokenIterator = TokenIterator;
-});
-
-ace.define('ace/edit_session/bracket_match', ['require', 'exports', 'module' , 'ace/token_iterator', 'ace/range'], function(require, exports, module) {
-
-
-var TokenIterator = require("../token_iterator").TokenIterator;
-var Range = require("../range").Range;
-
-
-function BracketMatch() {
-
- this.findMatchingBracket = function(position) {
- if (position.column == 0) return null;
-
- var charBeforeCursor = this.getLine(position.row).charAt(position.column-1);
- if (charBeforeCursor == "") return null;
-
- var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);
- if (!match)
- return null;
-
- if (match[1])
- return this.$findClosingBracket(match[1], position);
- else
- return this.$findOpeningBracket(match[2], position);
- };
-
- this.getBracketRange = function(pos) {
- var line = this.getLine(pos.row);
- var before = true, range;
-
- var chr = line.charAt(pos.column-1);
- var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
- if (!match) {
- chr = line.charAt(pos.column);
- pos = {row: pos.row, column: pos.column + 1};
- match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
- before = false;
- }
- if (!match)
- return null;
-
- if (match[1]) {
- var bracketPos = this.$findClosingBracket(match[1], pos);
- if (!bracketPos)
- return null;
- range = Range.fromPoints(pos, bracketPos);
- if (!before) {
- range.end.column++;
- range.start.column--;
- }
- range.cursor = range.end;
- } else {
- var bracketPos = this.$findOpeningBracket(match[2], pos);
- if (!bracketPos)
- return null;
- range = Range.fromPoints(bracketPos, pos);
- if (!before) {
- range.start.column++;
- range.end.column--;
- }
- range.cursor = range.start;
- }
-
- return range;
- };
-
- this.$brackets = {
- ")": "(",
- "(": ")",
- "]": "[",
- "[": "]",
- "{": "}",
- "}": "{"
- };
-
- this.$findOpeningBracket = function(bracket, position, typeRe) {
- var openBracket = this.$brackets[bracket];
- var depth = 1;
-
- var iterator = new TokenIterator(this, position.row, position.column);
- var token = iterator.getCurrentToken();
- if (!token)
- token = iterator.stepForward();
- if (!token)
- return;
-
- if (!typeRe){
- typeRe = new RegExp(
- "(\\.?" +
- token.type.replace(".", "\\.").replace("rparen", ".paren")
- + ")+"
- );
- }
-
- // Start searching in token, just before the character at position.column
- var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;
- var value = token.value;
-
- while (true) {
-
- while (valueIndex >= 0) {
- var chr = value.charAt(valueIndex);
- if (chr == openBracket) {
- depth -= 1;
- if (depth == 0) {
- return {row: iterator.getCurrentTokenRow(),
- column: valueIndex + iterator.getCurrentTokenColumn()};
- }
- }
- else if (chr == bracket) {
- depth += 1;
- }
- valueIndex -= 1;
- }
-
- // Scan backward through the document, looking for the next token
- // whose type matches typeRe
- do {
- token = iterator.stepBackward();
- } while (token && !typeRe.test(token.type));
-
- if (token == null)
- break;
-
- value = token.value;
- valueIndex = value.length - 1;
- }
-
- return null;
- };
-
- this.$findClosingBracket = function(bracket, position, typeRe) {
- var closingBracket = this.$brackets[bracket];
- var depth = 1;
-
- var iterator = new TokenIterator(this, position.row, position.column);
- var token = iterator.getCurrentToken();
- if (!token)
- token = iterator.stepForward();
- if (!token)
- return;
-
- if (!typeRe){
- typeRe = new RegExp(
- "(\\.?" +
- token.type.replace(".", "\\.").replace("lparen", ".paren")
- + ")+"
- );
- }
-
- // Start searching in token, after the character at position.column
- var valueIndex = position.column - iterator.getCurrentTokenColumn();
-
- while (true) {
-
- var value = token.value;
- var valueLength = value.length;
- while (valueIndex < valueLength) {
- var chr = value.charAt(valueIndex);
- if (chr == closingBracket) {
- depth -= 1;
- if (depth == 0) {
- return {row: iterator.getCurrentTokenRow(),
- column: valueIndex + iterator.getCurrentTokenColumn()};
- }
- }
- else if (chr == bracket) {
- depth += 1;
- }
- valueIndex += 1;
- }
-
- // Scan forward through the document, looking for the next token
- // whose type matches typeRe
- do {
- token = iterator.stepForward();
- } while (token && !typeRe.test(token.type));
-
- if (token == null)
- break;
-
- valueIndex = 0;
- }
-
- return null;
- };
-}
-exports.BracketMatch = BracketMatch;
-
-});
-
-ace.define('ace/search', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/lib/oop', 'ace/range'], function(require, exports, module) {
-
-
-var lang = require("./lib/lang");
-var oop = require("./lib/oop");
-var Range = require("./range").Range;
-
-/**
- * new Search()
- *
- * Creates a new `Search` object. The following search options are avaliable:
- *
- * * `needle`: The string or regular expression you're looking for
- * * `backwards`: Whether to search backwards from where cursor currently is. Defaults to `false`.
- * * `wrap`: Whether to wrap the search back to the beginning when it hits the end. Defaults to `false`.
- * * `caseSensitive`: Whether the search ought to be case-sensitive. Defaults to `false`.
- * * `wholeWord`: Whether the search matches only on whole words. Defaults to `false`.
- * * `range`: The [[Range]] to search within. Set this to `null` for the whole document
- * * `regExp`: Whether the search is a regular expression or not. Defaults to `false`.
- * * `start`: The starting [[Range]] or cursor position to begin the search
- * * `skipCurrent`: Whether or not to include the current line in the search. Default to `false`.
- *
-**/
-
-var Search = function() {
- this.$options = {};
-};
-
-(function() {
- /**
- * Search.set(options) -> Search
- * - options (Object): An object containing all the new search properties
- *
- * Sets the search options via the `options` parameter.
- *
- **/
- this.set = function(options) {
- oop.mixin(this.$options, options);
- return this;
- };
- this.getOptions = function() {
- return lang.copyObject(this.$options);
- };
-
- this.setOptions = function(options) {
- this.$options = options;
- };
- this.find = function(session) {
- var iterator = this.$matchIterator(session, this.$options);
-
- if (!iterator)
- return false;
-
- var firstRange = null;
- iterator.forEach(function(range, row, offset) {
- if (!range.start) {
- var column = range.offset + (offset || 0);
- firstRange = new Range(row, column, row, column+range.length);
- } else
- firstRange = range;
- return true;
- });
-
- return firstRange;
- };
- this.findAll = function(session) {
- var options = this.$options;
- if (!options.needle)
- return [];
- this.$assembleRegExp(options);
-
- var range = options.range;
- var lines = range
- ? session.getLines(range.start.row, range.end.row)
- : session.doc.getAllLines();
-
- var ranges = [];
- var re = options.re;
- if (options.$isMultiLine) {
- var len = re.length;
- var maxRow = lines.length - len;
- for (var row = re.offset || 0; row <= maxRow; row++) {
- for (var j = 0; j < len; j++)
- if (lines[row + j].search(re[j]) == -1)
- break;
-
- var startLine = lines[row];
- var line = lines[row + len - 1];
- var startIndex = startLine.match(re[0])[0].length;
- var endIndex = line.match(re[len - 1])[0].length;
-
- ranges.push(new Range(
- row, startLine.length - startIndex,
- row + len - 1, endIndex
- ));
- }
- } else {
- for (var i = 0; i < lines.length; i++) {
- var matches = lang.getMatchOffsets(lines[i], re);
- for (var j = 0; j < matches.length; j++) {
- var match = matches[j];
- ranges.push(new Range(i, match.offset, i, match.offset + match.length));
- }
- }
- }
-
- if (range) {
- var startColumn = range.start.column;
- var endColumn = range.start.column;
- var i = 0, j = ranges.length - 1;
- while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)
- i++;
-
- while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)
- j--;
- return ranges.slice(i, j + 1);
- }
-
- return ranges;
- };
- this.replace = function(input, replacement) {
- var options = this.$options;
-
- var re = this.$assembleRegExp(options);
- if (options.$isMultiLine)
- return replacement;
-
- if (!re)
- return;
-
- var match = re.exec(input);
- if (!match || match[0].length != input.length)
- return null;
-
- replacement = input.replace(re, replacement);
- if (options.preserveCase) {
- replacement = replacement.split("");
- for (var i = Math.min(input.length, input.length); i--; ) {
- var ch = input[i];
- if (ch && ch.toLowerCase() != ch)
- replacement[i] = replacement[i].toUpperCase();
- else
- replacement[i] = replacement[i].toLowerCase();
- }
- replacement = replacement.join("");
- }
-
- return replacement;
- };
- this.$matchIterator = function(session, options) {
- var re = this.$assembleRegExp(options);
- if (!re)
- return false;
-
- var self = this, callback, backwards = options.backwards;
-
- if (options.$isMultiLine) {
- var len = re.length;
- var matchIterator = function(line, row, offset) {
- var startIndex = line.search(re[0]);
- if (startIndex == -1)
- return;
- for (var i = 1; i < len; i++) {
- line = session.getLine(row + i);
- if (line.search(re[i]) == -1)
- return;
- }
-
- var endIndex = line.match(re[len - 1])[0].length;
-
- var range = new Range(row, startIndex, row + len - 1, endIndex);
- if (re.offset == 1) {
- range.start.row--;
- range.start.column = Number.MAX_VALUE;
- } else if (offset)
- range.start.column += offset;
-
- if (callback(range))
- return true;
- };
- } else if (backwards) {
- var matchIterator = function(line, row, startIndex) {
- var matches = lang.getMatchOffsets(line, re);
- for (var i = matches.length-1; i >= 0; i--)
- if (callback(matches[i], row, startIndex))
- return true;
- };
- } else {
- var matchIterator = function(line, row, startIndex) {
- var matches = lang.getMatchOffsets(line, re);
- for (var i = 0; i < matches.length; i++)
- if (callback(matches[i], row, startIndex))
- return true;
- };
- }
-
- return {
- forEach: function(_callback) {
- callback = _callback;
- self.$lineIterator(session, options).forEach(matchIterator);
- }
- };
- };
-
- this.$assembleRegExp = function(options) {
- if (options.needle instanceof RegExp)
- return options.re = options.needle;
-
- var needle = options.needle;
-
- if (!options.needle)
- return options.re = false;
-
- if (!options.regExp)
- needle = lang.escapeRegExp(needle);
-
- if (options.wholeWord)
- needle = "\\b" + needle + "\\b";
-
- var modifier = options.caseSensitive ? "g" : "gi";
-
- options.$isMultiLine = /[\n\r]/.test(needle);
- if (options.$isMultiLine)
- return options.re = this.$assembleMultilineRegExp(needle, modifier);
-
- try {
- var re = new RegExp(needle, modifier);
- } catch(e) {
- re = false;
- }
- return options.re = re;
- };
-
- this.$assembleMultilineRegExp = function(needle, modifier) {
- var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n");
- var re = [];
- for (var i = 0; i < parts.length; i++) try {
- re.push(new RegExp(parts[i], modifier));
- } catch(e) {
- return false;
- }
- if (parts[0] == "") {
- re.shift();
- re.offset = 1;
- } else {
- re.offset = 0;
- }
- return re;
- };
-
- this.$lineIterator = function(session, options) {
- var backwards = options.backwards == true;
- var skipCurrent = options.skipCurrent != false;
-
- var range = options.range;
- var start = options.start;
- if (!start)
- start = range ? range[backwards ? "end" : "start"] : session.selection.getRange();
-
- if (start.start)
- start = start[skipCurrent != backwards ? "end" : "start"];
-
- var firstRow = range ? range.start.row : 0;
- var lastRow = range ? range.end.row : session.getLength() - 1;
-
- var forEach = backwards ? function(callback) {
- var row = start.row;
-
- var line = session.getLine(row).substring(0, start.column);
- if (callback(line, row))
- return;
-
- for (row--; row >= firstRow; row--)
- if (callback(session.getLine(row), row))
- return;
-
- if (options.wrap == false)
- return;
-
- for (row = lastRow, firstRow = start.row; row >= firstRow; row--)
- if (callback(session.getLine(row), row))
- return;
- } : function(callback) {
- var row = start.row;
-
- var line = session.getLine(row).substr(start.column);
- if (callback(line, row, start.column))
- return;
-
- for (row = row+1; row <= lastRow; row++)
- if (callback(session.getLine(row), row))
- return;
-
- if (options.wrap == false)
- return;
-
- for (row = firstRow, lastRow = start.row; row <= lastRow; row++)
- if (callback(session.getLine(row), row))
- return;
- };
-
- return {forEach: forEach};
- };
-
-}).call(Search.prototype);
-
-exports.Search = Search;
-});
-ace.define('ace/commands/command_manager', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/keyboard/hash_handler', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HashHandler = require("../keyboard/hash_handler").HashHandler;
-var EventEmitter = require("../lib/event_emitter").EventEmitter;
-
-/**
- * new CommandManager(platform, commands)
- * - platform (String): Identifier for the platform; must be either `'mac'` or `'win'`
- * - commands (Array): A list of commands
- *
- * TODO
- *
- *
- **/
-
-var CommandManager = function(platform, commands) {
- this.platform = platform;
- this.commands = this.byName = {};
- this.commmandKeyBinding = {};
-
- this.addCommands(commands);
-
- this.setDefaultHandler("exec", function(e) {
- return e.command.exec(e.editor, e.args || {});
- });
-};
-
-oop.inherits(CommandManager, HashHandler);
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.exec = function(command, editor, args) {
- if (typeof command === 'string')
- command = this.commands[command];
-
- if (!command)
- return false;
-
- if (editor && editor.$readOnly && !command.readOnly)
- return false;
-
- var retvalue = this._emit("exec", {
- editor: editor,
- command: command,
- args: args
- });
-
- return retvalue === false ? false : true;
- };
-
- this.toggleRecording = function(editor) {
- if (this.$inReplay)
- return;
-
- editor && editor._emit("changeStatus");
- if (this.recording) {
- this.macro.pop();
- this.removeEventListener("exec", this.$addCommandToMacro);
-
- if (!this.macro.length)
- this.macro = this.oldMacro;
-
- return this.recording = false;
- }
- if (!this.$addCommandToMacro) {
- this.$addCommandToMacro = function(e) {
- this.macro.push([e.command, e.args]);
- }.bind(this);
- }
-
- this.oldMacro = this.macro;
- this.macro = [];
- this.on("exec", this.$addCommandToMacro);
- return this.recording = true;
- };
-
- this.replay = function(editor) {
- if (this.$inReplay || !this.macro)
- return;
-
- if (this.recording)
- return this.toggleRecording(editor);
-
- try {
- this.$inReplay = true;
- this.macro.forEach(function(x) {
- if (typeof x == "string")
- this.exec(x, editor);
- else
- this.exec(x[0], editor, x[1]);
- }, this);
- } finally {
- this.$inReplay = false;
- }
- };
-
- this.trimMacro = function(m) {
- return m.map(function(x){
- if (typeof x[0] != "string")
- x[0] = x[0].name;
- if (!x[1])
- x = x[0];
- return x;
- });
- };
-
-}).call(CommandManager.prototype);
-
-exports.CommandManager = CommandManager;
-
-});
-
-ace.define('ace/keyboard/hash_handler', ['require', 'exports', 'module' , 'ace/lib/keys'], function(require, exports, module) {
-
-
-var keyUtil = require("../lib/keys");
-
-function HashHandler(config, platform) {
- this.platform = platform;
- this.commands = {};
- this.commmandKeyBinding = {};
-
- this.addCommands(config);
-};
-
-(function() {
-
- this.addCommand = function(command) {
- if (this.commands[command.name])
- this.removeCommand(command);
-
- this.commands[command.name] = command;
-
- if (command.bindKey)
- this._buildKeyHash(command);
- };
-
- this.removeCommand = function(command) {
- var name = (typeof command === 'string' ? command : command.name);
- command = this.commands[name];
- delete this.commands[name];
-
- // exhaustive search is brute force but since removeCommand is
- // not a performance critical operation this should be OK
- var ckb = this.commmandKeyBinding;
- for (var hashId in ckb) {
- for (var key in ckb[hashId]) {
- if (ckb[hashId][key] == command)
- delete ckb[hashId][key];
- }
- }
- };
-
- this.bindKey = function(key, command) {
- if(!key)
- return;
- if (typeof command == "function") {
- this.addCommand({exec: command, bindKey: key, name: key});
- return;
- }
-
- var ckb = this.commmandKeyBinding;
- key.split("|").forEach(function(keyPart) {
- var binding = this.parseKeys(keyPart, command);
- var hashId = binding.hashId;
- (ckb[hashId] || (ckb[hashId] = {}))[binding.key] = command;
- }, this);
- };
-
- this.addCommands = function(commands) {
- commands && Object.keys(commands).forEach(function(name) {
- var command = commands[name];
- if (typeof command === "string")
- return this.bindKey(command, name);
-
- if (typeof command === "function")
- command = { exec: command };
-
- if (!command.name)
- command.name = name;
-
- this.addCommand(command);
- }, this);
- };
-
- this.removeCommands = function(commands) {
- Object.keys(commands).forEach(function(name) {
- this.removeCommand(commands[name]);
- }, this);
- };
-
- this.bindKeys = function(keyList) {
- Object.keys(keyList).forEach(function(key) {
- this.bindKey(key, keyList[key]);
- }, this);
- };
-
- this._buildKeyHash = function(command) {
- var binding = command.bindKey;
- if (!binding)
- return;
-
- var key = typeof binding == "string" ? binding: binding[this.platform];
- this.bindKey(key, command);
- };
-
- // accepts keys in the form ctrl+Enter or ctrl-Enter
- // keys without modifiers or shift only
- this.parseKeys = function(keys) {
- var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x});
- var key = parts.pop();
-
- var keyCode = keyUtil[key];
- if (keyUtil.FUNCTION_KEYS[keyCode])
- key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();
- else if (!parts.length)
- return {key: key, hashId: -1};
- else if (parts.length == 1 && parts[0] == "shift")
- return {key: key.toUpperCase(), hashId: -1};
-
- var hashId = 0;
- for (var i = parts.length; i--;) {
- var modifier = keyUtil.KEY_MODS[parts[i]];
- if (modifier == null)
- throw "invalid modifier " + parts[i] + " in " + keys;
- hashId |= modifier;
- }
- return {key: key, hashId: hashId};
- };
-
- this.findKeyCommand = function findKeyCommand(hashId, keyString) {
- var ckbr = this.commmandKeyBinding;
- return ckbr[hashId] && ckbr[hashId][keyString];
- };
-
- this.handleKeyboard = function(data, hashId, keyString, keyCode) {
- return {
- command: this.findKeyCommand(hashId, keyString)
- };
- };
-
-}).call(HashHandler.prototype)
-
-exports.HashHandler = HashHandler;
-});
-
-ace.define('ace/commands/default_commands', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {
-
-
-var lang = require("../lib/lang");
-
-function bindKey(win, mac) {
- return {
- win: win,
- mac: mac
- };
-}
-
-exports.commands = [{
- name: "selectall",
- bindKey: bindKey("Ctrl-A", "Command-A"),
- exec: function(editor) { editor.selectAll(); },
- readOnly: true
-}, {
- name: "centerselection",
- bindKey: bindKey(null, "Ctrl-L"),
- exec: function(editor) { editor.centerSelection(); },
- readOnly: true
-}, {
- name: "gotoline",
- bindKey: bindKey("Ctrl-L", "Command-L"),
- exec: function(editor) {
- var line = parseInt(prompt("Enter line number:"), 10);
- if (!isNaN(line)) {
- editor.gotoLine(line);
- }
- },
- readOnly: true
-}, {
- name: "fold",
- bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"),
- exec: function(editor) { editor.session.toggleFold(false); },
- readOnly: true
-}, {
- name: "unfold",
- bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"),
- exec: function(editor) { editor.session.toggleFold(true); },
- readOnly: true
-}, {
- name: "foldall",
- bindKey: bindKey("Alt-0", "Command-Option-0"),
- exec: function(editor) { editor.session.foldAll(); },
- readOnly: true
-}, {
- name: "unfoldall",
- bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"),
- exec: function(editor) { editor.session.unfold(); },
- readOnly: true
-}, {
- name: "findnext",
- bindKey: bindKey("Ctrl-K", "Command-G"),
- exec: function(editor) { editor.findNext(); },
- readOnly: true
-}, {
- name: "findprevious",
- bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"),
- exec: function(editor) { editor.findPrevious(); },
- readOnly: true
-}, {
- name: "find",
- bindKey: bindKey("Ctrl-F", "Command-F"),
- exec: function(editor) {
- var needle = prompt("Find:", editor.getCopyText());
- editor.find(needle);
- },
- readOnly: true
-}, {
- name: "overwrite",
- bindKey: "Insert",
- exec: function(editor) { editor.toggleOverwrite(); },
- readOnly: true
-}, {
- name: "selecttostart",
- bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"),
- exec: function(editor) { editor.getSelection().selectFileStart(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotostart",
- bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"),
- exec: function(editor) { editor.navigateFileStart(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectup",
- bindKey: bindKey("Shift-Up", "Shift-Up"),
- exec: function(editor) { editor.getSelection().selectUp(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "golineup",
- bindKey: bindKey("Up", "Up|Ctrl-P"),
- exec: function(editor, args) { editor.navigateUp(args.times); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selecttoend",
- bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"),
- exec: function(editor) { editor.getSelection().selectFileEnd(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotoend",
- bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"),
- exec: function(editor) { editor.navigateFileEnd(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectdown",
- bindKey: bindKey("Shift-Down", "Shift-Down"),
- exec: function(editor) { editor.getSelection().selectDown(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "golinedown",
- bindKey: bindKey("Down", "Down|Ctrl-N"),
- exec: function(editor, args) { editor.navigateDown(args.times); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectwordleft",
- bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"),
- exec: function(editor) { editor.getSelection().selectWordLeft(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotowordleft",
- bindKey: bindKey("Ctrl-Left", "Option-Left"),
- exec: function(editor) { editor.navigateWordLeft(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selecttolinestart",
- bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"),
- exec: function(editor) { editor.getSelection().selectLineStart(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotolinestart",
- bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"),
- exec: function(editor) { editor.navigateLineStart(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectleft",
- bindKey: bindKey("Shift-Left", "Shift-Left"),
- exec: function(editor) { editor.getSelection().selectLeft(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotoleft",
- bindKey: bindKey("Left", "Left|Ctrl-B"),
- exec: function(editor, args) { editor.navigateLeft(args.times); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectwordright",
- bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"),
- exec: function(editor) { editor.getSelection().selectWordRight(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotowordright",
- bindKey: bindKey("Ctrl-Right", "Option-Right"),
- exec: function(editor) { editor.navigateWordRight(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selecttolineend",
- bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"),
- exec: function(editor) { editor.getSelection().selectLineEnd(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotolineend",
- bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"),
- exec: function(editor) { editor.navigateLineEnd(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectright",
- bindKey: bindKey("Shift-Right", "Shift-Right"),
- exec: function(editor) { editor.getSelection().selectRight(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "gotoright",
- bindKey: bindKey("Right", "Right|Ctrl-F"),
- exec: function(editor, args) { editor.navigateRight(args.times); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectpagedown",
- bindKey: "Shift-PageDown",
- exec: function(editor) { editor.selectPageDown(); },
- readOnly: true
-}, {
- name: "pagedown",
- bindKey: bindKey(null, "Option-PageDown"),
- exec: function(editor) { editor.scrollPageDown(); },
- readOnly: true
-}, {
- name: "gotopagedown",
- bindKey: bindKey("PageDown", "PageDown|Ctrl-V"),
- exec: function(editor) { editor.gotoPageDown(); },
- readOnly: true
-}, {
- name: "selectpageup",
- bindKey: "Shift-PageUp",
- exec: function(editor) { editor.selectPageUp(); },
- readOnly: true
-}, {
- name: "pageup",
- bindKey: bindKey(null, "Option-PageUp"),
- exec: function(editor) { editor.scrollPageUp(); },
- readOnly: true
-}, {
- name: "gotopageup",
- bindKey: "PageUp",
- exec: function(editor) { editor.gotoPageUp(); },
- readOnly: true
-}, {
- name: "scrollup",
- bindKey: bindKey("Ctrl-Up", null),
- exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },
- readOnly: true
-}, {
- name: "scrolldown",
- bindKey: bindKey("Ctrl-Down", null),
- exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },
- readOnly: true
-}, {
- name: "selectlinestart",
- bindKey: "Shift-Home",
- exec: function(editor) { editor.getSelection().selectLineStart(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selectlineend",
- bindKey: "Shift-End",
- exec: function(editor) { editor.getSelection().selectLineEnd(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "togglerecording",
- bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"),
- exec: function(editor) { editor.commands.toggleRecording(editor); },
- readOnly: true
-}, {
- name: "replaymacro",
- bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"),
- exec: function(editor) { editor.commands.replay(editor); },
- readOnly: true
-}, {
- name: "jumptomatching",
- bindKey: bindKey("Ctrl-P", "Ctrl-Shift-P"),
- exec: function(editor) { editor.jumpToMatching(); },
- multiSelectAction: "forEach",
- readOnly: true
-}, {
- name: "selecttomatching",
- bindKey: bindKey("Ctrl-Shift-P", null),
- exec: function(editor) { editor.jumpToMatching(true); },
- readOnly: true
-},
-
-// commands disabled in readOnly mode
-{
- name: "cut",
- exec: function(editor) {
- var range = editor.getSelectionRange();
- editor._emit("cut", range);
-
- if (!editor.selection.isEmpty()) {
- editor.session.remove(range);
- editor.clearSelection();
- }
- },
- multiSelectAction: "forEach"
-}, {
- name: "removeline",
- bindKey: bindKey("Ctrl-D", "Command-D"),
- exec: function(editor) { editor.removeLines(); },
- multiSelectAction: "forEach"
-}, {
- name: "duplicateSelection",
- bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"),
- exec: function(editor) { editor.duplicateSelection(); },
- multiSelectAction: "forEach"
-}, {
- name: "togglecomment",
- bindKey: bindKey("Ctrl-/", "Command-/"),
- exec: function(editor) { editor.toggleCommentLines(); },
- multiSelectAction: "forEach"
-}, {
- name: "replace",
- bindKey: bindKey("Ctrl-R", "Command-Option-F"),
- exec: function(editor) {
- var needle = prompt("Find:", editor.getCopyText());
- if (!needle)
- return;
- var replacement = prompt("Replacement:");
- if (!replacement)
- return;
- editor.replace(replacement, {needle: needle});
- }
-}, {
- name: "replaceall",
- bindKey: bindKey("Ctrl-Shift-R", "Command-Shift-Option-F"),
- exec: function(editor) {
- var needle = prompt("Find:");
- if (!needle)
- return;
- var replacement = prompt("Replacement:");
- if (!replacement)
- return;
- editor.replaceAll(replacement, {needle: needle});
- }
-}, {
- name: "undo",
- bindKey: bindKey("Ctrl-Z", "Command-Z"),
- exec: function(editor) { editor.undo(); }
-}, {
- name: "redo",
- bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"),
- exec: function(editor) { editor.redo(); }
-}, {
- name: "copylinesup",
- bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"),
- exec: function(editor) { editor.copyLinesUp(); }
-}, {
- name: "movelinesup",
- bindKey: bindKey("Alt-Up", "Option-Up"),
- exec: function(editor) { editor.moveLinesUp(); }
-}, {
- name: "copylinesdown",
- bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"),
- exec: function(editor) { editor.copyLinesDown(); }
-}, {
- name: "movelinesdown",
- bindKey: bindKey("Alt-Down", "Option-Down"),
- exec: function(editor) { editor.moveLinesDown(); }
-}, {
- name: "del",
- bindKey: bindKey("Delete", "Delete|Ctrl-D"),
- exec: function(editor) { editor.remove("right"); },
- multiSelectAction: "forEach"
-}, {
- name: "backspace",
- bindKey: bindKey(
- "Command-Backspace|Option-Backspace|Shift-Backspace|Backspace",
- "Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"
- ),
- exec: function(editor) { editor.remove("left"); },
- multiSelectAction: "forEach"
-}, {
- name: "removetolinestart",
- bindKey: bindKey("Alt-Backspace", "Command-Backspace"),
- exec: function(editor) { editor.removeToLineStart(); },
- multiSelectAction: "forEach"
-}, {
- name: "removetolineend",
- bindKey: bindKey("Alt-Delete", "Ctrl-K"),
- exec: function(editor) { editor.removeToLineEnd(); },
- multiSelectAction: "forEach"
-}, {
- name: "removewordleft",
- bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"),
- exec: function(editor) { editor.removeWordLeft(); },
- multiSelectAction: "forEach"
-}, {
- name: "removewordright",
- bindKey: bindKey("Ctrl-Delete", "Alt-Delete"),
- exec: function(editor) { editor.removeWordRight(); },
- multiSelectAction: "forEach"
-}, {
- name: "outdent",
- bindKey: bindKey("Shift-Tab", "Shift-Tab"),
- exec: function(editor) { editor.blockOutdent(); },
- multiSelectAction: "forEach"
-}, {
- name: "indent",
- bindKey: bindKey("Tab", "Tab"),
- exec: function(editor) { editor.indent(); },
- multiSelectAction: "forEach"
-}, {
- name: "insertstring",
- exec: function(editor, str) { editor.insert(str); },
- multiSelectAction: "forEach"
-}, {
- name: "inserttext",
- exec: function(editor, args) {
- editor.insert(lang.stringRepeat(args.text || "", args.times || 1));
- },
- multiSelectAction: "forEach"
-}, {
- name: "splitline",
- bindKey: bindKey(null, "Ctrl-O"),
- exec: function(editor) { editor.splitLine(); },
- multiSelectAction: "forEach"
-}, {
- name: "transposeletters",
- bindKey: bindKey("Ctrl-T", "Ctrl-T"),
- exec: function(editor) { editor.transposeLetters(); },
- multiSelectAction: function(editor) {editor.transposeSelections(1); }
-}, {
- name: "touppercase",
- bindKey: bindKey("Ctrl-U", "Ctrl-U"),
- exec: function(editor) { editor.toUpperCase(); },
- multiSelectAction: "forEach"
-}, {
- name: "tolowercase",
- bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"),
- exec: function(editor) { editor.toLowerCase(); },
- multiSelectAction: "forEach"
-}];
-
-});
-
-ace.define('ace/undomanager', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class UndoManager
- *
- * This object maintains the undo stack for an [[EditSession `EditSession`]].
- *
- **/
-
-/**
- * new UndoManager()
- *
- * Resets the current undo state and creates a new `UndoManager`.
- **/
-var UndoManager = function() {
- this.reset();
-};
-
-(function() {
-
- /**
- * UndoManager.execute(options) -> Void
- * - options (Object): Contains additional properties
- *
- * Provides a means for implementing your own undo manager. `options` has one property, `args`, an [[Array `Array`]], with two elements:
- *
- * * `args[0]` is an array of deltas
- * * `args[1]` is the document to associate with
- *
- **/
- this.execute = function(options) {
- var deltas = options.args[0];
- this.$doc = options.args[1];
- this.$undoStack.push(deltas);
- this.$redoStack = [];
- };
- this.undo = function(dontSelect) {
- var deltas = this.$undoStack.pop();
- var undoSelectionRange = null;
- if (deltas) {
- undoSelectionRange =
- this.$doc.undoChanges(deltas, dontSelect);
- this.$redoStack.push(deltas);
- }
- return undoSelectionRange;
- };
- this.redo = function(dontSelect) {
- var deltas = this.$redoStack.pop();
- var redoSelectionRange = null;
- if (deltas) {
- redoSelectionRange =
- this.$doc.redoChanges(deltas, dontSelect);
- this.$undoStack.push(deltas);
- }
- return redoSelectionRange;
- };
- this.reset = function() {
- this.$undoStack = [];
- this.$redoStack = [];
- };
- this.hasUndo = function() {
- return this.$undoStack.length > 0;
- };
- this.hasRedo = function() {
- return this.$redoStack.length > 0;
- };
-
-}).call(UndoManager.prototype);
-
-exports.UndoManager = UndoManager;
-});
-
-ace.define('ace/virtual_renderer', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/event', 'ace/lib/useragent', 'ace/config', 'ace/lib/net', 'ace/layer/gutter', 'ace/layer/marker', 'ace/layer/text', 'ace/layer/cursor', 'ace/scrollbar', 'ace/renderloop', 'ace/lib/event_emitter', 'text!ace/css/editor.css'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var dom = require("./lib/dom");
-var event = require("./lib/event");
-var useragent = require("./lib/useragent");
-var config = require("./config");
-var net = require("./lib/net");
-var GutterLayer = require("./layer/gutter").Gutter;
-var MarkerLayer = require("./layer/marker").Marker;
-var TextLayer = require("./layer/text").Text;
-var CursorLayer = require("./layer/cursor").Cursor;
-var ScrollBar = require("./scrollbar").ScrollBar;
-var RenderLoop = require("./renderloop").RenderLoop;
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var editorCss = require("text!./css/editor.css");
-
-dom.importCssString(editorCss, "ace_editor");
-
-/**
- * new VirtualRenderer(container, theme)
- * - container (DOMElement): The root element of the editor
- * - theme (String): The starting theme
- *
- * Constructs a new `VirtualRenderer` within the `container` specified, applying the given `theme`.
- *
- **/
-
-var VirtualRenderer = function(container, theme) {
- var _self = this;
-
- this.container = container;
-
- // TODO: this breaks rendering in Cloud9 with multiple ace instances
-// // Imports CSS once per DOM document ('ace_editor' serves as an identifier).
-// dom.importCssString(editorCss, "ace_editor", container.ownerDocument);
-
- // in IE <= 9 the native cursor always shines through
- this.$keepTextAreaAtCursor = !useragent.isIE;
-
- dom.addCssClass(container, "ace_editor");
-
- this.setTheme(theme);
-
- this.$gutter = dom.createElement("div");
- this.$gutter.className = "ace_gutter";
- this.container.appendChild(this.$gutter);
-
- this.scroller = dom.createElement("div");
- this.scroller.className = "ace_scroller";
- this.container.appendChild(this.scroller);
-
- this.content = dom.createElement("div");
- this.content.className = "ace_content";
- this.scroller.appendChild(this.content);
-
- this.setHighlightGutterLine(true);
- this.$gutterLayer = new GutterLayer(this.$gutter);
- this.$gutterLayer.on("changeGutterWidth", this.onResize.bind(this, true));
-
- this.$markerBack = new MarkerLayer(this.content);
-
- var textLayer = this.$textLayer = new TextLayer(this.content);
- this.canvas = textLayer.element;
-
- this.$markerFront = new MarkerLayer(this.content);
-
- this.characterWidth = textLayer.getCharacterWidth();
- this.lineHeight = textLayer.getLineHeight();
-
- this.$cursorLayer = new CursorLayer(this.content);
- this.$cursorPadding = 8;
-
- // Indicates whether the horizontal scrollbar is visible
- this.$horizScroll = false;
- this.$horizScrollAlwaysVisible = false;
-
- this.$animatedScroll = false;
-
- this.scrollBar = new ScrollBar(container);
- this.scrollBar.addEventListener("scroll", function(e) {
- if (!_self.$inScrollAnimation)
- _self.session.setScrollTop(e.data);
- });
-
- this.scrollTop = 0;
- this.scrollLeft = 0;
-
- event.addListener(this.scroller, "scroll", function() {
- var scrollLeft = _self.scroller.scrollLeft;
- _self.scrollLeft = scrollLeft;
- _self.session.setScrollLeft(scrollLeft);
- });
-
- this.cursorPos = {
- row : 0,
- column : 0
- };
-
- this.$textLayer.addEventListener("changeCharacterSize", function() {
- _self.characterWidth = textLayer.getCharacterWidth();
- _self.lineHeight = textLayer.getLineHeight();
- _self.$updatePrintMargin();
- _self.onResize(true);
-
- _self.$loop.schedule(_self.CHANGE_FULL);
- });
-
- this.$size = {
- width: 0,
- height: 0,
- scrollerHeight: 0,
- scrollerWidth: 0
- };
-
- this.layerConfig = {
- width : 1,
- padding : 0,
- firstRow : 0,
- firstRowScreen: 0,
- lastRow : 0,
- lineHeight : 1,
- characterWidth : 1,
- minHeight : 1,
- maxHeight : 1,
- offset : 0,
- height : 1
- };
-
- this.$loop = new RenderLoop(
- this.$renderChanges.bind(this),
- this.container.ownerDocument.defaultView
- );
- this.$loop.schedule(this.CHANGE_FULL);
-
- this.setPadding(4);
- this.$updatePrintMargin();
-};
-
-(function() {
- this.showGutter = true;
-
- this.CHANGE_CURSOR = 1;
- this.CHANGE_MARKER = 2;
- this.CHANGE_GUTTER = 4;
- this.CHANGE_SCROLL = 8;
- this.CHANGE_LINES = 16;
- this.CHANGE_TEXT = 32;
- this.CHANGE_SIZE = 64;
- this.CHANGE_MARKER_BACK = 128;
- this.CHANGE_MARKER_FRONT = 256;
- this.CHANGE_FULL = 512;
- this.CHANGE_H_SCROLL = 1024;
-
- oop.implement(this, EventEmitter);
- this.setSession = function(session) {
- this.session = session;
-
- this.scroller.className = "ace_scroller";
-
- this.$cursorLayer.setSession(session);
- this.$markerBack.setSession(session);
- this.$markerFront.setSession(session);
- this.$gutterLayer.setSession(session);
- this.$textLayer.setSession(session);
- this.$loop.schedule(this.CHANGE_FULL);
-
- };
- this.updateLines = function(firstRow, lastRow) {
- if (lastRow === undefined)
- lastRow = Infinity;
-
- if (!this.$changedLines) {
- this.$changedLines = {
- firstRow: firstRow,
- lastRow: lastRow
- };
- }
- else {
- if (this.$changedLines.firstRow > firstRow)
- this.$changedLines.firstRow = firstRow;
-
- if (this.$changedLines.lastRow < lastRow)
- this.$changedLines.lastRow = lastRow;
- }
-
- this.$loop.schedule(this.CHANGE_LINES);
- };
-
- this.onChangeTabSize = function() {
- this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);
- this.$textLayer.onChangeTabSize();
- };
- this.updateText = function() {
- this.$loop.schedule(this.CHANGE_TEXT);
- };
- this.updateFull = function(force) {
- if (force){
- this.$renderChanges(this.CHANGE_FULL, true);
- }
- else {
- this.$loop.schedule(this.CHANGE_FULL);
- }
- };
- this.updateFontSize = function() {
- this.$textLayer.checkForSizeChanges();
- };
- this.onResize = function(force, gutterWidth, width, height) {
- var changes = this.CHANGE_SIZE;
- var size = this.$size;
-
- if (this.resizing > 2)
- return;
- else if (this.resizing > 1)
- this.resizing++;
- else
- this.resizing = force ? 1 : 0;
-
- if (!height)
- height = dom.getInnerHeight(this.container);
- if (force || size.height != height) {
- size.height = height;
-
- this.scroller.style.height = height + "px";
- size.scrollerHeight = this.scroller.clientHeight;
- this.scrollBar.setHeight(size.scrollerHeight);
-
- if (this.session) {
- this.session.setScrollTop(this.getScrollTop());
- changes = changes | this.CHANGE_FULL;
- }
- }
-
- if (!width)
- width = dom.getInnerWidth(this.container);
- if (force || this.resizing > 1 || size.width != width) {
- size.width = width;
-
- var gutterWidth = this.showGutter ? this.$gutter.offsetWidth : 0;
- this.scroller.style.left = gutterWidth + "px";
- size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBar.getWidth());
- this.scroller.style.right = this.scrollBar.getWidth() + "px";
-
- if (this.session.getUseWrapMode() && this.adjustWrapLimit() || force)
- changes = changes | this.CHANGE_FULL;
- }
-
- if (force)
- this.$renderChanges(changes, true);
- else
- this.$loop.schedule(changes);
-
- if (force)
- delete this.resizing;
- };
- this.adjustWrapLimit = function() {
- var availableWidth = this.$size.scrollerWidth - this.$padding * 2;
- var limit = Math.floor(availableWidth / this.characterWidth);
- return this.session.adjustWrapLimit(limit);
- };
- this.setAnimatedScroll = function(shouldAnimate){
- this.$animatedScroll = shouldAnimate;
- };
- this.getAnimatedScroll = function() {
- return this.$animatedScroll;
- };
- this.setShowInvisibles = function(showInvisibles) {
- if (this.$textLayer.setShowInvisibles(showInvisibles))
- this.$loop.schedule(this.CHANGE_TEXT);
- };
- this.getShowInvisibles = function() {
- return this.$textLayer.showInvisibles;
- };
-
- this.getDisplayIndentGuides = function() {
- return this.$textLayer.displayIndentGuides;
- };
-
- this.setDisplayIndentGuides = function(display) {
- if (this.$textLayer.setDisplayIndentGuides(display))
- this.$loop.schedule(this.CHANGE_TEXT);
- };
-
- this.$showPrintMargin = true;
- this.setShowPrintMargin = function(showPrintMargin) {
- this.$showPrintMargin = showPrintMargin;
- this.$updatePrintMargin();
- };
- this.getShowPrintMargin = function() {
- return this.$showPrintMargin;
- };
-
- this.$printMarginColumn = 80;
- this.setPrintMarginColumn = function(showPrintMargin) {
- this.$printMarginColumn = showPrintMargin;
- this.$updatePrintMargin();
- };
- this.getPrintMarginColumn = function() {
- return this.$printMarginColumn;
- };
- this.getShowGutter = function(){
- return this.showGutter;
- };
- this.setShowGutter = function(show){
- if(this.showGutter === show)
- return;
- this.$gutter.style.display = show ? "block" : "none";
- this.showGutter = show;
- this.onResize(true);
- };
-
- this.getFadeFoldWidgets = function(){
- return dom.hasCssClass(this.$gutter, "ace_fade-fold-widgets");
- };
-
- this.setFadeFoldWidgets = function(show) {
- if (show)
- dom.addCssClass(this.$gutter, "ace_fade-fold-widgets");
- else
- dom.removeCssClass(this.$gutter, "ace_fade-fold-widgets");
- };
-
- this.$highlightGutterLine = false;
- this.setHighlightGutterLine = function(shouldHighlight) {
- if (this.$highlightGutterLine == shouldHighlight)
- return;
- this.$highlightGutterLine = shouldHighlight;
-
- if (!this.$gutterLineHighlight) {
- this.$gutterLineHighlight = dom.createElement("div");
- this.$gutterLineHighlight.className = "ace_gutter_active_line";
- this.$gutter.appendChild(this.$gutterLineHighlight);
- return;
- }
-
- this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none";
- // if cursorlayer have never been updated there's nothing on screen to update
- if (this.$cursorLayer.$pixelPos)
- this.$updateGutterLineHighlight();
- };
-
- this.getHighlightGutterLine = function() {
- return this.$highlightGutterLine;
- };
-
- this.$updateGutterLineHighlight = function() {
- this.$gutterLineHighlight.style.top = this.$cursorLayer.$pixelPos.top - this.layerConfig.offset + "px";
- this.$gutterLineHighlight.style.height = this.layerConfig.lineHeight + "px";
- };
-
- this.$updatePrintMargin = function() {
- var containerEl;
-
- if (!this.$showPrintMargin && !this.$printMarginEl)
- return;
-
- if (!this.$printMarginEl) {
- containerEl = dom.createElement("div");
- containerEl.className = "ace_print_margin_layer";
- this.$printMarginEl = dom.createElement("div");
- this.$printMarginEl.className = "ace_print_margin";
- containerEl.appendChild(this.$printMarginEl);
- this.content.insertBefore(containerEl, this.$textLayer.element);
- }
-
- var style = this.$printMarginEl.style;
- style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + "px";
- style.visibility = this.$showPrintMargin ? "visible" : "hidden";
- };
- this.getContainerElement = function() {
- return this.container;
- };
- this.getMouseEventTarget = function() {
- return this.content;
- };
- this.getTextAreaContainer = function() {
- return this.container;
- };
-
- // move text input over the cursor
- // this is required for iOS and IME
- this.$moveTextAreaToCursor = function() {
- if (!this.$keepTextAreaAtCursor)
- return;
-
- var posTop = this.$cursorLayer.$pixelPos.top;
- var posLeft = this.$cursorLayer.$pixelPos.left;
- posTop -= this.layerConfig.offset;
-
- if (posTop < 0 || posTop > this.layerConfig.height - this.lineHeight)
- return;
-
- var w = this.characterWidth;
- if (this.$composition)
- w += this.textarea.scrollWidth;
- posLeft -= this.scrollLeft;
- if (posLeft > this.$size.scrollerWidth - w)
- posLeft = this.$size.scrollerWidth - w;
-
- if (this.showGutter)
- posLeft += this.$gutterLayer.gutterWidth;
-
- this.textarea.style.height = this.lineHeight + "px";
- this.textarea.style.width = w + "px";
- this.textarea.style.left = posLeft + "px";
- this.textarea.style.top = posTop - 1 + "px";
- };
- this.getFirstVisibleRow = function() {
- return this.layerConfig.firstRow;
- };
- this.getFirstFullyVisibleRow = function() {
- return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);
- };
- this.getLastFullyVisibleRow = function() {
- var flint = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight);
- return this.layerConfig.firstRow - 1 + flint;
- };
- this.getLastVisibleRow = function() {
- return this.layerConfig.lastRow;
- };
-
- this.$padding = null;
- this.setPadding = function(padding) {
- this.$padding = padding;
- this.$textLayer.setPadding(padding);
- this.$cursorLayer.setPadding(padding);
- this.$markerFront.setPadding(padding);
- this.$markerBack.setPadding(padding);
- this.$loop.schedule(this.CHANGE_FULL);
- this.$updatePrintMargin();
- };
- this.getHScrollBarAlwaysVisible = function() {
- return this.$horizScrollAlwaysVisible;
- };
- this.setHScrollBarAlwaysVisible = function(alwaysVisible) {
- if (this.$horizScrollAlwaysVisible != alwaysVisible) {
- this.$horizScrollAlwaysVisible = alwaysVisible;
- if (!this.$horizScrollAlwaysVisible || !this.$horizScroll)
- this.$loop.schedule(this.CHANGE_SCROLL);
- }
- };
-
- this.$updateScrollBar = function() {
- this.scrollBar.setInnerHeight(this.layerConfig.maxHeight);
- this.scrollBar.setScrollTop(this.scrollTop);
- };
-
- this.$renderChanges = function(changes, force) {
- if (!force && (!changes || !this.session || !this.container.offsetWidth))
- return;
-
- // text, scrolling and resize changes can cause the view port size to change
- if (changes & this.CHANGE_FULL ||
- changes & this.CHANGE_SIZE ||
- changes & this.CHANGE_TEXT ||
- changes & this.CHANGE_LINES ||
- changes & this.CHANGE_SCROLL
- )
- this.$computeLayerConfig();
-
- // horizontal scrolling
- if (changes & this.CHANGE_H_SCROLL) {
- this.scroller.scrollLeft = this.scrollLeft;
-
- // read the value after writing it since the value might get clipped
- var scrollLeft = this.scroller.scrollLeft;
- this.scrollLeft = scrollLeft;
- this.session.setScrollLeft(scrollLeft);
-
- this.scroller.className = this.scrollLeft == 0 ? "ace_scroller" : "ace_scroller horscroll";
- }
-
- // full
- if (changes & this.CHANGE_FULL) {
- this.$textLayer.checkForSizeChanges();
- // update scrollbar first to not lose scroll position when gutter calls resize
- this.$updateScrollBar();
- this.$textLayer.update(this.layerConfig);
- if (this.showGutter)
- this.$gutterLayer.update(this.layerConfig);
- this.$markerBack.update(this.layerConfig);
- this.$markerFront.update(this.layerConfig);
- this.$cursorLayer.update(this.layerConfig);
- this.$moveTextAreaToCursor();
- this.$highlightGutterLine && this.$updateGutterLineHighlight();
- return;
- }
-
- // scrolling
- if (changes & this.CHANGE_SCROLL) {
- this.$updateScrollBar();
- if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)
- this.$textLayer.update(this.layerConfig);
- else
- this.$textLayer.scrollLines(this.layerConfig);
-
- if (this.showGutter)
- this.$gutterLayer.update(this.layerConfig);
- this.$markerBack.update(this.layerConfig);
- this.$markerFront.update(this.layerConfig);
- this.$cursorLayer.update(this.layerConfig);
- this.$moveTextAreaToCursor();
- this.$highlightGutterLine && this.$updateGutterLineHighlight();
- return;
- }
-
- if (changes & this.CHANGE_TEXT) {
- this.$textLayer.update(this.layerConfig);
- if (this.showGutter)
- this.$gutterLayer.update(this.layerConfig);
- }
- else if (changes & this.CHANGE_LINES) {
- if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.showGutter)
- this.$gutterLayer.update(this.layerConfig);
- }
- else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {
- if (this.showGutter)
- this.$gutterLayer.update(this.layerConfig);
- }
-
- if (changes & this.CHANGE_CURSOR) {
- this.$cursorLayer.update(this.layerConfig);
- this.$moveTextAreaToCursor();
- this.$highlightGutterLine && this.$updateGutterLineHighlight();
- }
-
- if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {
- this.$markerFront.update(this.layerConfig);
- }
-
- if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {
- this.$markerBack.update(this.layerConfig);
- }
-
- if (changes & this.CHANGE_SIZE)
- this.$updateScrollBar();
- };
-
- this.$computeLayerConfig = function() {
- var session = this.session;
-
- var offset = this.scrollTop % this.lineHeight;
- var minHeight = this.$size.scrollerHeight + this.lineHeight;
-
- var longestLine = this.$getLongestLine();
-
- var horizScroll = this.$horizScrollAlwaysVisible || this.$size.scrollerWidth - longestLine < 0;
- var horizScrollChanged = this.$horizScroll !== horizScroll;
- this.$horizScroll = horizScroll;
- if (horizScrollChanged) {
- this.scroller.style.overflowX = horizScroll ? "scroll" : "hidden";
- // when we hide scrollbar scroll event isn't emitted
- // leaving session with wrong scrollLeft value
- if (!horizScroll)
- this.session.setScrollLeft(0);
- }
- var maxHeight = this.session.getScreenLength() * this.lineHeight;
- this.session.setScrollTop(Math.max(0, Math.min(this.scrollTop, maxHeight - this.$size.scrollerHeight)));
-
- var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;
- var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));
- var lastRow = firstRow + lineCount;
-
- // Map lines on the screen to lines in the document.
- var firstRowScreen, firstRowHeight;
- var lineHeight = this.lineHeight;
- firstRow = session.screenToDocumentRow(firstRow, 0);
-
- // Check if firstRow is inside of a foldLine. If true, then use the first
- // row of the foldLine.
- var foldLine = session.getFoldLine(firstRow);
- if (foldLine) {
- firstRow = foldLine.start.row;
- }
-
- firstRowScreen = session.documentToScreenRow(firstRow, 0);
- firstRowHeight = session.getRowLength(firstRow) * lineHeight;
-
- lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);
- minHeight = this.$size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +
- firstRowHeight;
-
- offset = this.scrollTop - firstRowScreen * lineHeight;
-
- this.layerConfig = {
- width : longestLine,
- padding : this.$padding,
- firstRow : firstRow,
- firstRowScreen: firstRowScreen,
- lastRow : lastRow,
- lineHeight : lineHeight,
- characterWidth : this.characterWidth,
- minHeight : minHeight,
- maxHeight : maxHeight,
- offset : offset,
- height : this.$size.scrollerHeight
- };
-
- // For debugging.
- // console.log(JSON.stringify(this.layerConfig));
-
- this.$gutterLayer.element.style.marginTop = (-offset) + "px";
- this.content.style.marginTop = (-offset) + "px";
- this.content.style.width = longestLine + 2 * this.$padding + "px";
- this.content.style.height = minHeight + "px";
-
- // Horizontal scrollbar visibility may have changed, which changes
- // the client height of the scroller
- if (horizScrollChanged)
- this.onResize(true);
- };
-
- this.$updateLines = function() {
- var firstRow = this.$changedLines.firstRow;
- var lastRow = this.$changedLines.lastRow;
- this.$changedLines = null;
-
- var layerConfig = this.layerConfig;
-
- if (firstRow > layerConfig.lastRow + 1) { return; }
- if (lastRow < layerConfig.firstRow) { return; }
-
- // if the last row is unknown -> redraw everything
- if (lastRow === Infinity) {
- if (this.showGutter)
- this.$gutterLayer.update(layerConfig);
- this.$textLayer.update(layerConfig);
- return;
- }
-
- // else update only the changed rows
- this.$textLayer.updateLines(layerConfig, firstRow, lastRow);
- return true;
- };
-
- this.$getLongestLine = function() {
- var charCount = this.session.getScreenWidth();
- if (this.$textLayer.showInvisibles)
- charCount += 1;
-
- return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));
- };
- this.updateFrontMarkers = function() {
- this.$markerFront.setMarkers(this.session.getMarkers(true));
- this.$loop.schedule(this.CHANGE_MARKER_FRONT);
- };
- this.updateBackMarkers = function() {
- this.$markerBack.setMarkers(this.session.getMarkers());
- this.$loop.schedule(this.CHANGE_MARKER_BACK);
- };
- this.addGutterDecoration = function(row, className){
- this.$gutterLayer.addGutterDecoration(row, className);
- };
- this.removeGutterDecoration = function(row, className){
- this.$gutterLayer.removeGutterDecoration(row, className);
- };
- this.updateBreakpoints = function(rows) {
- this.$loop.schedule(this.CHANGE_GUTTER);
- };
- this.setAnnotations = function(annotations) {
- this.$gutterLayer.setAnnotations(annotations);
- this.$loop.schedule(this.CHANGE_GUTTER);
- };
- this.updateCursor = function() {
- this.$loop.schedule(this.CHANGE_CURSOR);
- };
- this.hideCursor = function() {
- this.$cursorLayer.hideCursor();
- };
- this.showCursor = function() {
- this.$cursorLayer.showCursor();
- };
-
- this.scrollSelectionIntoView = function(anchor, lead, offset) {
- // first scroll anchor into view then scroll lead into view
- this.scrollCursorIntoView(anchor, offset);
- this.scrollCursorIntoView(lead, offset);
- };
- this.scrollCursorIntoView = function(cursor, offset) {
- // the editor is not visible
- if (this.$size.scrollerHeight === 0)
- return;
-
- var pos = this.$cursorLayer.getPixelPosition(cursor);
-
- var left = pos.left;
- var top = pos.top;
-
- if (this.scrollTop > top) {
- if (offset)
- top -= offset * this.$size.scrollerHeight;
- this.session.setScrollTop(top);
- } else if (this.scrollTop + this.$size.scrollerHeight < top + this.lineHeight) {
- if (offset)
- top += offset * this.$size.scrollerHeight;
- this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);
- }
-
- var scrollLeft = this.scrollLeft;
-
- if (scrollLeft > left) {
- if (left < this.$padding + 2 * this.layerConfig.characterWidth)
- left = 0;
- this.session.setScrollLeft(left);
- } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {
- this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));
- }
- };
- this.getScrollTop = function() {
- return this.session.getScrollTop();
- };
- this.getScrollLeft = function() {
- return this.session.getScrollLeft();
- };
- this.getScrollTopRow = function() {
- return this.scrollTop / this.lineHeight;
- };
- this.getScrollBottomRow = function() {
- return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);
- };
- this.scrollToRow = function(row) {
- this.session.setScrollTop(row * this.lineHeight);
- };
-
- this.alignCursor = function(cursor, alignment) {
- if (typeof cursor == "number")
- cursor = {row: cursor, column: 0};
-
- var pos = this.$cursorLayer.getPixelPosition(cursor);
- var h = this.$size.scrollerHeight - this.lineHeight;
- var offset = pos.top - h * (alignment || 0);
-
- this.session.setScrollTop(offset);
- return offset;
- };
-
- this.STEPS = 8;
- this.$calcSteps = function(fromValue, toValue){
- var i = 0;
- var l = this.STEPS;
- var steps = [];
-
- var func = function(t, x_min, dx) {
- return dx * (Math.pow(t - 1, 3) + 1) + x_min;
- };
-
- for (i = 0; i < l; ++i)
- steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));
-
- return steps;
- };
- this.scrollToLine = function(line, center, animate, callback) {
- var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});
- var offset = pos.top;
- if (center)
- offset -= this.$size.scrollerHeight / 2;
-
- var initialScroll = this.scrollTop;
- this.session.setScrollTop(offset);
- if (animate !== false)
- this.animateScrolling(initialScroll, callback);
- };
-
- this.animateScrolling = function(fromValue, callback) {
- var toValue = this.scrollTop;
- if (this.$animatedScroll && Math.abs(fromValue - toValue) < 100000) {
- var _self = this;
- var steps = _self.$calcSteps(fromValue, toValue);
- this.$inScrollAnimation = true;
-
- clearInterval(this.$timer);
-
- _self.session.setScrollTop(steps.shift());
- this.$timer = setInterval(function() {
- if (steps.length) {
- _self.session.setScrollTop(steps.shift());
- // trick session to think it's already scrolled to not loose toValue
- _self.session.$scrollTop = toValue;
- } else if (toValue != null) {
- _self.session.$scrollTop = -1;
- _self.session.setScrollTop(toValue);
- toValue = null;
- } else {
- // do this on separate step to not get spurious scroll event from scrollbar
- _self.$timer = clearInterval(_self.$timer);
- _self.$inScrollAnimation = false;
- callback && callback();
- }
- }, 10);
- }
- };
- this.scrollToY = function(scrollTop) {
- // after calling scrollBar.setScrollTop
- // scrollbar sends us event with same scrollTop. ignore it
- if (this.scrollTop !== scrollTop) {
- this.$loop.schedule(this.CHANGE_SCROLL);
- this.scrollTop = scrollTop;
- }
- };
- this.scrollToX = function(scrollLeft) {
- if (scrollLeft < 0)
- scrollLeft = 0;
-
- if (this.scrollLeft !== scrollLeft)
- this.scrollLeft = scrollLeft;
- this.$loop.schedule(this.CHANGE_H_SCROLL);
- };
- this.scrollBy = function(deltaX, deltaY) {
- deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);
- deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);
- };
- this.isScrollableBy = function(deltaX, deltaY) {
- if (deltaY < 0 && this.session.getScrollTop() > 0)
- return true;
- if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight < this.layerConfig.maxHeight)
- return true;
- // todo: handle horizontal scrolling
- };
-
- this.pixelToScreenCoordinates = function(x, y) {
- var canvasPos = this.scroller.getBoundingClientRect();
-
- var offset = (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth;
- var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);
- var col = Math.round(offset);
-
- return {row: row, column: col, side: offset - col > 0 ? 1 : -1};
- };
-
- this.screenToTextCoordinates = function(x, y) {
- var canvasPos = this.scroller.getBoundingClientRect();
-
- var col = Math.round(
- (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth
- );
- var row = Math.floor(
- (y + this.scrollTop - canvasPos.top) / this.lineHeight
- );
-
- return this.session.screenToDocumentPosition(row, Math.max(col, 0));
- };
- this.textToScreenCoordinates = function(row, column) {
- var canvasPos = this.scroller.getBoundingClientRect();
- var pos = this.session.documentToScreenPosition(row, column);
-
- var x = this.$padding + Math.round(pos.column * this.characterWidth);
- var y = pos.row * this.lineHeight;
-
- return {
- pageX: canvasPos.left + x - this.scrollLeft,
- pageY: canvasPos.top + y - this.scrollTop
- };
- };
- this.visualizeFocus = function() {
- dom.addCssClass(this.container, "ace_focus");
- };
- this.visualizeBlur = function() {
- dom.removeCssClass(this.container, "ace_focus");
- };
- this.showComposition = function(position) {
- if (!this.$composition)
- this.$composition = {
- keepTextAreaAtCursor: this.$keepTextAreaAtCursor,
- cssText: this.textarea.style.cssText
- };
-
- this.$keepTextAreaAtCursor = true;
- dom.addCssClass(this.textarea, "ace_composition");
- this.textarea.style.cssText = "";
- this.$moveTextAreaToCursor();
- };
- this.setCompositionText = function(text) {
- this.$moveTextAreaToCursor();
- };
- this.hideComposition = function() {
- if (!this.$composition)
- return;
-
- dom.removeCssClass(this.textarea, "ace_composition");
- this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;
- this.textarea.style.cssText = this.$composition.cssText;
- this.$composition = null;
- };
-
- this._loadTheme = function(name, callback) {
- if (!config.get("packaged"))
- return callback();
-
- net.loadScript(config.moduleUrl(name, "theme"), callback);
- };
- this.setTheme = function(theme) {
- var _self = this;
-
- this.$themeValue = theme;
- if (!theme || typeof theme == "string") {
- var moduleName = theme || "ace/theme/textmate";
-
- var module;
- try {
- module = require(moduleName);
- } catch (e) {};
- if (module)
- return afterLoad(module);
-
- _self._loadTheme(moduleName, function() {
- require([moduleName], function(module) {
- if (_self.$themeValue !== theme)
- return;
-
- afterLoad(module);
- });
- });
- } else {
- afterLoad(theme);
- }
-
- function afterLoad(theme) {
- dom.importCssString(
- theme.cssText,
- theme.cssClass,
- _self.container.ownerDocument
- );
-
- if (_self.$theme)
- dom.removeCssClass(_self.container, _self.$theme);
-
- _self.$theme = theme ? theme.cssClass : null;
-
- if (_self.$theme)
- dom.addCssClass(_self.container, _self.$theme);
-
- if (theme && theme.isDark)
- dom.addCssClass(_self.container, "ace_dark");
- else
- dom.removeCssClass(_self.container, "ace_dark");
-
- // force re-measure of the gutter width
- if (_self.$size) {
- _self.$size.width = 0;
- _self.onResize();
- }
- }
- };
- this.getTheme = function() {
- return this.$themeValue;
- };
-
- // Methods allows to add / remove CSS classnames to the editor element.
- // This feature can be used by plug-ins to provide a visual indication of
- // a certain mode that editor is in.
-
- /**
- * VirtualRenderer.setStyle(style)
- * - style (String): A class name
- *
- * [Adds a new class, `style`, to the editor.]{: #VirtualRenderer.setStyle}
- **/
- this.setStyle = function setStyle(style) {
- dom.addCssClass(this.container, style);
- };
- this.unsetStyle = function unsetStyle(style) {
- dom.removeCssClass(this.container, style);
- };
- this.destroy = function() {
- this.$textLayer.destroy();
- this.$cursorLayer.destroy();
- };
-
-}).call(VirtualRenderer.prototype);
-
-exports.VirtualRenderer = VirtualRenderer;
-});
-
-ace.define('ace/layer/gutter', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var dom = require("../lib/dom");
-var oop = require("../lib/oop");
-var EventEmitter = require("../lib/event_emitter").EventEmitter;
-
-var Gutter = function(parentEl) {
- this.element = dom.createElement("div");
- this.element.className = "ace_layer ace_gutter-layer";
- parentEl.appendChild(this.element);
- this.setShowFoldWidgets(this.$showFoldWidgets);
-
- this.gutterWidth = 0;
-
- this.$annotations = [];
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.setSession = function(session) {
- this.session = session;
- };
-
- this.addGutterDecoration = function(row, className){
- if (window.console)
- console.warn && console.warn("deprecated use session.addGutterDecoration");
- this.session.addGutterDecoration(row, className);
- };
-
- this.removeGutterDecoration = function(row, className){
- if (window.console)
- console.warn && console.warn("deprecated use session.removeGutterDecoration");
- this.session.removeGutterDecoration(row, className);
- };
-
- this.setAnnotations = function(annotations) {
- // iterate over sparse array
- this.$annotations = [];
- for (var row in annotations) if (annotations.hasOwnProperty(row)) {
- var rowAnnotations = annotations[row];
- if (!rowAnnotations)
- continue;
-
- var rowInfo = this.$annotations[row] = {
- text: []
- };
- for (var i=0; i<rowAnnotations.length; i++) {
- var annotation = rowAnnotations[i];
- var annoText = annotation.text.replace(/"/g, "&quot;").replace(/'/g, "&#8217;").replace(/</, "&lt;");
- if (rowInfo.text.indexOf(annoText) === -1)
- rowInfo.text.push(annoText);
- var type = annotation.type;
- if (type == "error")
- rowInfo.className = " ace_error";
- else if (type == "warning" && rowInfo.className != " ace_error")
- rowInfo.className = " ace_warning";
- else if (type == "info" && (!rowInfo.className))
- rowInfo.className = " ace_info";
- }
- }
- };
-
- this.update = function(config) {
- var emptyAnno = {className: ""};
- var html = [];
- var i = config.firstRow;
- var lastRow = config.lastRow;
- var fold = this.session.getNextFoldLine(i);
- var foldStart = fold ? fold.start.row : Infinity;
- var foldWidgets = this.$showFoldWidgets && this.session.foldWidgets;
- var breakpoints = this.session.$breakpoints;
- var decorations = this.session.$decorations;
- var lastLineNumber = 0;
-
- while (true) {
- if(i > foldStart) {
- i = fold.end.row + 1;
- fold = this.session.getNextFoldLine(i, fold);
- foldStart = fold ?fold.start.row :Infinity;
- }
- if(i > lastRow)
- break;
-
- var annotation = this.$annotations[i] || emptyAnno;
- html.push(
- "<div class='ace_gutter-cell ",
- breakpoints[i] || "", decorations[i] || "", annotation.className,
- "' style='height:", this.session.getRowLength(i) * config.lineHeight, "px;'>",
- lastLineNumber = i + 1
- );
-
- if (foldWidgets) {
- var c = foldWidgets[i];
- // check if cached value is invalidated and we need to recompute
- if (c == null)
- c = foldWidgets[i] = this.session.getFoldWidget(i);
- if (c)
- html.push(
- "<span class='ace_fold-widget ", c,
- c == "start" && i == foldStart && i < fold.end.row ? " closed" : " open",
- "' style='height:", config.lineHeight, "px",
- "'></span>"
- );
- }
-
- html.push("</div>");
-
- i++;
- }
-
- this.element = dom.setInnerHtml(this.element, html.join(""));
- this.element.style.height = config.minHeight + "px";
-
- if (this.session.$useWrapMode)
- lastLineNumber = this.session.getLength();
-
- var gutterWidth = ("" + lastLineNumber).length * config.characterWidth;
- var padding = this.$padding || this.$computePadding();
- gutterWidth += padding.left + padding.right;
- if (gutterWidth !== this.gutterWidth) {
- this.gutterWidth = gutterWidth;
- this.element.style.width = Math.ceil(this.gutterWidth) + "px";
- this._emit("changeGutterWidth", gutterWidth);
- }
- };
-
- this.$showFoldWidgets = true;
- this.setShowFoldWidgets = function(show) {
- if (show)
- dom.addCssClass(this.element, "ace_folding-enabled");
- else
- dom.removeCssClass(this.element, "ace_folding-enabled");
-
- this.$showFoldWidgets = show;
- this.$padding = null;
- };
-
- this.getShowFoldWidgets = function() {
- return this.$showFoldWidgets;
- };
-
- this.$computePadding = function() {
- if (!this.element.firstChild)
- return {left: 0, right: 0};
- var style = dom.computedStyle(this.element.firstChild);
- this.$padding = {}
- this.$padding.left = parseInt(style.paddingLeft) + 1;
- this.$padding.right = parseInt(style.paddingRight);
- return this.$padding;
- };
-
- this.getRegion = function(point) {
- var padding = this.$padding || this.$computePadding();
- var rect = this.element.getBoundingClientRect();
- if (point.x < padding.left + rect.left)
- return "markers";
- if (this.$showFoldWidgets && point.x > rect.right - padding.right)
- return "foldWidgets";
- };
-
-}).call(Gutter.prototype);
-
-exports.Gutter = Gutter;
-
-});
-
-ace.define('ace/layer/marker', ['require', 'exports', 'module' , 'ace/range', 'ace/lib/dom'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-var dom = require("../lib/dom");
-
-var Marker = function(parentEl) {
- this.element = dom.createElement("div");
- this.element.className = "ace_layer ace_marker-layer";
- parentEl.appendChild(this.element);
-};
-
-(function() {
-
- this.$padding = 0;
-
- this.setPadding = function(padding) {
- this.$padding = padding;
- };
- this.setSession = function(session) {
- this.session = session;
- };
-
- this.setMarkers = function(markers) {
- this.markers = markers;
- };
-
- this.update = function(config) {
- var config = config || this.config;
- if (!config)
- return;
-
- this.config = config;
-
-
- var html = [];
- for (var key in this.markers) {
- var marker = this.markers[key];
-
- if (!marker.range) {
- marker.update(html, this, this.session, config);
- continue;
- }
-
- var range = marker.range.clipRows(config.firstRow, config.lastRow);
- if (range.isEmpty()) continue;
-
- range = range.toScreenRange(this.session);
- if (marker.renderer) {
- var top = this.$getTop(range.start.row, config);
- var left = Math.round(
- this.$padding + range.start.column * config.characterWidth
- );
- marker.renderer(html, range, left, top, config);
- }
- else if (range.isMultiLine()) {
- if (marker.type == "text") {
- this.drawTextMarker(html, range, marker.clazz, config);
- } else {
- this.drawMultiLineMarker(
- html, range, marker.clazz, config,
- marker.type
- );
- }
- }
- else {
- this.drawSingleLineMarker(
- html, range, marker.clazz + " start", config,
- null, marker.type
- );
- }
- }
- this.element = dom.setInnerHtml(this.element, html.join(""));
- };
-
- this.$getTop = function(row, layerConfig) {
- return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;
- };
-
- // Draws a marker, which spans a range of text on multiple lines
- this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig) {
- // selection start
- var row = range.start.row;
-
- var lineRange = new Range(
- row, range.start.column,
- row, this.session.getScreenLastRowColumn(row)
- );
- this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " start", layerConfig, 1, "text");
-
- // selection end
- row = range.end.row;
- lineRange = new Range(row, 0, row, range.end.column);
- this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 0, "text");
-
- for (row = range.start.row + 1; row < range.end.row; row++) {
- lineRange.start.row = row;
- lineRange.end.row = row;
- lineRange.end.column = this.session.getScreenLastRowColumn(row);
- this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, "text");
- }
- };
-
- // Draws a multi line marker, where lines span the full width
- this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, type) {
- var padding = type === "background" ? 0 : this.$padding;
- // from selection start to the end of the line
- var height = config.lineHeight;
- var top = this.$getTop(range.start.row, config);
- var left = Math.round(padding + range.start.column * config.characterWidth);
-
- stringBuilder.push(
- "<div class='", clazz, " start' style='",
- "height:", height, "px;",
- "right:0;",
- "top:", top, "px;",
- "left:", left, "px;'></div>"
- );
-
- // from start of the last line to the selection end
- top = this.$getTop(range.end.row, config);
- var width = Math.round(range.end.column * config.characterWidth);
-
- stringBuilder.push(
- "<div class='", clazz, "' style='",
- "height:", height, "px;",
- "width:", width, "px;",
- "top:", top, "px;",
- "left:", padding, "px;'></div>"
- );
-
- // all the complete lines
- height = (range.end.row - range.start.row - 1) * config.lineHeight;
- if (height < 0)
- return;
- top = this.$getTop(range.start.row + 1, config);
-
- stringBuilder.push(
- "<div class='", clazz, "' style='",
- "height:", height, "px;",
- "right:0;",
- "top:", top, "px;",
- "left:", padding, "px;'></div>"
- );
- };
-
- // Draws a marker which covers part or whole width of a single screen line
- this.drawSingleLineMarker = function(stringBuilder, range, clazz, layerConfig, extraLength, type) {
- var padding = type === "background" ? 0 : this.$padding;
- var height = layerConfig.lineHeight;
-
- if (type === "background")
- var width = layerConfig.width;
- else
- width = Math.round((range.end.column + (extraLength || 0) - range.start.column) * layerConfig.characterWidth);
-
- var top = this.$getTop(range.start.row, layerConfig);
- var left = Math.round(
- padding + range.start.column * layerConfig.characterWidth
- );
-
- stringBuilder.push(
- "<div class='", clazz, "' style='",
- "height:", height, "px;",
- "width:", width, "px;",
- "top:", top, "px;",
- "left:", left,"px;'></div>"
- );
- };
-
-}).call(Marker.prototype);
-
-exports.Marker = Marker;
-
-});
-
-ace.define('ace/layer/text', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/useragent', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var dom = require("../lib/dom");
-var lang = require("../lib/lang");
-var useragent = require("../lib/useragent");
-var EventEmitter = require("../lib/event_emitter").EventEmitter;
-
-var Text = function(parentEl) {
- this.element = dom.createElement("div");
- this.element.className = "ace_layer ace_text-layer";
- parentEl.appendChild(this.element);
-
- this.$characterSize = this.$measureSizes() || {width: 0, height: 0};
- this.$pollSizeChanges();
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.EOF_CHAR = "\xB6"; //"&para;";
- this.EOL_CHAR = "\xAC"; //"&not;";
- this.TAB_CHAR = "\u2192"; //"&rarr;" "\u21E5";
- this.SPACE_CHAR = "\xB7"; //"&middot;";
- this.$padding = 0;
-
- this.setPadding = function(padding) {
- this.$padding = padding;
- this.element.style.padding = "0 " + padding + "px";
- };
-
- this.getLineHeight = function() {
- return this.$characterSize.height || 1;
- };
-
- this.getCharacterWidth = function() {
- return this.$characterSize.width || 1;
- };
-
- this.checkForSizeChanges = function() {
- var size = this.$measureSizes();
- if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {
- this.$characterSize = size;
- this._emit("changeCharacterSize", {data: size});
- }
- };
-
- this.$pollSizeChanges = function() {
- var self = this;
- this.$pollSizeChangesTimer = setInterval(function() {
- self.checkForSizeChanges();
- }, 500);
- };
-
- this.$fontStyles = {
- fontFamily : 1,
- fontSize : 1,
- fontWeight : 1,
- fontStyle : 1,
- lineHeight : 1
- };
-
- this.$measureSizes = useragent.isIE || useragent.isOldGecko ? function() {
- var n = 1000;
- if (!this.$measureNode) {
- var measureNode = this.$measureNode = dom.createElement("div");
- var style = measureNode.style;
-
- style.width = style.height = "auto";
- style.left = style.top = (-n * 40) + "px";
-
- style.visibility = "hidden";
- style.position = "fixed";
- style.overflow = "visible";
- style.whiteSpace = "nowrap";
-
- // in FF 3.6 monospace fonts can have a fixed sub pixel width.
- // that's why we have to measure many characters
- // Note: characterWidth can be a float!
- measureNode.innerHTML = lang.stringRepeat("Xy", n);
-
- if (this.element.ownerDocument.body) {
- this.element.ownerDocument.body.appendChild(measureNode);
- } else {
- var container = this.element.parentNode;
- while (!dom.hasCssClass(container, "ace_editor"))
- container = container.parentNode;
- container.appendChild(measureNode);
- }
- }
-
- // Size and width can be null if the editor is not visible or
- // detached from the document
- if (!this.element.offsetWidth)
- return null;
-
- var style = this.$measureNode.style;
- var computedStyle = dom.computedStyle(this.element);
- for (var prop in this.$fontStyles)
- style[prop] = computedStyle[prop];
-
- var size = {
- height: this.$measureNode.offsetHeight,
- width: this.$measureNode.offsetWidth / (n * 2)
- };
-
- // Size and width can be null if the editor is not visible or
- // detached from the document
- if (size.width == 0 || size.height == 0)
- return null;
-
- return size;
- }
- : function() {
- if (!this.$measureNode) {
- var measureNode = this.$measureNode = dom.createElement("div");
- var style = measureNode.style;
-
- style.width = style.height = "auto";
- style.left = style.top = -100 + "px";
-
- style.visibility = "hidden";
- style.position = "fixed";
- style.overflow = "visible";
- style.whiteSpace = "nowrap";
-
- measureNode.innerHTML = "X";
-
- var container = this.element.parentNode;
- while (container && !dom.hasCssClass(container, "ace_editor"))
- container = container.parentNode;
-
- if (!container)
- return this.$measureNode = null;
-
- container.appendChild(measureNode);
- }
-
- var rect = this.$measureNode.getBoundingClientRect();
-
- var size = {
- height: rect.height,
- width: rect.width
- };
-
- // Size and width can be null if the editor is not visible or
- // detached from the document
- if (size.width == 0 || size.height == 0)
- return null;
-
- return size;
- };
-
- this.setSession = function(session) {
- this.session = session;
- this.$computeTabString();
- };
-
- this.showInvisibles = false;
- this.setShowInvisibles = function(showInvisibles) {
- if (this.showInvisibles == showInvisibles)
- return false;
-
- this.showInvisibles = showInvisibles;
- this.$computeTabString();
- return true;
- };
-
- this.displayIndentGuides = true;
- this.setDisplayIndentGuides = function(display) {
- if (this.displayIndentGuides == display)
- return false;
-
- this.displayIndentGuides = display;
- this.$computeTabString();
- return true;
- };
-
- this.$tabStrings = [];
- this.onChangeTabSize =
- this.$computeTabString = function() {
- var tabSize = this.session.getTabSize();
- this.tabSize = tabSize;
- var tabStr = this.$tabStrings = [0];
- for (var i = 1; i < tabSize + 1; i++) {
- if (this.showInvisibles) {
- tabStr.push("<span class='ace_invisible'>"
- + this.TAB_CHAR
- + Array(i).join("&#160;")
- + "</span>");
- } else {
- tabStr.push(new Array(i+1).join("&#160;"));
- }
- }
- if (this.displayIndentGuides) {
- this.$indentGuideRe = /\s\S| \t|\t |\s$/;
- var className = "ace_indent-guide";
- var content = Array(this.tabSize + 1).join("&#160;");
- var tabContent = content;
- if (this.showInvisibles) {
- className += " ace_invisible";
- tabContent = this.TAB_CHAR + content.substr(6);
- }
-
- this.$tabStrings[" "] = "<span class='" + className + "'>" + content + "</span>";
- this.$tabStrings["\t"] = "<span class='" + className + "'>" + tabContent + "</span>";
- }
- };
-
- this.updateLines = function(config, firstRow, lastRow) {
- // Due to wrap line changes there can be new lines if e.g.
- // the line to updated wrapped in the meantime.
- if (this.config.lastRow != config.lastRow ||
- this.config.firstRow != config.firstRow) {
- this.scrollLines(config);
- }
- this.config = config;
-
- var first = Math.max(firstRow, config.firstRow);
- var last = Math.min(lastRow, config.lastRow);
-
- var lineElements = this.element.childNodes;
- var lineElementsIdx = 0;
-
- for (var row = config.firstRow; row < first; row++) {
- var foldLine = this.session.getFoldLine(row);
- if (foldLine) {
- if (foldLine.containsRow(first)) {
- first = foldLine.start.row;
- break;
- } else {
- row = foldLine.end.row;
- }
- }
- lineElementsIdx ++;
- }
-
- var row = first;
- var foldLine = this.session.getNextFoldLine(row);
- var foldStart = foldLine ? foldLine.start.row : Infinity;
-
- while (true) {
- if (row > foldStart) {
- row = foldLine.end.row+1;
- foldLine = this.session.getNextFoldLine(row, foldLine);
- foldStart = foldLine ? foldLine.start.row :Infinity;
- }
- if (row > last)
- break;
-
- var lineElement = lineElements[lineElementsIdx++];
- if (lineElement) {
- var html = [];
- this.$renderLine(
- html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false
- );
- dom.setInnerHtml(lineElement, html.join(""));
- }
- row++;
- }
- };
-
- this.scrollLines = function(config) {
- var oldConfig = this.config;
- this.config = config;
-
- if (!oldConfig || oldConfig.lastRow < config.firstRow)
- return this.update(config);
-
- if (config.lastRow < oldConfig.firstRow)
- return this.update(config);
-
- var el = this.element;
- if (oldConfig.firstRow < config.firstRow)
- for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)
- el.removeChild(el.firstChild);
-
- if (oldConfig.lastRow > config.lastRow)
- for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)
- el.removeChild(el.lastChild);
-
- if (config.firstRow < oldConfig.firstRow) {
- var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);
- if (el.firstChild)
- el.insertBefore(fragment, el.firstChild);
- else
- el.appendChild(fragment);
- }
-
- if (config.lastRow > oldConfig.lastRow) {
- var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);
- el.appendChild(fragment);
- }
- };
-
- this.$renderLinesFragment = function(config, firstRow, lastRow) {
- var fragment = this.element.ownerDocument.createDocumentFragment();
- var row = firstRow;
- var foldLine = this.session.getNextFoldLine(row);
- var foldStart = foldLine ? foldLine.start.row : Infinity;
-
- while (true) {
- if (row > foldStart) {
- row = foldLine.end.row+1;
- foldLine = this.session.getNextFoldLine(row, foldLine);
- foldStart = foldLine ? foldLine.start.row : Infinity;
- }
- if (row > lastRow)
- break;
-
- var container = dom.createElement("div");
-
- var html = [];
- // Get the tokens per line as there might be some lines in between
- // being folded.
- this.$renderLine(html, row, false, row == foldStart ? foldLine : false);
-
- // don't use setInnerHtml since we are working with an empty DIV
- container.innerHTML = html.join("");
- if (this.$useLineGroups()) {
- container.className = 'ace_line_group';
- fragment.appendChild(container);
- } else {
- var lines = container.childNodes
- while(lines.length)
- fragment.appendChild(lines[0]);
- }
-
- row++;
- }
- return fragment;
- };
-
- this.update = function(config) {
- this.config = config;
-
- var html = [];
- var firstRow = config.firstRow, lastRow = config.lastRow;
-
- var row = firstRow;
- var foldLine = this.session.getNextFoldLine(row);
- var foldStart = foldLine ? foldLine.start.row : Infinity;
-
- while (true) {
- if (row > foldStart) {
- row = foldLine.end.row+1;
- foldLine = this.session.getNextFoldLine(row, foldLine);
- foldStart = foldLine ? foldLine.start.row :Infinity;
- }
- if (row > lastRow)
- break;
-
- if (this.$useLineGroups())
- html.push("<div class='ace_line_group'>")
-
- this.$renderLine(html, row, false, row == foldStart ? foldLine : false);
-
- if (this.$useLineGroups())
- html.push("</div>"); // end the line group
-
- row++;
- }
- this.element = dom.setInnerHtml(this.element, html.join(""));
- };
-
- this.$textToken = {
- "text": true,
- "rparen": true,
- "lparen": true
- };
-
- this.$renderToken = function(stringBuilder, screenColumn, token, value) {
- var self = this;
- var replaceReg = /\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g;
- var replaceFunc = function(c, a, b, tabIdx, idx4) {
- if (a) {
- return new Array(c.length+1).join("&#160;");
- } else if (c == "&") {
- return "&#38;";
- } else if (c == "<") {
- return "&#60;";
- } else if (c == "\t") {
- var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);
- screenColumn += tabSize - 1;
- return self.$tabStrings[tabSize];
- } else if (c == "\u3000") {
- // U+3000 is both invisible AND full-width, so must be handled uniquely
- var classToUse = self.showInvisibles ? "ace_cjk ace_invisible" : "ace_cjk";
- var space = self.showInvisibles ? self.SPACE_CHAR : "";
- screenColumn += 1;
- return "<span class='" + classToUse + "' style='width:" +
- (self.config.characterWidth * 2) +
- "px'>" + space + "</span>";
- } else if (b) {
- return "<span class='ace_invisible ace_invalid'>" + self.SPACE_CHAR + "</span>";
- } else {
- screenColumn += 1;
- return "<span class='ace_cjk' style='width:" +
- (self.config.characterWidth * 2) +
- "px'>" + c + "</span>";
- }
- };
-
- var output = value.replace(replaceReg, replaceFunc);
-
- if (!this.$textToken[token.type]) {
- var classes = "ace_" + token.type.replace(/\./g, " ace_");
- var style = "";
- if (token.type == "fold")
- style = " style='width:" + (token.value.length * this.config.characterWidth) + "px;' ";
- stringBuilder.push("<span class='", classes, "'", style, ">", output, "</span>");
- }
- else {
- stringBuilder.push(output);
- }
- return screenColumn + value.length;
- };
-
- this.renderIndentGuide = function(stringBuilder, value) {
- var cols = value.search(this.$indentGuideRe);
- if (cols <= 0)
- return value;
- if (value[0] == " ") {
- cols -= cols % this.tabSize;
- stringBuilder.push(Array(cols/this.tabSize + 1).join(this.$tabStrings[" "]));
- return value.substr(cols);
- } else if (value[0] == "\t") {
- stringBuilder.push(Array(cols + 1).join(this.$tabStrings["\t"]));
- return value.substr(cols);
- }
- return value;
- };
-
- this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {
- var chars = 0;
- var split = 0;
- var splitChars = splits[0];
- var screenColumn = 0;
-
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- var value = token.value;
- if (i == 0 && this.displayIndentGuides) {
- chars = value.length;
- value = this.renderIndentGuide(stringBuilder, value);
- if (!value)
- continue;
- chars -= value.length;
- }
-
- if (chars + value.length < splitChars) {
- screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);
- chars += value.length;
- } else {
- while (chars + value.length >= splitChars) {
- screenColumn = this.$renderToken(
- stringBuilder, screenColumn,
- token, value.substring(0, splitChars - chars)
- );
- value = value.substring(splitChars - chars);
- chars = splitChars;
-
- if (!onlyContents) {
- stringBuilder.push("</div>",
- "<div class='ace_line' style='height:",
- this.config.lineHeight, "px'>"
- );
- }
-
- split ++;
- screenColumn = 0;
- splitChars = splits[split] || Number.MAX_VALUE;
- }
- if (value.length != 0) {
- chars += value.length;
- screenColumn = this.$renderToken(
- stringBuilder, screenColumn, token, value
- );
- }
- }
- }
- };
-
- this.$renderSimpleLine = function(stringBuilder, tokens) {
- var screenColumn = 0;
- var token = tokens[0];
- var value = token.value;
- if (this.displayIndentGuides)
- value = this.renderIndentGuide(stringBuilder, value);
- if (value)
- screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);
- for (var i = 1; i < tokens.length; i++) {
- token = tokens[i];
- value = token.value;
- screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);
- }
- };
-
- // row is either first row of foldline or not in fold
- this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {
- if (!foldLine && foldLine != false)
- foldLine = this.session.getFoldLine(row);
-
- if (foldLine)
- var tokens = this.$getFoldLineTokens(row, foldLine);
- else
- var tokens = this.session.getTokens(row);
-
-
- if (!onlyContents) {
- stringBuilder.push(
- "<div class='ace_line' style='height:", this.config.lineHeight, "px'>"
- );
- }
-
- if (tokens.length) {
- var splits = this.session.getRowSplitData(row);
- if (splits && splits.length)
- this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);
- else
- this.$renderSimpleLine(stringBuilder, tokens);
- }
-
- if (this.showInvisibles) {
- if (foldLine)
- row = foldLine.end.row
-
- stringBuilder.push(
- "<span class='ace_invisible'>",
- row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,
- "</span>"
- );
- }
- if (!onlyContents)
- stringBuilder.push("</div>");
- };
-
- this.$getFoldLineTokens = function(row, foldLine) {
- var session = this.session;
- var renderTokens = [];
-
- function addTokens(tokens, from, to) {
- var idx = 0, col = 0;
- while ((col + tokens[idx].value.length) < from) {
- col += tokens[idx].value.length;
- idx++;
-
- if (idx == tokens.length)
- return;
- }
- if (col != from) {
- var value = tokens[idx].value.substring(from - col);
- // Check if the token value is longer then the from...to spacing.
- if (value.length > (to - from))
- value = value.substring(0, to - from);
-
- renderTokens.push({
- type: tokens[idx].type,
- value: value
- });
-
- col = from + value.length;
- idx += 1;
- }
-
- while (col < to && idx < tokens.length) {
- var value = tokens[idx].value;
- if (value.length + col > to) {
- renderTokens.push({
- type: tokens[idx].type,
- value: value.substring(0, to - col)
- });
- } else
- renderTokens.push(tokens[idx]);
- col += value.length;
- idx += 1;
- }
- }
-
- var tokens = session.getTokens(row);
- foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {
- if (placeholder) {
- renderTokens.push({
- type: "fold",
- value: placeholder
- });
- } else {
- if (isNewRow)
- tokens = session.getTokens(row);
-
- if (tokens.length)
- addTokens(tokens, lastColumn, column);
- }
- }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);
-
- return renderTokens;
- };
-
- this.$useLineGroups = function() {
- // For the updateLines function to work correctly, it's important that the
- // child nodes of this.element correspond on a 1-to-1 basis to rows in the
- // document (as distinct from lines on the screen). For sessions that are
- // wrapped, this means we need to add a layer to the node hierarchy (tagged
- // with the class name ace_line_group).
- return this.session.getUseWrapMode();
- };
-
- this.destroy = function() {
- clearInterval(this.$pollSizeChangesTimer);
- if (this.$measureNode)
- this.$measureNode.parentNode.removeChild(this.$measureNode);
- delete this.$measureNode;
- };
-
-}).call(Text.prototype);
-
-exports.Text = Text;
-
-});
-
-ace.define('ace/layer/cursor', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
-
-
-var dom = require("../lib/dom");
-
-var Cursor = function(parentEl) {
- this.element = dom.createElement("div");
- this.element.className = "ace_layer ace_cursor-layer";
- parentEl.appendChild(this.element);
-
- this.isVisible = false;
- this.isBlinking = true;
-
- this.cursors = [];
- this.cursor = this.addCursor();
-};
-
-(function() {
-
- this.$padding = 0;
- this.setPadding = function(padding) {
- this.$padding = padding;
- };
-
- this.setSession = function(session) {
- this.session = session;
- };
-
- this.setBlinking = function(blinking) {
- this.isBlinking = blinking;
- if (blinking)
- this.restartTimer();
- };
-
- this.addCursor = function() {
- var el = dom.createElement("div");
- var className = "ace_cursor";
- if (!this.isVisible)
- className += " ace_hidden";
- if (this.overwrite)
- className += " ace_overwrite";
-
- el.className = className;
- this.element.appendChild(el);
- this.cursors.push(el);
- return el;
- };
-
- this.removeCursor = function() {
- if (this.cursors.length > 1) {
- var el = this.cursors.pop();
- el.parentNode.removeChild(el);
- return el;
- }
- };
-
- this.hideCursor = function() {
- this.isVisible = false;
- for (var i = this.cursors.length; i--; )
- dom.addCssClass(this.cursors[i], "ace_hidden");
- clearInterval(this.blinkId);
- };
-
- this.showCursor = function() {
- this.isVisible = true;
- for (var i = this.cursors.length; i--; )
- dom.removeCssClass(this.cursors[i], "ace_hidden");
-
- this.element.style.visibility = "";
- this.restartTimer();
- };
-
- this.restartTimer = function() {
- clearInterval(this.blinkId);
- if (!this.isBlinking)
- return;
- if (!this.isVisible)
- return;
-
- var element = this.cursors.length == 1 ? this.cursor : this.element;
- this.blinkId = setInterval(function() {
- element.style.visibility = "hidden";
- setTimeout(function() {
- element.style.visibility = "";
- }, 400);
- }, 1000);
- };
-
- this.getPixelPosition = function(position, onScreen) {
- if (!this.config || !this.session) {
- return {
- left : 0,
- top : 0
- };
- }
-
- if (!position)
- position = this.session.selection.getCursor();
- var pos = this.session.documentToScreenPosition(position);
- var cursorLeft = Math.round(this.$padding +
- pos.column * this.config.characterWidth);
- var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *
- this.config.lineHeight;
-
- return {
- left : cursorLeft,
- top : cursorTop
- };
- };
-
- this.update = function(config) {
- this.config = config;
-
- if (this.session.selectionMarkerCount > 0) {
- var selections = this.session.$selectionMarkers;
- var i = 0, sel, cursorIndex = 0;
-
- for (var i = selections.length; i--; ) {
- sel = selections[i];
- var pixelPos = this.getPixelPosition(sel.cursor, true);
- if ((pixelPos.top > config.height + config.offset ||
- pixelPos.top < -config.offset) && i > 1) {
- continue;
- }
-
- var style = (this.cursors[cursorIndex++] || this.addCursor()).style;
-
- style.left = pixelPos.left + "px";
- style.top = pixelPos.top + "px";
- style.width = config.characterWidth + "px";
- style.height = config.lineHeight + "px";
- }
- if (cursorIndex > 1)
- while (this.cursors.length > cursorIndex)
- this.removeCursor();
- } else {
- var pixelPos = this.getPixelPosition(null, true);
- var style = this.cursor.style;
- style.left = pixelPos.left + "px";
- style.top = pixelPos.top + "px";
- style.width = config.characterWidth + "px";
- style.height = config.lineHeight + "px";
-
- while (this.cursors.length > 1)
- this.removeCursor();
- }
-
- var overwrite = this.session.getOverwrite();
- if (overwrite != this.overwrite)
- this.$setOverite(overwrite);
-
- // cache for textarea and gutter highlight
- this.$pixelPos = pixelPos;
-
- this.restartTimer();
- };
-
- this.$setOverite = function(overwrite) {
- this.overwrite = overwrite;
- for (var i = this.cursors.length; i--; ) {
- if (overwrite)
- dom.addCssClass(this.cursors[i], "ace_overwrite");
- else
- dom.removeCssClass(this.cursors[i], "ace_overwrite");
- }
- };
-
- this.destroy = function() {
- clearInterval(this.blinkId);
- }
-
-}).call(Cursor.prototype);
-
-exports.Cursor = Cursor;
-
-});
-
-ace.define('ace/scrollbar', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/event', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var dom = require("./lib/dom");
-var event = require("./lib/event");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new ScrollBar(parent)
- * - parent (DOMElement): A DOM element
- *
- * Creates a new `ScrollBar`. `parent` is the owner of the scroll bar.
- *
- **/
-var ScrollBar = function(parent) {
- this.element = dom.createElement("div");
- this.element.className = "ace_sb";
-
- this.inner = dom.createElement("div");
- this.element.appendChild(this.inner);
-
- parent.appendChild(this.element);
-
- // in OSX lion the scrollbars appear to have no width. In this case resize
- // the to show the scrollbar but still pretend that the scrollbar has a width
- // of 0px
- // in Firefox 6+ scrollbar is hidden if element has the same width as scrollbar
- // make element a little bit wider to retain scrollbar when page is zoomed
- this.width = dom.scrollbarWidth(parent.ownerDocument);
- this.element.style.width = (this.width || 15) + 5 + "px";
-
- event.addListener(this.element, "scroll", this.onScroll.bind(this));
-};
-
-(function() {
- oop.implement(this, EventEmitter);
- this.onScroll = function() {
- this._emit("scroll", {data: this.element.scrollTop});
- };
- this.getWidth = function() {
- return this.width;
- };
- this.setHeight = function(height) {
- this.element.style.height = height + "px";
- };
- this.setInnerHeight = function(height) {
- this.inner.style.height = height + "px";
- };
- // TODO: on chrome 17+ for small zoom levels after calling this function
- // this.element.scrollTop != scrollTop which makes page to scroll up.
- this.setScrollTop = function(scrollTop) {
- this.element.scrollTop = scrollTop;
- };
-
-}).call(ScrollBar.prototype);
-
-exports.ScrollBar = ScrollBar;
-});
-
-ace.define('ace/renderloop', ['require', 'exports', 'module' , 'ace/lib/event'], function(require, exports, module) {
-
-
-var event = require("./lib/event");
-
-/** internal, hide
- * new RenderLoop(onRender, win)
- *
- *
- *
-**/
-var RenderLoop = function(onRender, win) {
- this.onRender = onRender;
- this.pending = false;
- this.changes = 0;
- this.window = win || window;
-};
-
-(function() {
-
- /** internal, hide
- * RenderLoop.schedule(change)
- * - change (Array):
- *
- *
- **/
- this.schedule = function(change) {
- //this.onRender(change);
- //return;
- this.changes = this.changes | change;
- if (!this.pending) {
- this.pending = true;
- var _self = this;
- event.nextTick(function() {
- _self.pending = false;
- var changes;
- while (changes = _self.changes) {
- _self.changes = 0;
- _self.onRender(changes);
- }
- }, this.window);
- }
- };
-
-}).call(RenderLoop.prototype);
-
-exports.RenderLoop = RenderLoop;
-});
-ace.define("text!ace/css/editor.css", [], ".ace_editor {\n" +
- " position: absolute;\n" +
- " overflow: hidden;\n" +
- " font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Droid Sans Mono', 'Consolas', monospace;\n" +
- " font-size: 12px;\n" +
- "}\n" +
- "\n" +
- ".ace_scroller {\n" +
- " position: absolute;\n" +
- " overflow: hidden;\n" +
- "}\n" +
- "\n" +
- ".ace_content {\n" +
- " position: absolute;\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- " cursor: text;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter {\n" +
- " position: absolute;\n" +
- " overflow : hidden;\n" +
- " height: 100%;\n" +
- " width: auto;\n" +
- " cursor: default;\n" +
- " z-index: 4;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter_active_line {\n" +
- " position: absolute;\n" +
- " left: 0;\n" +
- " right: 0;\n" +
- "}\n" +
- "\n" +
- ".ace_scroller.horscroll {\n" +
- " box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter-cell {\n" +
- " padding-left: 19px;\n" +
- " padding-right: 6px;\n" +
- " background-repeat: no-repeat;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter-cell.ace_error {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");\n" +
- " background-repeat: no-repeat;\n" +
- " background-position: 2px center;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter-cell.ace_warning {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");\n" +
- " background-position: 2px center;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter-cell.ace_info {\n" +
- " background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");\n" +
- " background-position: 2px center;\n" +
- "}\n" +
- ".ace_dark .ace_gutter-cell.ace_info {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");\n" +
- "}\n" +
- "\n" +
- ".ace_editor .ace_sb {\n" +
- " position: absolute;\n" +
- " overflow-x: hidden;\n" +
- " overflow-y: scroll;\n" +
- " right: 0;\n" +
- "}\n" +
- "\n" +
- ".ace_editor .ace_sb div {\n" +
- " position: absolute;\n" +
- " width: 1px;\n" +
- " left: 0;\n" +
- "}\n" +
- "\n" +
- ".ace_editor .ace_print_margin_layer {\n" +
- " z-index: 0;\n" +
- " position: absolute;\n" +
- " overflow: hidden;\n" +
- " margin: 0;\n" +
- " left: 0;\n" +
- " height: 100%;\n" +
- " width: 100%;\n" +
- "}\n" +
- "\n" +
- ".ace_editor .ace_print_margin {\n" +
- " position: absolute;\n" +
- " height: 100%;\n" +
- "}\n" +
- "\n" +
- ".ace_editor > textarea {\n" +
- " position: absolute;\n" +
- " z-index: 0;\n" +
- " width: 0.5em;\n" +
- " height: 1em;\n" +
- " opacity: 0;\n" +
- " background: transparent;\n" +
- " appearance: none;\n" +
- " -moz-appearance: none;\n" +
- " border: none;\n" +
- " resize: none;\n" +
- " outline: none;\n" +
- " overflow: hidden;\n" +
- "}\n" +
- "\n" +
- ".ace_editor > textarea.ace_composition {\n" +
- " background: #fff;\n" +
- " color: #000;\n" +
- " z-index: 1000;\n" +
- " opacity: 1;\n" +
- " border: solid lightgray 1px;\n" +
- " margin: -1px\n" +
- "}\n" +
- "\n" +
- ".ace_layer {\n" +
- " z-index: 1;\n" +
- " position: absolute;\n" +
- " overflow: hidden;\n" +
- " white-space: nowrap;\n" +
- " height: 100%;\n" +
- " width: 100%;\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- " /* setting pointer-events: auto; on node under the mouse, which changes\n" +
- " during scroll, will break mouse wheel scrolling in Safari */\n" +
- " pointer-events: none;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter .ace_layer {\n" +
- " position: relative;\n" +
- " width: auto;\n" +
- " text-align: right;\n" +
- " pointer-events: auto;\n" +
- "}\n" +
- "\n" +
- ".ace_text-layer {\n" +
- " color: black;\n" +
- " font: inherit !important;\n" +
- "}\n" +
- "\n" +
- ".ace_cjk {\n" +
- " display: inline-block;\n" +
- " text-align: center;\n" +
- "}\n" +
- "\n" +
- ".ace_cursor-layer {\n" +
- " z-index: 4;\n" +
- "}\n" +
- "\n" +
- ".ace_cursor {\n" +
- " z-index: 4;\n" +
- " position: absolute;\n" +
- "}\n" +
- "\n" +
- ".ace_cursor.ace_hidden {\n" +
- " opacity: 0.2;\n" +
- "}\n" +
- "\n" +
- ".ace_editor.multiselect .ace_cursor {\n" +
- " border-left-width: 1px;\n" +
- "}\n" +
- "\n" +
- ".ace_line {\n" +
- " white-space: nowrap;\n" +
- "}\n" +
- "\n" +
- ".ace_marker-layer .ace_step {\n" +
- " position: absolute;\n" +
- " z-index: 3;\n" +
- "}\n" +
- "\n" +
- ".ace_marker-layer .ace_selection {\n" +
- " position: absolute;\n" +
- " z-index: 5;\n" +
- "}\n" +
- "\n" +
- ".ace_marker-layer .ace_bracket {\n" +
- " position: absolute;\n" +
- " z-index: 6;\n" +
- "}\n" +
- "\n" +
- ".ace_marker-layer .ace_active_line {\n" +
- " position: absolute;\n" +
- " z-index: 2;\n" +
- "}\n" +
- "\n" +
- ".ace_marker-layer .ace_selected_word {\n" +
- " position: absolute;\n" +
- " z-index: 4;\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- "}\n" +
- "\n" +
- ".ace_line .ace_fold {\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- "\n" +
- " display: inline-block;\n" +
- " height: 11px;\n" +
- " margin-top: -2px;\n" +
- " vertical-align: middle;\n" +
- "\n" +
- " background-image:\n" +
- " url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),\n" +
- " url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");\n" +
- " background-repeat: no-repeat, repeat-x;\n" +
- " background-position: center center, top left;\n" +
- " color: transparent;\n" +
- "\n" +
- " border: 1px solid black;\n" +
- " -moz-border-radius: 2px;\n" +
- " -webkit-border-radius: 2px;\n" +
- " border-radius: 2px;\n" +
- "\n" +
- " cursor: pointer;\n" +
- " pointer-events: auto;\n" +
- "}\n" +
- "\n" +
- ".ace_dark .ace_fold {\n" +
- "}\n" +
- "\n" +
- ".ace_fold:hover{\n" +
- " background-image:\n" +
- " url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),\n" +
- " url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");\n" +
- " background-repeat: no-repeat, repeat-x;\n" +
- " background-position: center center, top left;\n" +
- "}\n" +
- "\n" +
- ".ace_dragging .ace_content {\n" +
- " cursor: move;\n" +
- "}\n" +
- "\n" +
- ".ace_gutter_tooltip {\n" +
- " background-color: #FFFFD5;\n" +
- " border: 1px solid gray;\n" +
- " box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);\n" +
- " color: black;\n" +
- " display: inline-block;\n" +
- " padding: 4px;\n" +
- " position: absolute;\n" +
- " z-index: 300;\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- " cursor: default;\n" +
- "}\n" +
- "\n" +
- ".ace_folding-enabled > .ace_gutter-cell {\n" +
- " padding-right: 13px;\n" +
- "}\n" +
- "\n" +
- ".ace_fold-widget {\n" +
- " box-sizing: border-box;\n" +
- " -moz-box-sizing: border-box;\n" +
- " -webkit-box-sizing: border-box;\n" +
- "\n" +
- " margin: 0 -12px 0 1px;\n" +
- " display: inline-block;\n" +
- " width: 11px;\n" +
- " vertical-align: top;\n" +
- "\n" +
- " background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");\n" +
- " background-repeat: no-repeat;\n" +
- " background-position: center;\n" +
- "\n" +
- " border-radius: 3px;\n" +
- " \n" +
- " border: 1px solid transparent;\n" +
- "}\n" +
- "\n" +
- ".ace_fold-widget.end {\n" +
- " background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");\n" +
- "}\n" +
- "\n" +
- ".ace_fold-widget.closed {\n" +
- " background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");\n" +
- "}\n" +
- "\n" +
- ".ace_fold-widget:hover {\n" +
- " border: 1px solid rgba(0, 0, 0, 0.3);\n" +
- " background-color: rgba(255, 255, 255, 0.2);\n" +
- " -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n" +
- " -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n" +
- " box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n" +
- "}\n" +
- "\n" +
- ".ace_fold-widget:active {\n" +
- " border: 1px solid rgba(0, 0, 0, 0.4);\n" +
- " background-color: rgba(0, 0, 0, 0.05);\n" +
- " -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n" +
- " -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n" +
- " box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n" +
- "}\n" +
- "/**\n" +
- " * Dark version for fold widgets\n" +
- " */\n" +
- ".ace_dark .ace_fold-widget {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n" +
- "}\n" +
- ".ace_dark .ace_fold-widget.end {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n" +
- "}\n" +
- ".ace_dark .ace_fold-widget.closed {\n" +
- " background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n" +
- "}\n" +
- ".ace_dark .ace_fold-widget:hover {\n" +
- " box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n" +
- " background-color: rgba(255, 255, 255, 0.1);\n" +
- "}\n" +
- ".ace_dark .ace_fold-widget:active {\n" +
- " -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n" +
- " -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n" +
- " box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n" +
- "}\n" +
- " \n" +
- " \n" +
- " \n" +
- ".ace_fold-widget.invalid {\n" +
- " background-color: #FFB4B4;\n" +
- " border-color: #DE5555;\n" +
- "}\n" +
- "\n" +
- ".ace_fade-fold-widgets .ace_fold-widget {\n" +
- " -moz-transition: opacity 0.4s ease 0.05s;\n" +
- " -webkit-transition: opacity 0.4s ease 0.05s;\n" +
- " -o-transition: opacity 0.4s ease 0.05s;\n" +
- " -ms-transition: opacity 0.4s ease 0.05s;\n" +
- " transition: opacity 0.4s ease 0.05s;\n" +
- " opacity: 0;\n" +
- "}\n" +
- "\n" +
- ".ace_fade-fold-widgets:hover .ace_fold-widget {\n" +
- " -moz-transition: opacity 0.05s ease 0.05s;\n" +
- " -webkit-transition: opacity 0.05s ease 0.05s;\n" +
- " -o-transition: opacity 0.05s ease 0.05s;\n" +
- " -ms-transition: opacity 0.05s ease 0.05s;\n" +
- " transition: opacity 0.05s ease 0.05s;\n" +
- " opacity:1;\n" +
- "}\n" +
- "\n" +
- ".ace_underline {\n" +
- " text-decoration: underline;\n" +
- "}\n" +
- "\n" +
- ".ace_bold {\n" +
- " font-weight: bold;\n" +
- "}\n" +
- "\n" +
- ".ace_italic {\n" +
- " font-style: italic;\n" +
- "}\n" +
- "");
-
-ace.define('ace/multi_select', ['require', 'exports', 'module' , 'ace/range_list', 'ace/range', 'ace/selection', 'ace/mouse/multi_select_handler', 'ace/lib/event', 'ace/lib/lang', 'ace/commands/multi_select_commands', 'ace/search', 'ace/edit_session', 'ace/editor'], function(require, exports, module) {
-
-var RangeList = require("./range_list").RangeList;
-var Range = require("./range").Range;
-var Selection = require("./selection").Selection;
-var onMouseDown = require("./mouse/multi_select_handler").onMouseDown;
-var event = require("./lib/event");
-var lang = require("./lib/lang");
-var commands = require("./commands/multi_select_commands");
-exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);
-
-// Todo: session.find or editor.findVolatile that returns range
-var Search = require("./search").Search;
-var search = new Search();
-
-function find(session, needle, dir) {
- search.$options.wrap = true;
- search.$options.needle = needle;
- search.$options.backwards = dir == -1;
- return search.find(session);
-}
-
-// extend EditSession
-var EditSession = require("./edit_session").EditSession;
-(function() {
- this.getSelectionMarkers = function() {
- return this.$selectionMarkers;
- };
-}).call(EditSession.prototype);
-
-// extend Selection
-(function() {
- // list of ranges in reverse addition order
- this.ranges = null;
-
- // automatically sorted list of ranges
- this.rangeList = null;
- this.addRange = function(range, $blockChangeEvents) {
- if (!range)
- return;
-
- if (!this.inMultiSelectMode && this.rangeCount == 0) {
- var oldRange = this.toOrientedRange();
- if (range.intersects(oldRange))
- return $blockChangeEvents || this.fromOrientedRange(range);
-
- this.rangeList.add(oldRange);
- this.$onAddRange(oldRange);
- }
-
- if (!range.cursor)
- range.cursor = range.end;
-
- var removed = this.rangeList.add(range);
-
- this.$onAddRange(range);
-
- if (removed.length)
- this.$onRemoveRange(removed);
-
- if (this.rangeCount > 1 && !this.inMultiSelectMode) {
- this._emit("multiSelect");
- this.inMultiSelectMode = true;
- this.session.$undoSelect = false;
- this.rangeList.attach(this.session);
- }
-
- return $blockChangeEvents || this.fromOrientedRange(range);
- };
-
- this.toSingleRange = function(range) {
- range = range || this.ranges[0];
- var removed = this.rangeList.removeAll();
- if (removed.length)
- this.$onRemoveRange(removed);
-
- range && this.fromOrientedRange(range);
- };
- this.substractPoint = function(pos) {
- var removed = this.rangeList.substractPoint(pos);
- if (removed) {
- this.$onRemoveRange(removed);
- return removed[0];
- }
- };
- this.mergeOverlappingRanges = function() {
- var removed = this.rangeList.merge();
- if (removed.length)
- this.$onRemoveRange(removed);
- else if(this.ranges[0])
- this.fromOrientedRange(this.ranges[0]);
- };
-
- this.$onAddRange = function(range) {
- this.rangeCount = this.rangeList.ranges.length;
- this.ranges.unshift(range);
- this._emit("addRange", {range: range});
- };
-
- this.$onRemoveRange = function(removed) {
- this.rangeCount = this.rangeList.ranges.length;
- if (this.rangeCount == 1 && this.inMultiSelectMode) {
- var lastRange = this.rangeList.ranges.pop();
- removed.push(lastRange);
- this.rangeCount = 0;
- }
-
- for (var i = removed.length; i--; ) {
- var index = this.ranges.indexOf(removed[i]);
- this.ranges.splice(index, 1);
- }
-
- this._emit("removeRange", {ranges: removed});
-
- if (this.rangeCount == 0 && this.inMultiSelectMode) {
- this.inMultiSelectMode = false;
- this._emit("singleSelect");
- this.session.$undoSelect = true;
- this.rangeList.detach(this.session);
- }
-
- lastRange = lastRange || this.ranges[0];
- if (lastRange && !lastRange.isEqual(this.getRange()))
- this.fromOrientedRange(lastRange);
- };
-
- // adds multicursor support to selection
- this.$initRangeList = function() {
- if (this.rangeList)
- return;
-
- this.rangeList = new RangeList();
- this.ranges = [];
- this.rangeCount = 0;
- };
-
- this.getAllRanges = function() {
- return this.rangeList.ranges.concat();
- };
-
- this.splitIntoLines = function () {
- if (this.rangeCount > 1) {
- var ranges = this.rangeList.ranges;
- var lastRange = ranges[ranges.length - 1];
- var range = Range.fromPoints(ranges[0].start, lastRange.end);
-
- this.toSingleRange();
- this.setSelectionRange(range, lastRange.cursor == lastRange.start);
- } else {
- var range = this.getRange();
- var isBackwards = this.isBackwards();
- var startRow = range.start.row;
- var endRow = range.end.row;
- if (startRow == endRow) {
- if (isBackwards)
- var start = range.end, end = range.start;
- else
- var start = range.start, end = range.end;
-
- this.addRange(Range.fromPoints(end, end));
- this.addRange(Range.fromPoints(start, start));
- return;
- }
-
- var rectSel = [];
- var r = this.getLineRange(startRow, true);
- r.start.column = range.start.column;
- rectSel.push(r);
-
- for (var i = startRow + 1; i < endRow; i++)
- rectSel.push(this.getLineRange(i, true));
-
- r = this.getLineRange(endRow, true);
- r.end.column = range.end.column;
- rectSel.push(r);
-
- rectSel.forEach(this.addRange, this);
- }
- };
-
- this.toggleBlockSelection = function () {
- if (this.rangeCount > 1) {
- var ranges = this.rangeList.ranges;
- var lastRange = ranges[ranges.length - 1];
- var range = Range.fromPoints(ranges[0].start, lastRange.end);
-
- this.toSingleRange();
- this.setSelectionRange(range, lastRange.cursor == lastRange.start);
- } else {
- var cursor = this.session.documentToScreenPosition(this.selectionLead);
- var anchor = this.session.documentToScreenPosition(this.selectionAnchor);
-
- var rectSel = this.rectangularRangeBlock(cursor, anchor);
- rectSel.forEach(this.addRange, this);
- }
- };
- this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {
- var rectSel = [];
-
- var xBackwards = screenCursor.column < screenAnchor.column;
- if (xBackwards) {
- var startColumn = screenCursor.column;
- var endColumn = screenAnchor.column;
- } else {
- var startColumn = screenAnchor.column;
- var endColumn = screenCursor.column;
- }
-
- var yBackwards = screenCursor.row < screenAnchor.row;
- if (yBackwards) {
- var startRow = screenCursor.row;
- var endRow = screenAnchor.row;
- } else {
- var startRow = screenAnchor.row;
- var endRow = screenCursor.row;
- }
-
- if (startColumn < 0)
- startColumn = 0;
- if (startRow < 0)
- startRow = 0;
-
- if (startRow == endRow)
- includeEmptyLines = true;
-
- for (var row = startRow; row <= endRow; row++) {
- var range = Range.fromPoints(
- this.session.screenToDocumentPosition(row, startColumn),
- this.session.screenToDocumentPosition(row, endColumn)
- );
- if (range.isEmpty()) {
- if (docEnd && isSamePoint(range.end, docEnd))
- break;
- var docEnd = range.end;
- }
- range.cursor = xBackwards ? range.start : range.end;
- rectSel.push(range);
- }
-
- if (yBackwards)
- rectSel.reverse();
-
- if (!includeEmptyLines) {
- var end = rectSel.length - 1;
- while (rectSel[end].isEmpty() && end > 0)
- end--;
- if (end > 0) {
- var start = 0;
- while (rectSel[start].isEmpty())
- start++;
- }
- for (var i = end; i >= start; i--) {
- if (rectSel[i].isEmpty())
- rectSel.splice(i, 1);
- }
- }
-
- return rectSel;
- };
-}).call(Selection.prototype);
-
-// extend Editor
-var Editor = require("./editor").Editor;
-(function() {
-
- /** extension
- * Editor.updateSelectionMarkers()
- *
- * Updates the cursor and marker layers.
- **/
- this.updateSelectionMarkers = function() {
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- };
- this.addSelectionMarker = function(orientedRange) {
- if (!orientedRange.cursor)
- orientedRange.cursor = orientedRange.end;
-
- var style = this.getSelectionStyle();
- orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style);
-
- this.session.$selectionMarkers.push(orientedRange);
- this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
- return orientedRange;
- };
- this.removeSelectionMarker = function(range) {
- if (!range.marker)
- return;
- this.session.removeMarker(range.marker);
- var index = this.session.$selectionMarkers.indexOf(range);
- if (index != -1)
- this.session.$selectionMarkers.splice(index, 1);
- this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
- };
-
- this.removeSelectionMarkers = function(ranges) {
- var markerList = this.session.$selectionMarkers;
- for (var i = ranges.length; i--; ) {
- var range = ranges[i];
- if (!range.marker)
- continue;
- this.session.removeMarker(range.marker);
- var index = markerList.indexOf(range);
- if (index != -1)
- markerList.splice(index, 1);
- }
- this.session.selectionMarkerCount = markerList.length;
- };
-
- this.$onAddRange = function(e) {
- this.addSelectionMarker(e.range);
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- };
-
- this.$onRemoveRange = function(e) {
- this.removeSelectionMarkers(e.ranges);
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- };
-
- this.$onMultiSelect = function(e) {
- if (this.inMultiSelectMode)
- return;
- this.inMultiSelectMode = true;
-
- this.setStyle("multiselect");
- this.keyBinding.addKeyboardHandler(commands.keyboardHandler);
- this.commands.on("exec", this.$onMultiSelectExec);
-
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- };
-
- this.$onSingleSelect = function(e) {
- if (this.session.multiSelect.inVirtualMode)
- return;
- this.inMultiSelectMode = false;
-
- this.unsetStyle("multiselect");
- this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);
-
- this.commands.removeEventListener("exec", this.$onMultiSelectExec);
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- };
-
- this.$onMultiSelectExec = function(e) {
- var command = e.command;
- var editor = e.editor;
- if (!editor.multiSelect)
- return;
- if (!command.multiSelectAction) {
- command.exec(editor, e.args || {});
- editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());
- editor.multiSelect.mergeOverlappingRanges();
- } else if (command.multiSelectAction == "forEach") {
- editor.forEachSelection(command, e.args);
- } else if (command.multiSelectAction == "single") {
- editor.exitMultiSelectMode();
- command.exec(editor, e.args || {});
- } else {
- command.multiSelectAction(editor, e.args || {});
- }
- e.preventDefault();
- };
- this.forEachSelection = function(cmd, args) {
- if (this.inVirtualSelectionMode)
- return;
-
- var session = this.session;
- var selection = this.selection;
- var rangeList = selection.rangeList;
-
- var reg = selection._eventRegistry;
- selection._eventRegistry = {};
-
- var tmpSel = new Selection(session);
- this.inVirtualSelectionMode = true;
- for (var i = rangeList.ranges.length; i--;) {
- tmpSel.fromOrientedRange(rangeList.ranges[i]);
- this.selection = session.selection = tmpSel;
- cmd.exec(this, args || {});
- tmpSel.toOrientedRange(rangeList.ranges[i]);
- }
- tmpSel.detach();
-
- this.selection = session.selection = selection;
- this.inVirtualSelectionMode = false;
- selection._eventRegistry = reg;
- selection.mergeOverlappingRanges();
-
- this.onCursorChange();
- this.onSelectionChange();
- };
- this.exitMultiSelectMode = function() {
- if (this.inVirtualSelectionMode)
- return;
- this.multiSelect.toSingleRange();
- };
-
- this.getCopyText = function() {
- var text = "";
- if (this.inMultiSelectMode) {
- var ranges = this.multiSelect.rangeList.ranges;
- text = [];
- for (var i = 0; i < ranges.length; i++) {
- text.push(this.session.getTextRange(ranges[i]));
- }
- text = text.join(this.session.getDocument().getNewLineCharacter());
- } else if (!this.selection.isEmpty()) {
- text = this.session.getTextRange(this.getSelectionRange());
- }
-
- return text;
- };
-
- // todo this should change when paste becomes a command
- this.onPaste = function(text) {
- if (this.$readOnly)
- return;
-
- this._emit("paste", text);
- if (!this.inMultiSelectMode)
- return this.insert(text);
-
- var lines = text.split(/\r\n|\r|\n/);
- var ranges = this.selection.rangeList.ranges;
-
- if (lines.length > ranges.length || (lines.length <= 2 || !lines[1]))
- return this.commands.exec("insertstring", this, text);
-
- for (var i = ranges.length; i--; ) {
- var range = ranges[i];
- if (!range.isEmpty())
- this.session.remove(range);
-
- this.session.insert(range.start, lines[i]);
- }
- };
- this.findAll = function(needle, options, additive) {
- options = options || {};
- options.needle = needle || options.needle;
- this.$search.set(options);
-
- var ranges = this.$search.findAll(this.session);
- if (!ranges.length)
- return 0;
-
- this.$blockScrolling += 1;
- var selection = this.multiSelect;
-
- if (!additive)
- selection.toSingleRange(ranges[0]);
-
- for (var i = ranges.length; i--; )
- selection.addRange(ranges[i], true);
-
- this.$blockScrolling -= 1;
-
- return ranges.length;
- };
-
- // commands
- /** extension
- * Editor.selectMoreLines(dir, skip)
- * - dir (Number): The direction of lines to select: -1 for up, 1 for down
- * - skip (Boolean): If `true`, removes the active selection range
- *
- * Adds a cursor above or below the active cursor.
- **/
- this.selectMoreLines = function(dir, skip) {
- var range = this.selection.toOrientedRange();
- var isBackwards = range.cursor == range.end;
-
- var screenLead = this.session.documentToScreenPosition(range.cursor);
- if (this.selection.$desiredColumn)
- screenLead.column = this.selection.$desiredColumn;
-
- var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);
-
- if (!range.isEmpty()) {
- var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);
- var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);
- } else {
- var anchor = lead;
- }
-
- if (isBackwards) {
- var newRange = Range.fromPoints(lead, anchor);
- newRange.cursor = newRange.start;
- } else {
- var newRange = Range.fromPoints(anchor, lead);
- newRange.cursor = newRange.end;
- }
-
- newRange.desiredColumn = screenLead.column;
- if (!this.selection.inMultiSelectMode) {
- this.selection.addRange(range);
- } else {
- if (skip)
- var toRemove = range.cursor;
- }
-
- this.selection.addRange(newRange);
- if (toRemove)
- this.selection.substractPoint(toRemove);
- };
- this.transposeSelections = function(dir) {
- var session = this.session;
- var sel = session.multiSelect;
- var all = sel.ranges;
-
- for (var i = all.length; i--; ) {
- var range = all[i];
- if (range.isEmpty()) {
- var tmp = session.getWordRange(range.start.row, range.start.column);
- range.start.row = tmp.start.row;
- range.start.column = tmp.start.column;
- range.end.row = tmp.end.row;
- range.end.column = tmp.end.column;
- }
- }
- sel.mergeOverlappingRanges();
-
- var words = [];
- for (var i = all.length; i--; ) {
- var range = all[i];
- words.unshift(session.getTextRange(range));
- }
-
- if (dir < 0)
- words.unshift(words.pop());
- else
- words.push(words.shift());
-
- for (var i = all.length; i--; ) {
- var range = all[i];
- var tmp = range.clone();
- session.replace(range, words[i]);
- range.start.row = tmp.start.row;
- range.start.column = tmp.start.column;
- }
- }
-
- /** extension
- * Editor.selectMore(dir, skip)
- * - dir (Number): The direction of lines to select: -1 for up, 1 for down
- * - skip (Boolean): If `true`, removes the active selection range
- *
- * Finds the next occurrence of text in an active selection and adds it to the selections.
- **/
- this.selectMore = function(dir, skip) {
- var session = this.session;
- var sel = session.multiSelect;
-
- var range = sel.toOrientedRange();
- if (range.isEmpty()) {
- var range = session.getWordRange(range.start.row, range.start.column);
- range.cursor = range.end;
- this.multiSelect.addRange(range);
- }
- var needle = session.getTextRange(range);
-
- var newRange = find(session, needle, dir);
- if (newRange) {
- newRange.cursor = dir == -1 ? newRange.start : newRange.end;
- this.multiSelect.addRange(newRange);
- }
- if (skip)
- this.multiSelect.substractPoint(range.cursor);
- };
- this.alignCursors = function() {
- var session = this.session;
- var sel = session.multiSelect;
- var ranges = sel.ranges;
-
- if (!ranges.length) {
- var range = this.selection.getRange();
- var fr = range.start.row, lr = range.end.row;
- var lines = this.session.doc.removeLines(fr, lr);
- lines = this.$reAlignText(lines);
- this.session.doc.insertLines(fr, lines);
- range.start.column = 0;
- range.end.column = lines[lines.length - 1].length;
- this.selection.setRange(range);
- } else {
- // filter out ranges on same row
- var row = -1;
- var sameRowRanges = ranges.filter(function(r) {
- if (r.cursor.row == row)
- return true;
- row = r.cursor.row;
- });
- sel.$onRemoveRange(sameRowRanges);
-
- var maxCol = 0;
- var minSpace = Infinity;
- var spaceOffsets = ranges.map(function(r) {
- var p = r.cursor;
- var line = session.getLine(p.row);
- var spaceOffset = line.substr(p.column).search(/\S/g);
- if (spaceOffset == -1)
- spaceOffset = 0;
-
- if (p.column > maxCol)
- maxCol = p.column;
- if (spaceOffset < minSpace)
- minSpace = spaceOffset;
- return spaceOffset;
- });
- ranges.forEach(function(r, i) {
- var p = r.cursor;
- var l = maxCol - p.column;
- var d = spaceOffsets[i] - minSpace;
- if (l > d)
- session.insert(p, lang.stringRepeat(" ", l - d));
- else
- session.remove(new Range(p.row, p.column, p.row, p.column - l + d));
-
- r.start.column = r.end.column = maxCol;
- r.start.row = r.end.row = p.row;
- r.cursor = r.end;
- });
- sel.fromOrientedRange(ranges[0]);
- this.renderer.updateCursor();
- this.renderer.updateBackMarkers();
- }
- };
-
- this.$reAlignText = function(lines) {
- var isLeftAligned = true, isRightAligned = true;
- var startW, textW, endW;
-
- return lines.map(function(line) {
- var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/);
- if (!m)
- return [line];
-
- if (startW == null) {
- startW = m[1].length;
- textW = m[2].length;
- endW = m[3].length;
- return m;
- }
-
- if (startW + textW + endW != m[1].length + m[2].length + m[3].length)
- isRightAligned = false;
- if (startW != m[1].length)
- isLeftAligned = false;
-
- if (startW > m[1].length)
- startW = m[1].length;
- if (textW < m[2].length)
- textW = m[2].length;
- if (endW > m[3].length)
- endW = m[3].length;
-
- return m;
- }).map(isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);
-
- function strRepeat(n, ch) {
- return Array(n + 1).join(ch)
- }
-
- function alignLeft(m) {
- return !m[2] ? m[0] : strRepeat(startW, " ") + m[2]
- + strRepeat(textW - m[2].length + endW, " ")
- + m[4].replace(/^([=:])\s+/, "$1 ")
- }
- function alignRight(m) {
- return !m[2] ? m[0] : strRepeat(startW + textW - m[2].length, " ") + m[2]
- + strRepeat(endW, " ")
- + m[4].replace(/^([=:])\s+/, "$1 ")
- }
- function unAlign(m) {
- return !m[2] ? m[0] : strRepeat(startW, " ") + m[2]
- + strRepeat(endW, " ")
- + m[4].replace(/^([=:])\s+/, "$1 ")
- }
- }
-}).call(Editor.prototype);
-
-
-function isSamePoint(p1, p2) {
- return p1.row == p2.row && p1.column == p2.column;
-}
-
-// patch
-// adds multicursor support to a session
-exports.onSessionChange = function(e) {
- var session = e.session;
- if (!session.multiSelect) {
- session.$selectionMarkers = [];
- session.selection.$initRangeList();
- session.multiSelect = session.selection;
- }
- this.multiSelect = session.multiSelect;
-
- var oldSession = e.oldSession;
- if (oldSession) {
- // todo use events
- if (oldSession.multiSelect && oldSession.multiSelect.editor == this)
- oldSession.multiSelect.editor = null;
-
- session.multiSelect.removeEventListener("addRange", this.$onAddRange);
- session.multiSelect.removeEventListener("removeRange", this.$onRemoveRange);
- session.multiSelect.removeEventListener("multiSelect", this.$onMultiSelect);
- session.multiSelect.removeEventListener("singleSelect", this.$onSingleSelect);
- }
-
- session.multiSelect.on("addRange", this.$onAddRange);
- session.multiSelect.on("removeRange", this.$onRemoveRange);
- session.multiSelect.on("multiSelect", this.$onMultiSelect);
- session.multiSelect.on("singleSelect", this.$onSingleSelect);
-
- // this.$onSelectionChange = this.onSelectionChange.bind(this);
-
- if (this.inMultiSelectMode != session.selection.inMultiSelectMode) {
- if (session.selection.inMultiSelectMode)
- this.$onMultiSelect();
- else
- this.$onSingleSelect();
- }
-};
-
-// MultiSelect(editor)
-// adds multiple selection support to the editor
-// (note: should be called only once for each editor instance)
-function MultiSelect(editor) {
- editor.$onAddRange = editor.$onAddRange.bind(editor);
- editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);
- editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);
- editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);
-
- exports.onSessionChange.call(editor, editor);
- editor.on("changeSession", exports.onSessionChange.bind(editor));
-
- editor.on("mousedown", onMouseDown);
- editor.commands.addCommands(commands.defaultCommands);
-
- addAltCursorListeners(editor);
-}
-
-function addAltCursorListeners(editor){
- var el = editor.textInput.getElement();
- var altCursor = false;
- var contentEl = editor.renderer.content;
- event.addListener(el, "keydown", function(e) {
- if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) {
- if (!altCursor) {
- contentEl.style.cursor = "crosshair";
- altCursor = true;
- }
- } else if (altCursor) {
- contentEl.style.cursor = "";
- }
- });
-
- event.addListener(el, "keyup", reset);
- event.addListener(el, "blur", reset);
- function reset() {
- if (altCursor) {
- contentEl.style.cursor = "";
- altCursor = false;
- }
- }
-}
-
-exports.MultiSelect = MultiSelect;
-
-});
-
-ace.define('ace/range_list', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-
-var RangeList = function() {
- this.ranges = [];
-};
-
-(function() {
- this.comparePoints = function(p1, p2) {
- return p1.row - p2.row || p1.column - p2.column;
- };
-
- this.pointIndex = function(pos, startIndex) {
- var list = this.ranges;
-
- for (var i = startIndex || 0; i < list.length; i++) {
- var range = list[i];
- var cmp = this.comparePoints(pos, range.end);
-
- if (cmp > 0)
- continue;
- if (cmp == 0)
- return i;
- cmp = this.comparePoints(pos, range.start);
- if (cmp >= 0)
- return i;
-
- return -i-1;
- }
- return -i - 1;
- };
-
- this.add = function(range) {
- var startIndex = this.pointIndex(range.start);
- if (startIndex < 0)
- startIndex = -startIndex - 1;
-
- var endIndex = this.pointIndex(range.end, startIndex);
-
- if (endIndex < 0)
- endIndex = -endIndex - 1;
- else
- endIndex++;
-
- return this.ranges.splice(startIndex, endIndex - startIndex, range);
- };
-
- this.addList = function(list) {
- var removed = [];
- for (var i = list.length; i--; ) {
- removed.push.call(removed, this.add(list[i]));
- }
- return removed;
- };
-
- this.substractPoint = function(pos) {
- var i = this.pointIndex(pos);
-
- if (i >= 0)
- return this.ranges.splice(i, 1);
- };
-
- // merge overlapping ranges
- this.merge = function() {
- var removed = [];
- var list = this.ranges;
- var next = list[0], range;
- for (var i = 1; i < list.length; i++) {
- range = next;
- next = list[i];
- var cmp = this.comparePoints(range.end, next.start);
- if (cmp < 0)
- continue;
-
- if (cmp == 0 && !(range.isEmpty() || next.isEmpty()))
- continue;
-
- if (this.comparePoints(range.end, next.end) < 0) {
- range.end.row = next.end.row;
- range.end.column = next.end.column;
- }
-
- list.splice(i, 1);
- removed.push(next);
- next = range;
- i--;
- }
-
- return removed;
- };
-
- this.contains = function(row, column) {
- return this.pointIndex({row: row, column: column}) >= 0;
- };
-
- this.containsPoint = function(pos) {
- return this.pointIndex(pos) >= 0;
- };
-
- this.rangeAtPoint = function(pos) {
- var i = this.pointIndex(pos);
- if (i >= 0)
- return this.ranges[i];
- };
-
-
- this.clipRows = function(startRow, endRow) {
- var list = this.ranges;
- if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)
- return [];
-
- var startIndex = this.pointIndex({row: startRow, column: 0});
- if (startIndex < 0)
- startIndex = -startIndex - 1;
- var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);
- if (endIndex < 0)
- endIndex = -endIndex - 1;
-
- var clipped = [];
- for (var i = startIndex; i < endIndex; i++) {
- clipped.push(list[i]);
- }
- return clipped;
- };
-
- this.removeAll = function() {
- return this.ranges.splice(0, this.ranges.length);
- };
-
- this.attach = function(session) {
- if (this.session)
- this.detach();
-
- this.session = session;
- this.onChange = this.$onChange.bind(this);
-
- this.session.on('change', this.onChange);
- };
-
- this.detach = function() {
- if (!this.session)
- return;
- this.session.removeListener('change', this.onChange);
- this.session = null;
- };
-
- this.$onChange = function(e) {
- var changeRange = e.data.range;
- if (e.data.action[0] == "i"){
- var start = changeRange.start;
- var end = changeRange.end;
- } else {
- var end = changeRange.start;
- var start = changeRange.end;
- }
- var startRow = start.row;
- var endRow = end.row;
- var lineDif = endRow - startRow;
-
- var colDiff = -start.column + end.column;
- var ranges = this.ranges;
-
- for (var i = 0, n = ranges.length; i < n; i++) {
- var r = ranges[i];
- if (r.end.row < startRow)
- continue;
- if (r.start.row > startRow)
- break;
-
- if (r.start.row == startRow && r.start.column >= start.column ) {
- r.start.column += colDiff;
- r.start.row += lineDif;
- }
- if (r.end.row == startRow && r.end.column >= start.column) {
- r.end.column += colDiff;
- r.end.row += lineDif;
- }
- }
-
- if (lineDif != 0 && i < n) {
- for (; i < n; i++) {
- var r = ranges[i];
- r.start.row += lineDif;
- r.end.row += lineDif;
- }
- }
- };
-
-}).call(RangeList.prototype);
-
-exports.RangeList = RangeList;
-});
-
-ace.define('ace/mouse/multi_select_handler', ['require', 'exports', 'module' , 'ace/lib/event'], function(require, exports, module) {
-
-var event = require("../lib/event");
-
-
-// mouse
-function isSamePoint(p1, p2) {
- return p1.row == p2.row && p1.column == p2.column;
-}
-
-function onMouseDown(e) {
- var ev = e.domEvent;
- var alt = ev.altKey;
- var shift = ev.shiftKey;
- var ctrl = e.getAccelKey();
- var button = e.getButton();
-
- if (e.editor.inMultiSelectMode && button == 2) {
- e.editor.textInput.onContextMenu(e.domEvent);
- return;
- }
-
- if (!ctrl && !alt) {
- if (button == 0 && e.editor.inMultiSelectMode)
- e.editor.exitMultiSelectMode();
- return;
- }
-
- var editor = e.editor;
- var selection = editor.selection;
- var isMultiSelect = editor.inMultiSelectMode;
- var pos = e.getDocumentPosition();
- var cursor = selection.getCursor();
- var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));
-
-
- var mouseX = e.x, mouseY = e.y;
- var onMouseSelection = function(e) {
- mouseX = e.clientX;
- mouseY = e.clientY;
- };
-
- var blockSelect = function() {
- var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);
- var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column);
-
- if (isSamePoint(screenCursor, newCursor)
- && isSamePoint(cursor, selection.selectionLead))
- return;
- screenCursor = newCursor;
-
- editor.selection.moveCursorToPosition(cursor);
- editor.selection.clearSelection();
- editor.renderer.scrollCursorIntoView();
-
- editor.removeSelectionMarkers(rectSel);
- rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);
- rectSel.forEach(editor.addSelectionMarker, editor);
- editor.updateSelectionMarkers();
- };
-
- var session = editor.session;
- var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);
- var screenCursor = screenAnchor;
-
-
-
- if (ctrl && !shift && !alt && button == 0) {
- if (!isMultiSelect && inSelection)
- return; // dragging
-
- if (!isMultiSelect) {
- var range = selection.toOrientedRange();
- editor.addSelectionMarker(range);
- }
-
- var oldRange = selection.rangeList.rangeAtPoint(pos);
-
- event.capture(editor.container, function(){}, function() {
- var tmpSel = selection.toOrientedRange();
-
- if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))
- selection.substractPoint(tmpSel.cursor);
- else {
- if (range) {
- editor.removeSelectionMarker(range);
- selection.addRange(range);
- }
- selection.addRange(tmpSel);
- }
- });
-
- } else if (!shift && alt && button == 0) {
- e.stop();
-
- if (isMultiSelect && !ctrl)
- selection.toSingleRange();
- else if (!isMultiSelect && ctrl)
- selection.addRange();
-
- selection.moveCursorToPosition(pos);
- selection.clearSelection();
-
- var rectSel = [];
-
- var onMouseSelectionEnd = function(e) {
- clearInterval(timerId);
- editor.removeSelectionMarkers(rectSel);
- for (var i = 0; i < rectSel.length; i++)
- selection.addRange(rectSel[i]);
- };
-
- var onSelectionInterval = blockSelect;
-
- event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);
- var timerId = setInterval(function() {onSelectionInterval();}, 20);
-
- return e.preventDefault();
- }
-}
-
-
-exports.onMouseDown = onMouseDown;
-
-});
-
-ace.define('ace/commands/multi_select_commands', ['require', 'exports', 'module' , 'ace/keyboard/hash_handler'], function(require, exports, module) {
-
-// commands to enter multiselect mode
-exports.defaultCommands = [{
- name: "addCursorAbove",
- exec: function(editor) { editor.selectMoreLines(-1); },
- bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"},
- readonly: true
-}, {
- name: "addCursorBelow",
- exec: function(editor) { editor.selectMoreLines(1); },
- bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"},
- readonly: true
-}, {
- name: "addCursorAboveSkipCurrent",
- exec: function(editor) { editor.selectMoreLines(-1, true); },
- bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"},
- readonly: true
-}, {
- name: "addCursorBelowSkipCurrent",
- exec: function(editor) { editor.selectMoreLines(1, true); },
- bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"},
- readonly: true
-}, {
- name: "selectMoreBefore",
- exec: function(editor) { editor.selectMore(-1); },
- bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"},
- readonly: true
-}, {
- name: "selectMoreAfter",
- exec: function(editor) { editor.selectMore(1); },
- bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"},
- readonly: true
-}, {
- name: "selectNextBefore",
- exec: function(editor) { editor.selectMore(-1, true); },
- bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"},
- readonly: true
-}, {
- name: "selectNextAfter",
- exec: function(editor) { editor.selectMore(1, true); },
- bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"},
- readonly: true
-}, {
- name: "splitIntoLines",
- exec: function(editor) { editor.multiSelect.splitIntoLines(); },
- bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"},
- readonly: true
-}, {
- name: "alignCursors",
- exec: function(editor) { editor.alignCursors(); },
- bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"}
-}];
-
-// commands active only in multiselect mode
-exports.multiSelectCommands = [{
- name: "singleSelection",
- bindKey: "esc",
- exec: function(editor) { editor.exitMultiSelectMode(); },
- readonly: true,
- isAvailable: function(editor) {return editor && editor.inMultiSelectMode}
-}];
-
-var HashHandler = require("../keyboard/hash_handler").HashHandler;
-exports.keyboardHandler = new HashHandler(exports.multiSelectCommands);
-
-});
-
-ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/config'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var EventEmitter = require("../lib/event_emitter").EventEmitter;
-var config = require("../config");
-
-var WorkerClient = function(topLevelNamespaces, mod, classname) {
-
- this.changeListener = this.changeListener.bind(this);
-
- if (config.get("packaged")) {
- this.$worker = new Worker(config.moduleUrl(mod, "worker"));
- }
- else {
- var workerUrl;
- if (typeof require.supports !== "undefined" && require.supports.indexOf("ucjs2-pinf-0") >= 0) {
- // We are running in the sourcemint loader.
- workerUrl = require.nameToUrl("ace/worker/worker_sourcemint");
- } else {
- // We are running in RequireJS.
- // nameToUrl is renamed to toUrl in requirejs 2
- if (require.nameToUrl && !require.toUrl)
- require.toUrl = require.nameToUrl;
- workerUrl = this.$normalizePath(require.toUrl("ace/worker/worker", null, "_"));
- }
- this.$worker = new Worker(workerUrl);
-
- var tlns = {};
- for (var i=0; i<topLevelNamespaces.length; i++) {
- var ns = topLevelNamespaces[i];
- var path = this.$normalizePath(require.toUrl(ns, null, "_").replace(/.js(\?.*)?$/, ""));
-
- tlns[ns] = path;
- }
- }
-
- this.$worker.postMessage({
- init : true,
- tlns: tlns,
- module: mod,
- classname: classname
- });
-
- this.callbackId = 1;
- this.callbacks = {};
-
- var _self = this;
- this.$worker.onerror = function(e) {
- window.console && console.log && console.log(e);
- throw e;
- };
- this.$worker.onmessage = function(e) {
- var msg = e.data;
- switch(msg.type) {
- case "log":
- window.console && console.log && console.log(msg.data);
- break;
-
- case "event":
- _self._emit(msg.name, {data: msg.data});
- break;
-
- case "call":
- var callback = _self.callbacks[msg.id];
- if (callback) {
- callback(msg.data);
- delete _self.callbacks[msg.id];
- }
- break;
- }
- };
-};
-
-(function(){
-
- oop.implement(this, EventEmitter);
-
- this.$normalizePath = function(path) {
- if (!location.host) // needed for file:// protocol
- return path;
- path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
- path = location.protocol + "//" + location.host
- // paths starting with a slash are relative to the root (host)
- + (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
- + "/" + path.replace(/^[\/]+/, "");
- return path;
- };
-
- this.terminate = function() {
- this._emit("terminate", {});
- this.$worker.terminate();
- this.$worker = null;
- this.$doc.removeEventListener("change", this.changeListener);
- this.$doc = null;
- };
-
- this.send = function(cmd, args) {
- this.$worker.postMessage({command: cmd, args: args});
- };
-
- this.call = function(cmd, args, callback) {
- if (callback) {
- var id = this.callbackId++;
- this.callbacks[id] = callback;
- args.push(id);
- }
- this.send(cmd, args);
- };
-
- this.emit = function(event, data) {
- try {
- // firefox refuses to clone objects which have function properties
- // TODO: cleanup event
- this.$worker.postMessage({event: event, data: {data: data.data}});
- }
- catch(ex) {}
- };
-
- this.attachToDocument = function(doc) {
- if(this.$doc)
- this.terminate();
-
- this.$doc = doc;
- this.call("setValue", [doc.getValue()]);
- doc.on("change", this.changeListener);
- };
-
- this.changeListener = function(e) {
- e.range = {
- start: e.data.range.start,
- end: e.data.range.end
- };
- this.emit("change", e);
- };
-
-}).call(WorkerClient.prototype);
-
-exports.WorkerClient = WorkerClient;
-
-});
-
-ace.define('ace/keyboard/state_handler', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-// If you're developing a new keymapping and want to get an idea what's going
-// on, then enable debugging.
-var DEBUG = false;
-
-function StateHandler(keymapping) {
- this.keymapping = this.$buildKeymappingRegex(keymapping);
-}
-
-StateHandler.prototype = {
- /*
- * Build the RegExp from the keymapping as RegExp can't stored directly
- * in the metadata JSON and as the RegExp used to match the keys/buffer
- * need to be adapted.
- */
- $buildKeymappingRegex: function(keymapping) {
- for (var state in keymapping) {
- this.$buildBindingsRegex(keymapping[state]);
- }
- return keymapping;
- },
-
- $buildBindingsRegex: function(bindings) {
- // Escape a given Regex string.
- bindings.forEach(function(binding) {
- if (binding.key) {
- binding.key = new RegExp('^' + binding.key + '$');
- } else if (Array.isArray(binding.regex)) {
- if (!('key' in binding))
- binding.key = new RegExp('^' + binding.regex[1] + '$');
- binding.regex = new RegExp(binding.regex.join('') + '$');
- } else if (binding.regex) {
- binding.regex = new RegExp(binding.regex + '$');
- }
- });
- },
-
- $composeBuffer: function(data, hashId, key, e) {
- // Initialize the data object.
- if (data.state == null || data.buffer == null) {
- data.state = "start";
- data.buffer = "";
- }
-
- var keyArray = [];
- if (hashId & 1) keyArray.push("ctrl");
- if (hashId & 8) keyArray.push("command");
- if (hashId & 2) keyArray.push("option");
- if (hashId & 4) keyArray.push("shift");
- if (key) keyArray.push(key);
-
- var symbolicName = keyArray.join("-");
- var bufferToUse = data.buffer + symbolicName;
-
- // Don't add the symbolic name to the key buffer if the alt_ key is
- // part of the symbolic name. If it starts with alt_, this means
- // that the user hit an alt keycombo and there will be a single,
- // new character detected after this event, which then will be
- // added to the buffer (e.g. alt_j will result in ∆).
- //
- // We test for 2 and not for & 2 as we only want to exclude the case where
- // the option key is pressed alone.
- if (hashId != 2) {
- data.buffer = bufferToUse;
- }
-
- var bufferObj = {
- bufferToUse: bufferToUse,
- symbolicName: symbolicName
- };
-
- if (e) {
- bufferObj.keyIdentifier = e.keyIdentifier;
- }
-
- return bufferObj;
- },
-
- $find: function(data, buffer, symbolicName, hashId, key, keyIdentifier) {
- // Holds the command to execute and the args if a command matched.
- var result = {};
-
- // Loop over all the bindings of the keymap until a match is found.
- this.keymapping[data.state].some(function(binding) {
- var match;
-
- // Check if the key matches.
- if (binding.key && !binding.key.test(symbolicName)) {
- return false;
- }
-
- // Check if the regex matches.
- if (binding.regex && !(match = binding.regex.exec(buffer))) {
- return false;
- }
-
- // Check if the match function matches.
- if (binding.match && !binding.match(buffer, hashId, key, symbolicName, keyIdentifier)) {
- return false;
- }
-
- // Check for disallowed matches.
- if (binding.disallowMatches) {
- for (var i = 0; i < binding.disallowMatches.length; i++) {
- if (!!match[binding.disallowMatches[i]]) {
- return false;
- }
- }
- }
-
- // If there is a command to execute, then figure out the
- // command and the arguments.
- if (binding.exec) {
- result.command = binding.exec;
-
- // Build the arguments.
- if (binding.params) {
- var value;
- result.args = {};
- binding.params.forEach(function(param) {
- if (param.match != null && match != null) {
- value = match[param.match] || param.defaultValue;
- } else {
- value = param.defaultValue;
- }
-
- if (param.type === 'number') {
- value = parseInt(value);
- }
-
- result.args[param.name] = value;
- });
- }
- data.buffer = "";
- }
-
- // Handle the 'then' property.
- if (binding.then) {
- data.state = binding.then;
- data.buffer = "";
- }
-
- // If no command is set, then execute the "null" fake command.
- if (result.command == null) {
- result.command = "null";
- }
-
- if (DEBUG) {
- console.log("KeyboardStateMapper#find", binding);
- }
- return true;
- });
-
- if (result.command) {
- return result;
- } else {
- data.buffer = "";
- return false;
- }
- },
-
- /*
- * This function is called by keyBinding.
- */
- handleKeyboard: function(data, hashId, key, keyCode, e) {
- if (hashId == -1)
- hashId = 0
- // If we pressed any command key but no other key, then ignore the input.
- // Otherwise "shift-" is added to the buffer, and later on "shift-g"
- // which results in "shift-shift-g" which doesn't make sense.
- if (hashId != 0 && (key == "" || key == String.fromCharCode(0))) {
- return null;
- }
-
- // Compute the current value of the keyboard input buffer.
- var r = this.$composeBuffer(data, hashId, key, e);
- var buffer = r.bufferToUse;
- var symbolicName = r.symbolicName;
- var keyId = r.keyIdentifier;
-
- r = this.$find(data, buffer, symbolicName, hashId, key, keyId);
- if (DEBUG) {
- console.log("KeyboardStateMapper#match", buffer, symbolicName, r);
- }
-
- return r;
- }
-}
-
-/*
- * This is a useful matching function and therefore is defined here so that
- * users of KeyboardStateMapper can use it.
- *
- * @return boolean
- * If no command key (Command|Option|Shift|Ctrl) is pressed, it
- * returns true. If the only the Shift key is pressed + a character
- * true is returned as well. Otherwise, false is returned.
- * Summing up, the function returns true whenever the user typed
- * a normal character on the keyboard and no shortcut.
- */
-exports.matchCharacterOnly = function(buffer, hashId, key, symbolicName) {
- // If no command keys are pressed, then catch the input.
- if (hashId == 0) {
- return true;
- }
- // If only the shift key is pressed and a character key, then
- // catch that input as well.
- else if ((hashId == 4) && key.length == 1) {
- return true;
- }
- // Otherwise, we let the input got through.
- else {
- return false;
- }
-};
-
-exports.StateHandler = StateHandler;
-});
-ace.define('ace/placeholder', ['require', 'exports', 'module' , 'ace/range', 'ace/lib/event_emitter', 'ace/lib/oop'], function(require, exports, module) {
-
-
-var Range = require('./range').Range;
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var oop = require("./lib/oop");
-
-/**
- * new PlaceHolder(session, length, pos, others, mainClass, othersClass)
- * - session (Document): The document to associate with the anchor
- * - length (Number): The starting row position
- * - pos (Number): The starting column position
- * - others (String):
- * - mainClass (String):
- * - othersClass (String):
- *
- * TODO
- *
- **/
-
-var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {
- var _self = this;
- this.length = length;
- this.session = session;
- this.doc = session.getDocument();
- this.mainClass = mainClass;
- this.othersClass = othersClass;
- this.$onUpdate = this.onUpdate.bind(this);
- this.doc.on("change", this.$onUpdate);
- this.$others = others;
-
- this.$onCursorChange = function() {
- setTimeout(function() {
- _self.onCursorChange();
- });
- };
-
- this.$pos = pos;
- // Used for reset
- var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};
- this.$undoStackDepth = undoStack.length;
- this.setup();
-
- session.selection.on("changeCursor", this.$onCursorChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setup = function() {
- var _self = this;
- var doc = this.doc;
- var session = this.session;
- var pos = this.$pos;
-
- this.pos = doc.createAnchor(pos.row, pos.column);
- this.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);
- this.pos.on("change", function(event) {
- session.removeMarker(_self.markerId);
- _self.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.mainClass, null, false);
- });
- this.others = [];
- this.$others.forEach(function(other) {
- var anchor = doc.createAnchor(other.row, other.column);
- _self.others.push(anchor);
- });
- session.setUndoSelect(false);
- };
- this.showOtherMarkers = function() {
- if(this.othersActive) return;
- var session = this.session;
- var _self = this;
- this.othersActive = true;
- this.others.forEach(function(anchor) {
- anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);
- anchor.on("change", function(event) {
- session.removeMarker(anchor.markerId);
- anchor.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.othersClass, null, false);
- });
- });
- };
- this.hideOtherMarkers = function() {
- if(!this.othersActive) return;
- this.othersActive = false;
- for (var i = 0; i < this.others.length; i++) {
- this.session.removeMarker(this.others[i].markerId);
- }
- };
- this.onUpdate = function(event) {
- var delta = event.data;
- var range = delta.range;
- if(range.start.row !== range.end.row) return;
- if(range.start.row !== this.pos.row) return;
- if (this.$updating) return;
- this.$updating = true;
- var lengthDiff = delta.action === "insertText" ? range.end.column - range.start.column : range.start.column - range.end.column;
-
- if(range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1) {
- var distanceFromStart = range.start.column - this.pos.column;
- this.length += lengthDiff;
- if(!this.session.$fromUndo) {
- if(delta.action === "insertText") {
- for (var i = this.others.length - 1; i >= 0; i--) {
- var otherPos = this.others[i];
- var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};
- if(otherPos.row === range.start.row && range.start.column < otherPos.column)
- newPos.column += lengthDiff;
- this.doc.insert(newPos, delta.text);
- }
- } else if(delta.action === "removeText") {
- for (var i = this.others.length - 1; i >= 0; i--) {
- var otherPos = this.others[i];
- var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};
- if(otherPos.row === range.start.row && range.start.column < otherPos.column)
- newPos.column += lengthDiff;
- this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));
- }
- }
- // Special case: insert in beginning
- if(range.start.column === this.pos.column && delta.action === "insertText") {
- setTimeout(function() {
- this.pos.setPosition(this.pos.row, this.pos.column - lengthDiff);
- for (var i = 0; i < this.others.length; i++) {
- var other = this.others[i];
- var newPos = {row: other.row, column: other.column - lengthDiff};
- if(other.row === range.start.row && range.start.column < other.column)
- newPos.column += lengthDiff;
- other.setPosition(newPos.row, newPos.column);
- }
- }.bind(this), 0);
- }
- else if(range.start.column === this.pos.column && delta.action === "removeText") {
- setTimeout(function() {
- for (var i = 0; i < this.others.length; i++) {
- var other = this.others[i];
- if(other.row === range.start.row && range.start.column < other.column) {
- other.setPosition(other.row, other.column - lengthDiff);
- }
- }
- }.bind(this), 0);
- }
- }
- this.pos._emit("change", {value: this.pos});
- for (var i = 0; i < this.others.length; i++) {
- this.others[i]._emit("change", {value: this.others[i]});
- }
- }
- this.$updating = false;
- };
-
- this.onCursorChange = function(event) {
- if (this.$updating) return;
- var pos = this.session.selection.getCursor();
- if(pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {
- this.showOtherMarkers();
- this._emit("cursorEnter", event);
- } else {
- this.hideOtherMarkers();
- this._emit("cursorLeave", event);
- }
- };
- this.detach = function() {
- this.session.removeMarker(this.markerId);
- this.hideOtherMarkers();
- this.doc.removeEventListener("change", this.$onUpdate);
- this.session.selection.removeEventListener("changeCursor", this.$onCursorChange);
- this.pos.detach();
- for (var i = 0; i < this.others.length; i++) {
- this.others[i].detach();
- }
- this.session.setUndoSelect(true);
- };
- this.cancel = function() {
- if(this.$undoStackDepth === -1)
- throw Error("Canceling placeholders only supported with undo manager attached to session.");
- var undoManager = this.session.getUndoManager();
- var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;
- for (var i = 0; i < undosRequired; i++) {
- undoManager.undo(true);
- }
- };
-}).call(PlaceHolder.prototype);
-
-
-exports.PlaceHolder = PlaceHolder;
-});
-
-ace.define('ace/theme/textmate', ['require', 'exports', 'module' , 'text!ace/theme/textmate.css', 'ace/lib/dom'], function(require, exports, module) {
-
-
-exports.isDark = false;
-exports.cssClass = "ace-tm";
-exports.cssText = require('text!./textmate.css');
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
-ace.define("text!ace/theme/textmate.css", [], ".ace-tm .ace_editor {\n" +
- " border: 2px solid rgb(159, 159, 159);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_editor.ace_focus {\n" +
- " border: 2px solid #327fbd;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_gutter {\n" +
- " background: #f0f0f0;\n" +
- " color: #333;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_print_margin {\n" +
- " width: 1px;\n" +
- " background: #e8e8e8;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_fold {\n" +
- " background-color: #6B72E6;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_scroller {\n" +
- " background-color: #FFFFFF;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_cursor {\n" +
- " border-left: 2px solid black;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_cursor.ace_overwrite {\n" +
- " border-left: 0px;\n" +
- " border-bottom: 1px solid black;\n" +
- "}\n" +
- " \n" +
- ".ace-tm .ace_line .ace_invisible {\n" +
- " color: rgb(191, 191, 191);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_storage,\n" +
- ".ace-tm .ace_line .ace_keyword {\n" +
- " color: blue;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_constant {\n" +
- " color: rgb(197, 6, 11);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_constant.ace_buildin {\n" +
- " color: rgb(88, 72, 246);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_constant.ace_language {\n" +
- " color: rgb(88, 92, 246);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_constant.ace_library {\n" +
- " color: rgb(6, 150, 14);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_invalid {\n" +
- " background-color: rgba(255, 0, 0, 0.1);\n" +
- " color: red;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_support.ace_function {\n" +
- " color: rgb(60, 76, 114);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_support.ace_constant {\n" +
- " color: rgb(6, 150, 14);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_support.ace_type,\n" +
- ".ace-tm .ace_line .ace_support.ace_class {\n" +
- " color: rgb(109, 121, 222);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_keyword.ace_operator {\n" +
- " color: rgb(104, 118, 135);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_string {\n" +
- " color: rgb(3, 106, 7);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_comment {\n" +
- " color: rgb(76, 136, 107);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_comment.ace_doc {\n" +
- " color: rgb(0, 102, 255);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_comment.ace_doc.ace_tag {\n" +
- " color: rgb(128, 159, 191);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_constant.ace_numeric {\n" +
- " color: rgb(0, 0, 205);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_variable {\n" +
- " color: rgb(49, 132, 149);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_line .ace_xml_pe {\n" +
- " color: rgb(104, 104, 91);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_entity.ace_name.ace_function {\n" +
- " color: #0000A2;\n" +
- "}\n" +
- "\n" +
- "\n" +
- ".ace-tm .ace_markup.ace_heading {\n" +
- " color: rgb(12, 7, 255);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_markup.ace_list {\n" +
- " color:rgb(185, 6, 144);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_meta.ace_tag {\n" +
- " color:rgb(0, 22, 142);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_string.ace_regex {\n" +
- " color: rgb(255, 0, 0)\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_marker-layer .ace_selection {\n" +
- " background: rgb(181, 213, 255);\n" +
- "}\n" +
- ".ace-tm.multiselect .ace_selection.start {\n" +
- " box-shadow: 0 0 3px 0px white;\n" +
- " border-radius: 2px;\n" +
- "}\n" +
- ".ace-tm .ace_marker-layer .ace_step {\n" +
- " background: rgb(252, 255, 0);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_marker-layer .ace_stack {\n" +
- " background: rgb(164, 229, 101);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_marker-layer .ace_bracket {\n" +
- " margin: -1px 0 0 -1px;\n" +
- " border: 1px solid rgb(192, 192, 192);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_marker-layer .ace_active_line {\n" +
- " background: rgba(0, 0, 0, 0.07);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_gutter_active_line {\n" +
- " background-color : #dcdcdc;\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_marker-layer .ace_selected_word {\n" +
- " background: rgb(250, 250, 255);\n" +
- " border: 1px solid rgb(200, 200, 250);\n" +
- "}\n" +
- "\n" +
- ".ace-tm .ace_indent-guide {\n" +
- " background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n" +
- "}\n" +
- "");
-
-;
- (function() {
- ace.require(["ace/ace"], function(a) {
- a && a.config.init();
- if (!window.ace)
- window.ace = {};
- for (var key in a) if (a.hasOwnProperty(key))
- ace[key] = a[key];
- });
- })();
-
diff --git a/vendor/assets/javascripts/ace-src-noconflict/keybinding-emacs.js b/vendor/assets/javascripts/ace-src-noconflict/keybinding-emacs.js
deleted file mode 100644
index ba53c7c5ff5..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/keybinding-emacs.js
+++ /dev/null
@@ -1,374 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/keyboard/emacs', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/keyboard/hash_handler', 'ace/lib/keys'], function(require, exports, module) {
-
-
-var dom = require("../lib/dom");
-
-var screenToTextBlockCoordinates = function(pageX, pageY) {
- var canvasPos = this.scroller.getBoundingClientRect();
-
- var col = Math.floor(
- (pageX + this.scrollLeft - canvasPos.left - this.$padding - dom.getPageScrollLeft()) / this.characterWidth
- );
- var row = Math.floor(
- (pageY + this.scrollTop - canvasPos.top - dom.getPageScrollTop()) / this.lineHeight
- );
-
- return this.session.screenToDocumentPosition(row, col);
-};
-
-var HashHandler = require("./hash_handler").HashHandler;
-exports.handler = new HashHandler();
-
-var initialized = false;
-exports.handler.attach = function(editor) {
- if (!initialized) {
- initialized = true;
- dom.importCssString('\
- .emacs-mode .ace_cursor{\
- border: 2px rgba(50,250,50,0.8) solid!important;\
- -moz-box-sizing: border-box!important;\
- box-sizing: border-box!important;\
- background-color: rgba(0,250,0,0.9);\
- opacity: 0.5;\
- }\
- .emacs-mode .ace_cursor.ace_hidden{\
- opacity: 1;\
- background-color: transparent;\
- }\
- .emacs-mode .ace_cursor.ace_overwrite {\
- opacity: 1;\
- background-color: transparent;\
- border-width: 0 0 2px 2px !important;\
- }\
- .emacs-mode .ace_text-layer {\
- z-index: 4\
- }\
- .emacs-mode .ace_cursor-layer {\
- z-index: 2\
- }', 'emacsMode'
- );
- }
-
- editor.renderer.screenToTextCoordinates = screenToTextBlockCoordinates;
- editor.setStyle("emacs-mode");
-};
-
-exports.handler.detach = function(editor) {
- delete editor.renderer.screenToTextCoordinates;
- editor.unsetStyle("emacs-mode");
-};
-
-
-var keys = require("../lib/keys").KEY_MODS;
-var eMods = {
- C: "ctrl", S: "shift", M: "alt"
-};
-["S-C-M", "S-C", "S-M", "C-M", "S", "C", "M"].forEach(function(c) {
- var hashId = 0;
- c.split("-").forEach(function(c){
- hashId = hashId | keys[eMods[c]];
- });
- eMods[hashId] = c.toLowerCase() + "-";
-});
-
-exports.handler.bindKey = function(key, command) {
- if (!key)
- return;
-
- var ckb = this.commmandKeyBinding;
- key.split("|").forEach(function(keyPart) {
- keyPart = keyPart.toLowerCase();
- ckb[keyPart] = command;
- keyPart = keyPart.split(" ")[0];
- if (!ckb[keyPart])
- ckb[keyPart] = "null";
- }, this);
-};
-
-
-exports.handler.handleKeyboard = function(data, hashId, key, keyCode) {
- if (hashId == -1) {
- if (data.count) {
- var str = Array(data.count + 1).join(key);
- data.count = null;
- return {command: "insertstring", args: str};
- }
- }
-
- if (key == "\x00")
- return;
-
- var modifier = eMods[hashId];
- if (modifier == "c-" || data.universalArgument) {
- var count = parseInt(key[key.length - 1]);
- if (count) {
- data.count = count;
- return {command: "null"};
- }
- }
- data.universalArgument = false;
-
- if (modifier)
- key = modifier + key;
-
- if (data.keyChain)
- key = data.keyChain += " " + key;
-
- var command = this.commmandKeyBinding[key];
- data.keyChain = command == "null" ? key : "";
-
- if (!command)
- return;
-
- if (command == "null")
- return {command: "null"};
-
- if (command == "universalArgument") {
- data.universalArgument = true;
- return {command: "null"};
- }
-
- if (typeof command != "string") {
- var args = command.args;
- command = command.command;
- }
-
- if (typeof command == "string") {
- command = this.commands[command] || data.editor.commands.commands[command];
- }
-
- if (!command.readonly && !command.isYank)
- data.lastCommand = null;
-
- if (data.count) {
- var count = data.count;
- data.count = 0;
- return {
- args: args,
- command: {
- exec: function(editor, args) {
- for (var i = 0; i < count; i++)
- command.exec(editor, args);
- }
- }
- };
- }
-
- return {command: command, args: args};
-};
-
-exports.emacsKeys = {
- // movement
- "Up|C-p" : "golineup",
- "Down|C-n" : "golinedown",
- "Left|C-b" : "gotoleft",
- "Right|C-f" : "gotoright",
- "C-Left|M-b" : "gotowordleft",
- "C-Right|M-f" : "gotowordright",
- "Home|C-a" : "gotolinestart",
- "End|C-e" : "gotolineend",
- "C-Home|S-M-,": "gotostart",
- "C-End|S-M-." : "gotoend",
-
- // selection
- "S-Up|S-C-p" : "selectup",
- "S-Down|S-C-n" : "selectdown",
- "S-Left|S-C-b" : "selectleft",
- "S-Right|S-C-f" : "selectright",
- "S-C-Left|S-M-b" : "selectwordleft",
- "S-C-Right|S-M-f" : "selectwordright",
- "S-Home|S-C-a" : "selecttolinestart",
- "S-End|S-C-e" : "selecttolineend",
- "S-C-Home" : "selecttostart",
- "S-C-End" : "selecttoend",
-
- "C-l" : "recenterTopBottom",
- "M-s" : "centerselection",
- "M-g": "gotoline",
- "C-x C-p": "selectall",
-
- // todo fix these
- "C-Down": "gotopagedown",
- "C-Up": "gotopageup",
- "PageDown|C-v": "gotopagedown",
- "PageUp|M-v": "gotopageup",
- "S-C-Down": "selectpagedown",
- "S-C-Up": "selectpageup",
- "C-s": "findnext",
- "C-r": "findprevious",
- "M-C-s": "findnext",
- "M-C-r": "findprevious",
- "S-M-5": "replace",
-
- // basic editing
- "Backspace": "backspace",
- "Delete|C-d": "del",
- "Return|C-m": {command: "insertstring", args: "\n"}, // "newline"
- "C-o": "splitline",
-
- "M-d|C-Delete": {command: "killWord", args: "right"},
- "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"},
- "C-k": "killLine",
-
- "C-y|S-Delete": "yank",
- "M-y": "yankRotate",
- "C-g": "keyboardQuit",
-
- "C-w": "killRegion",
- "M-w": "killRingSave",
-
- "C-Space": "setMark",
- "C-x C-x": "exchangePointAndMark",
-
- "C-t": "transposeletters",
-
- "M-u": "touppercase",
- "M-l": "tolowercase",
- "M-/": "autocomplete",
- "C-u": "universalArgument",
- "M-;": "togglecomment",
-
- "C-/|C-x u|S-C--|C-z": "undo",
- "S-C-/|S-C-x u|C--|S-C-z": "redo", //infinite undo?
- // vertical editing
- "C-x r": "selectRectangularRegion"
-
- // todo
- // "M-x" "C-x C-t" "M-t" "M-c" "F11" "C-M- "M-q"
-};
-
-
-exports.handler.bindKeys(exports.emacsKeys);
-
-exports.handler.addCommands({
- recenterTopBottom: function(editor) {
- var renderer = editor.renderer;
- var pos = renderer.$cursorLayer.getPixelPosition();
- var h = renderer.$size.scrollerHeight - renderer.lineHeight;
- var scrollTop = renderer.scrollTop;
- if (Math.abs(pos.top - scrollTop) < 2) {
- scrollTop = pos.top - h;
- } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) {
- scrollTop = pos.top;
- } else {
- scrollTop = pos.top - h * 0.5;
- }
- editor.session.setScrollTop(scrollTop);
- },
- selectRectangularRegion: function(editor) {
- editor.multiSelect.toggleBlockSelection();
- },
- setMark: function() {
- },
- exchangePointAndMark: {
- exec: function(editor) {
- var range = editor.selection.getRange();
- editor.selection.setSelectionRange(range, !editor.selection.isBackwards());
- },
- readonly: true,
- multiselectAction: "forEach"
- },
- killWord: {
- exec: function(editor, dir) {
- editor.clearSelection();
- if (dir == "left")
- editor.selection.selectWordLeft();
- else
- editor.selection.selectWordRight();
-
- var range = editor.getSelectionRange();
- var text = editor.session.getTextRange(range);
- exports.killRing.add(text);
-
- editor.session.remove(range);
- editor.clearSelection();
- },
- multiselectAction: "forEach"
- },
- killLine: function(editor) {
- editor.selection.selectLine();
- var range = editor.getSelectionRange();
- var text = editor.session.getTextRange(range);
- exports.killRing.add(text);
-
- editor.session.remove(range);
- editor.clearSelection();
- },
- yank: function(editor) {
- editor.onPaste(exports.killRing.get());
- editor.keyBinding.$data.lastCommand = "yank";
- },
- yankRotate: function(editor) {
- if (editor.keyBinding.$data.lastCommand != "yank")
- return;
-
- editor.undo();
- editor.onPaste(exports.killRing.rotate());
- editor.keyBinding.$data.lastCommand = "yank";
- },
- killRegion: function(editor) {
- exports.killRing.add(editor.getCopyText());
- editor.commands.byName.cut.exec(editor);
- },
- killRingSave: function(editor) {
- exports.killRing.add(editor.getCopyText());
- }
-});
-
-var commands = exports.handler.commands;
-commands.yank.isYank = true;
-commands.yankRotate.isYank = true;
-
-exports.killRing = {
- $data: [],
- add: function(str) {
- str && this.$data.push(str);
- if (this.$data.length > 30)
- this.$data.shift();
- },
- get: function() {
- return this.$data[this.$data.length - 1] || "";
- },
- pop: function() {
- if (this.$data.length > 1)
- this.$data.pop();
- return this.get();
- },
- rotate: function() {
- this.$data.unshift(this.$data.pop());
- return this.get();
- }
-};
-
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/keybinding-vim.js b/vendor/assets/javascripts/ace-src-noconflict/keybinding-vim.js
deleted file mode 100644
index 88ebc4e7c31..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/keybinding-vim.js
+++ /dev/null
@@ -1,1679 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/keyboard/vim', ['require', 'exports', 'module' , 'ace/keyboard/vim/commands', 'ace/keyboard/vim/maps/util', 'ace/lib/useragent'], function(require, exports, module) {
-
-
-var cmds = require("./vim/commands");
-var coreCommands = cmds.coreCommands;
-var util = require("./vim/maps/util");
-var useragent = require("../lib/useragent");
-
-var startCommands = {
- "i": {
- command: coreCommands.start
- },
- "I": {
- command: coreCommands.startBeginning
- },
- "a": {
- command: coreCommands.append
- },
- "A": {
- command: coreCommands.appendEnd
- },
- "ctrl-f": {
- command: "gotopagedown"
- },
- "ctrl-b": {
- command: "gotopageup"
- }
-};
-
-exports.handler = {
- // workaround for j not repeating with `defaults write -g ApplePressAndHoldEnabled -bool true`
- handleMacRepeat: function(data, hashId, key) {
- if (hashId == -1) {
- // record key
- data.inputChar = key;
- data.lastEvent = "input";
- } else if (data.inputChar && data.$lastHash == hashId && data.$lastKey == key) {
- // check for repeated keypress
- if (data.lastEvent == "input") {
- data.lastEvent = "input1";
- } else if (data.lastEvent == "input1") {
- // simulate textinput
- return true;
- }
- } else {
- // reset
- data.$lastHash = hashId;
- data.$lastKey = key;
- data.lastEvent = "keypress";
- }
- },
-
- handleKeyboard: function(data, hashId, key, keyCode, e) {
- // ignore command keys (shift, ctrl etc.)
- if (hashId != 0 && (key == "" || key == "\x00"))
- return null;
-
- if (hashId == 1)
- key = "ctrl-" + key;
-
- if ((key == "esc" && hashId == 0) || key == "ctrl-[") {
- return {command: coreCommands.stop};
- } else if (data.state == "start") {
- if (useragent.isMac && this.handleMacRepeat(data, hashId, key)) {
- hashId = -1;
- key = data.inputChar;
- }
-
- if (hashId == -1 || hashId == 1) {
- if (cmds.inputBuffer.idle && startCommands[key])
- return startCommands[key];
- return {
- command: {
- exec: function(editor) {cmds.inputBuffer.push(editor, key);}
- }
- };
- } // if no modifier || shift: wait for input.
- else if (key.length == 1 && (hashId == 0 || hashId == 4)) {
- return {command: "null", passEvent: true};
- } else if (key == "esc" && hashId == 0) {
- return {command: coreCommands.stop};
- }
- } else {
- if (key == "ctrl-w") {
- return {command: "removewordleft"};
- }
- }
- },
-
- attach: function(editor) {
- editor.on("click", exports.onCursorMove);
- if (util.currentMode !== "insert")
- cmds.coreCommands.stop.exec(editor);
- editor.$vimModeHandler = this;
- },
-
- detach: function(editor) {
- editor.removeListener("click", exports.onCursorMove);
- util.noMode(editor);
- util.currentMode = "normal";
- },
-
- actions: cmds.actions,
- getStatusText: function() {
- if (util.currentMode == "insert")
- return "INSERT";
- if (util.onVisualMode)
- return (util.onVisualLineMode ? "VISUAL LINE " : "VISUAL ") + cmds.inputBuffer.status;
- return cmds.inputBuffer.status;
- }
-};
-
-
-exports.onCursorMove = function(e) {
- cmds.onCursorMove(e.editor, e);
- exports.onCursorMove.scheduled = false;
-};
-
-});
-
-ace.define('ace/keyboard/vim/commands', ['require', 'exports', 'module' , 'ace/keyboard/vim/maps/util', 'ace/keyboard/vim/maps/motions', 'ace/keyboard/vim/maps/operators', 'ace/keyboard/vim/maps/aliases', 'ace/keyboard/vim/registers'], function(require, exports, module) {
-
-"never use strict";
-
-var util = require("./maps/util");
-var motions = require("./maps/motions");
-var operators = require("./maps/operators");
-var alias = require("./maps/aliases");
-var registers = require("./registers");
-
-var NUMBER = 1;
-var OPERATOR = 2;
-var MOTION = 3;
-var ACTION = 4;
-var HMARGIN = 8; // Minimum amount of line separation between margins;
-
-var repeat = function repeat(fn, count, args) {
- while (0 < count--)
- fn.apply(this, args);
-};
-
-var ensureScrollMargin = function(editor) {
- var renderer = editor.renderer;
- var pos = renderer.$cursorLayer.getPixelPosition();
-
- var top = pos.top;
-
- var margin = HMARGIN * renderer.layerConfig.lineHeight;
- if (2 * margin > renderer.$size.scrollerHeight)
- margin = renderer.$size.scrollerHeight / 2;
-
- if (renderer.scrollTop > top - margin) {
- renderer.session.setScrollTop(top - margin);
- }
-
- if (renderer.scrollTop + renderer.$size.scrollerHeight < top + margin + renderer.lineHeight) {
- renderer.session.setScrollTop(top + margin + renderer.lineHeight - renderer.$size.scrollerHeight);
- }
-};
-
-var actions = exports.actions = {
- "z": {
- param: true,
- fn: function(editor, range, count, param) {
- switch (param) {
- case "z":
- editor.alignCursor(null, 0.5);
- break;
- case "t":
- editor.alignCursor(null, 0);
- break;
- case "b":
- editor.alignCursor(null, 1);
- break;
- }
- }
- },
- "r": {
- param: true,
- fn: function(editor, range, count, param) {
- if (param && param.length) {
- repeat(function() { editor.insert(param); }, count || 1);
- editor.navigateLeft();
- }
- }
- },
- "R": {
- fn: function(editor, range, count, param) {
- util.insertMode(editor);
- editor.setOverwrite(true);
- }
- },
- "~": {
- fn: function(editor, range, count) {
- repeat(function() {
- var range = editor.selection.getRange();
- if (range.isEmpty())
- range.end.column++;
- var text = editor.session.getTextRange(range);
- var toggled = text.toUpperCase();
- if (toggled == text)
- editor.navigateRight();
- else
- editor.session.replace(range, toggled);
- }, count || 1);
- }
- },
- "*": {
- fn: function(editor, range, count, param) {
- editor.selection.selectWord();
- editor.findNext();
- ensureScrollMargin(editor);
- var r = editor.selection.getRange();
- editor.selection.setSelectionRange(r, true);
- }
- },
- "#": {
- fn: function(editor, range, count, param) {
- editor.selection.selectWord();
- editor.findPrevious();
- ensureScrollMargin(editor);
- var r = editor.selection.getRange();
- editor.selection.setSelectionRange(r, true);
- }
- },
- "n": {
- fn: function(editor, range, count, param) {
- var options = editor.getLastSearchOptions();
- options.backwards = false;
-
- editor.selection.moveCursorRight();
- editor.selection.clearSelection();
- editor.findNext(options);
-
- ensureScrollMargin(editor);
- var r = editor.selection.getRange();
- r.end.row = r.start.row;
- r.end.column = r.start.column;
- editor.selection.setSelectionRange(r, true);
- }
- },
- "N": {
- fn: function(editor, range, count, param) {
- var options = editor.getLastSearchOptions();
- options.backwards = true;
-
- editor.findPrevious(options);
- ensureScrollMargin(editor);
- var r = editor.selection.getRange();
- r.end.row = r.start.row;
- r.end.column = r.start.column;
- editor.selection.setSelectionRange(r, true);
- }
- },
- "v": {
- fn: function(editor, range, count, param) {
- editor.selection.selectRight();
- util.visualMode(editor, false);
- },
- acceptsMotion: true
- },
- "V": {
- fn: function(editor, range, count, param) {
- //editor.selection.selectLine();
- //editor.selection.selectLeft();
- var row = editor.getCursorPosition().row;
- editor.selection.clearSelection();
- editor.selection.moveCursorTo(row, 0);
- editor.selection.selectLineEnd();
- editor.selection.visualLineStart = row;
-
- util.visualMode(editor, true);
- },
- acceptsMotion: true
- },
- "Y": {
- fn: function(editor, range, count, param) {
- util.copyLine(editor);
- }
- },
- "p": {
- fn: function(editor, range, count, param) {
- var defaultReg = registers._default;
-
- editor.setOverwrite(false);
- if (defaultReg.isLine) {
- var pos = editor.getCursorPosition();
- var lines = defaultReg.text.split("\n");
- editor.session.getDocument().insertLines(pos.row + 1, lines);
- editor.moveCursorTo(pos.row + 1, 0);
- }
- else {
- editor.navigateRight();
- editor.insert(defaultReg.text);
- editor.navigateLeft();
- }
- editor.setOverwrite(true);
- editor.selection.clearSelection();
- }
- },
- "P": {
- fn: function(editor, range, count, param) {
- var defaultReg = registers._default;
- editor.setOverwrite(false);
-
- if (defaultReg.isLine) {
- var pos = editor.getCursorPosition();
- var lines = defaultReg.text.split("\n");
- editor.session.getDocument().insertLines(pos.row, lines);
- editor.moveCursorTo(pos.row, 0);
- }
- else {
- editor.insert(defaultReg.text);
- }
- editor.setOverwrite(true);
- editor.selection.clearSelection();
- }
- },
- "J": {
- fn: function(editor, range, count, param) {
- var session = editor.session;
- range = editor.getSelectionRange();
- var pos = {row: range.start.row, column: range.start.column};
- count = count || range.end.row - range.start.row;
- var maxRow = Math.min(pos.row + (count || 1), session.getLength() - 1);
-
- range.start.column = session.getLine(pos.row).length;
- range.end.column = session.getLine(maxRow).length;
- range.end.row = maxRow;
-
- var text = "";
- for (var i = pos.row; i < maxRow; i++) {
- var nextLine = session.getLine(i + 1);
- text += " " + /^\s*(.*)$/.exec(nextLine)[1] || "";
- }
-
- session.replace(range, text);
- editor.moveCursorTo(pos.row, pos.column);
- }
- },
- "u": {
- fn: function(editor, range, count, param) {
- count = parseInt(count || 1, 10);
- for (var i = 0; i < count; i++) {
- editor.undo();
- }
- editor.selection.clearSelection();
- }
- },
- "ctrl-r": {
- fn: function(editor, range, count, param) {
- count = parseInt(count || 1, 10);
- for (var i = 0; i < count; i++) {
- editor.redo();
- }
- editor.selection.clearSelection();
- }
- },
- ":": {
- fn: function(editor, range, count, param) {
- // not implemented
- }
- },
- "/": {
- fn: function(editor, range, count, param) {
- // not implemented
- }
- },
- "?": {
- fn: function(editor, range, count, param) {
- // not implemented
- }
- },
- ".": {
- fn: function(editor, range, count, param) {
- util.onInsertReplaySequence = inputBuffer.lastInsertCommands;
- var previous = inputBuffer.previous;
- if (previous) // If there is a previous action
- inputBuffer.exec(editor, previous.action, previous.param);
- }
- }
-};
-
-var inputBuffer = exports.inputBuffer = {
- accepting: [NUMBER, OPERATOR, MOTION, ACTION],
- currentCmd: null,
- //currentMode: 0,
- currentCount: "",
- status: "",
-
- // Types
- operator: null,
- motion: null,
-
- lastInsertCommands: [],
-
- push: function(editor, char, keyId) {
- this.idle = false;
- var wObj = this.waitingForParam;
- if (wObj) {
- this.exec(editor, wObj, char);
- }
- // If input is a number (that doesn't start with 0)
- else if (!(char === "0" && !this.currentCount.length) &&
- (char.match(/^\d+$/) && this.isAccepting(NUMBER))) {
- // Assuming that char is always of type String, and not Number
- this.currentCount += char;
- this.currentCmd = NUMBER;
- this.accepting = [NUMBER, OPERATOR, MOTION, ACTION];
- }
- else if (!this.operator && this.isAccepting(OPERATOR) && operators[char]) {
- this.operator = {
- char: char,
- count: this.getCount()
- };
- this.currentCmd = OPERATOR;
- this.accepting = [NUMBER, MOTION, ACTION];
- this.exec(editor, { operator: this.operator });
- }
- else if (motions[char] && this.isAccepting(MOTION)) {
- this.currentCmd = MOTION;
-
- var ctx = {
- operator: this.operator,
- motion: {
- char: char,
- count: this.getCount()
- }
- };
-
- if (motions[char].param)
- this.waitForParam(ctx);
- else
- this.exec(editor, ctx);
- }
- else if (alias[char] && this.isAccepting(MOTION)) {
- alias[char].operator.count = this.getCount();
- this.exec(editor, alias[char]);
- }
- else if (actions[char] && this.isAccepting(ACTION)) {
- var actionObj = {
- action: {
- fn: actions[char].fn,
- count: this.getCount()
- }
- };
-
- if (actions[char].param) {
- this.waitForParam(actionObj);
- }
- else {
- this.exec(editor, actionObj);
- }
-
- if (actions[char].acceptsMotion)
- this.idle = false;
- }
- else if (this.operator) {
- this.exec(editor, { operator: this.operator }, char);
- }
- else {
- this.reset();
- }
-
- if (this.waitingForParam || this.motion || this.operator) {
- this.status += char;
- } else if (this.currentCount) {
- this.status = this.currentCount;
- } else if (this.status) {
- this.status = "";
- } else {
- return;
- }
- editor._emit("changeStatus");
- },
-
- waitForParam: function(cmd) {
- this.waitingForParam = cmd;
- },
-
- getCount: function() {
- var count = this.currentCount;
- this.currentCount = "";
- return count && parseInt(count, 10);
- },
-
- exec: function(editor, action, param) {
- var m = action.motion;
- var o = action.operator;
- var a = action.action;
-
- if (!param)
- param = action.param;
-
- if (o) {
- this.previous = {
- action: action,
- param: param
- };
- }
-
- if (o && !editor.selection.isEmpty()) {
- if (operators[o.char].selFn) {
- operators[o.char].selFn(editor, editor.getSelectionRange(), o.count, param);
- this.reset();
- }
- return;
- }
-
- // There is an operator, but no motion or action. We try to pass the
- // current char to the operator to see if it responds to it (an example
- // of this is the 'dd' operator).
- else if (!m && !a && o && param) {
- operators[o.char].fn(editor, null, o.count, param);
- this.reset();
- }
- else if (m) {
- var run = function(fn) {
- if (fn && typeof fn === "function") { // There should always be a motion
- if (m.count && !motionObj.handlesCount)
- repeat(fn, m.count, [editor, null, m.count, param]);
- else
- fn(editor, null, m.count, param);
- }
- };
-
- var motionObj = motions[m.char];
- var selectable = motionObj.sel;
-
- if (!o) {
- if ((util.onVisualMode || util.onVisualLineMode) && selectable)
- run(motionObj.sel);
- else
- run(motionObj.nav);
- }
- else if (selectable) {
- repeat(function() {
- run(motionObj.sel);
- operators[o.char].fn(editor, editor.getSelectionRange(), o.count, param);
- }, o.count || 1);
- }
- this.reset();
- }
- else if (a) {
- a.fn(editor, editor.getSelectionRange(), a.count, param);
- this.reset();
- }
- handleCursorMove(editor);
- },
-
- isAccepting: function(type) {
- return this.accepting.indexOf(type) !== -1;
- },
-
- reset: function() {
- this.operator = null;
- this.motion = null;
- this.currentCount = "";
- this.status = "";
- this.accepting = [NUMBER, OPERATOR, MOTION, ACTION];
- this.idle = true;
- this.waitingForParam = null;
- }
-};
-
-function setPreviousCommand(fn) {
- inputBuffer.previous = { action: { action: { fn: fn } } };
-}
-
-exports.coreCommands = {
- start: {
- exec: function start(editor) {
- util.insertMode(editor);
- setPreviousCommand(start);
- }
- },
- startBeginning: {
- exec: function startBeginning(editor) {
- editor.navigateLineStart();
- util.insertMode(editor);
- setPreviousCommand(startBeginning);
- }
- },
- // Stop Insert mode as soon as possible. Works like typing <Esc> in
- // insert mode.
- stop: {
- exec: function stop(editor) {
- inputBuffer.reset();
- util.onVisualMode = false;
- util.onVisualLineMode = false;
- inputBuffer.lastInsertCommands = util.normalMode(editor);
- }
- },
- append: {
- exec: function append(editor) {
- var pos = editor.getCursorPosition();
- var lineLen = editor.session.getLine(pos.row).length;
- if (lineLen)
- editor.navigateRight();
- util.insertMode(editor);
- setPreviousCommand(append);
- }
- },
- appendEnd: {
- exec: function appendEnd(editor) {
- editor.navigateLineEnd();
- util.insertMode(editor);
- setPreviousCommand(appendEnd);
- }
- }
-};
-
-var handleCursorMove = exports.onCursorMove = function(editor, e) {
- if (util.currentMode === 'insert' || handleCursorMove.running)
- return;
- else if(!editor.selection.isEmpty()) {
- handleCursorMove.running = true;
- if (util.onVisualLineMode) {
- var originRow = editor.selection.visualLineStart;
- var cursorRow = editor.getCursorPosition().row;
- if(originRow <= cursorRow) {
- var endLine = editor.session.getLine(cursorRow);
- editor.selection.clearSelection();
- editor.selection.moveCursorTo(originRow, 0);
- editor.selection.selectTo(cursorRow, endLine.length);
- } else {
- var endLine = editor.session.getLine(originRow);
- editor.selection.clearSelection();
- editor.selection.moveCursorTo(originRow, endLine.length);
- editor.selection.selectTo(cursorRow, 0);
- }
- }
- handleCursorMove.running = false;
- return;
- }
- else {
- if (e && (util.onVisualLineMode || util.onVisualMode)) {
- editor.selection.clearSelection();
- util.normalMode(editor);
- }
-
- handleCursorMove.running = true;
- var pos = editor.getCursorPosition();
- var lineLen = editor.session.getLine(pos.row).length;
-
- if (lineLen && pos.column === lineLen)
- editor.navigateLeft();
- handleCursorMove.running = false;
- }
-};
-});
-ace.define('ace/keyboard/vim/maps/util', ['require', 'exports', 'module' , 'ace/keyboard/vim/registers', 'ace/lib/dom'], function(require, exports, module) {
-var registers = require("../registers");
-
-var dom = require("../../../lib/dom");
-dom.importCssString('.insert-mode. ace_cursor{\
- border-left: 2px solid #333333;\
-}\
-.ace_dark.insert-mode .ace_cursor{\
- border-left: 2px solid #eeeeee;\
-}\
-.normal-mode .ace_cursor{\
- border: 0!important;\
- background-color: red;\
- opacity: 0.5;\
-}', 'vimMode');
-
-module.exports = {
- onVisualMode: false,
- onVisualLineMode: false,
- currentMode: 'normal',
- noMode: function(editor) {
- editor.unsetStyle('insert-mode');
- editor.unsetStyle('normal-mode');
- if (editor.commands.recording)
- editor.commands.toggleRecording(editor);
- editor.setOverwrite(false);
- },
- insertMode: function(editor) {
- this.currentMode = 'insert';
- // Switch editor to insert mode
- editor.setStyle('insert-mode');
- editor.unsetStyle('normal-mode');
-
- editor.setOverwrite(false);
- editor.keyBinding.$data.buffer = "";
- editor.keyBinding.$data.state = "insertMode";
- this.onVisualMode = false;
- this.onVisualLineMode = false;
- if(this.onInsertReplaySequence) {
- // Ok, we're apparently replaying ("."), so let's do it
- editor.commands.macro = this.onInsertReplaySequence;
- editor.commands.replay(editor);
- this.onInsertReplaySequence = null;
- this.normalMode(editor);
- } else {
- editor._emit("changeStatus");
- // Record any movements, insertions in insert mode
- if(!editor.commands.recording)
- editor.commands.toggleRecording(editor);
- }
- },
- normalMode: function(editor) {
- // Switch editor to normal mode
- this.currentMode = 'normal';
-
- editor.unsetStyle('insert-mode');
- editor.setStyle('normal-mode');
- editor.clearSelection();
-
- var pos;
- if (!editor.getOverwrite()) {
- pos = editor.getCursorPosition();
- if (pos.column > 0)
- editor.navigateLeft();
- }
-
- editor.setOverwrite(true);
- editor.keyBinding.$data.buffer = "";
- editor.keyBinding.$data.state = "start";
- this.onVisualMode = false;
- this.onVisualLineMode = false;
- editor._emit("changeStatus");
- // Save recorded keystrokes
- if (editor.commands.recording) {
- editor.commands.toggleRecording(editor);
- return editor.commands.macro;
- }
- else {
- return [];
- }
- },
- visualMode: function(editor, lineMode) {
- if (
- (this.onVisualLineMode && lineMode)
- || (this.onVisualMode && !lineMode)
- ) {
- this.normalMode(editor);
- return;
- }
-
- editor.setStyle('insert-mode');
- editor.unsetStyle('normal-mode');
-
- editor._emit("changeStatus");
- if (lineMode) {
- this.onVisualLineMode = true;
- } else {
- this.onVisualMode = true;
- this.onVisualLineMode = false;
- }
- },
- getRightNthChar: function(editor, cursor, char, n) {
- var line = editor.getSession().getLine(cursor.row);
- var matches = line.substr(cursor.column + 1).split(char);
-
- return n < matches.length ? matches.slice(0, n).join(char).length : null;
- },
- getLeftNthChar: function(editor, cursor, char, n) {
- var line = editor.getSession().getLine(cursor.row);
- var matches = line.substr(0, cursor.column).split(char);
-
- return n < matches.length ? matches.slice(-1 * n).join(char).length : null;
- },
- toRealChar: function(char) {
- if (char.length === 1)
- return char;
-
- if (/^shift-./.test(char))
- return char[char.length - 1].toUpperCase();
- else
- return "";
- },
- copyLine: function(editor) {
- var pos = editor.getCursorPosition();
- editor.selection.clearSelection();
- editor.moveCursorTo(pos.row, pos.column);
- editor.selection.selectLine();
- registers._default.isLine = true;
- registers._default.text = editor.getCopyText().replace(/\n$/, "");
- editor.selection.clearSelection();
- editor.moveCursorTo(pos.row, pos.column);
- }
-};
-});
-
-ace.define('ace/keyboard/vim/registers', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-"never use strict";
-
-module.exports = {
- _default: {
- text: "",
- isLine: false
- }
-};
-
-});
-
-"use strict"
-
-ace.define('ace/keyboard/vim/maps/motions', ['require', 'exports', 'module' , 'ace/keyboard/vim/maps/util', 'ace/search', 'ace/range'], function(require, exports, module) {
-
-var util = require("./util");
-
-var keepScrollPosition = function(editor, fn) {
- var scrollTopRow = editor.renderer.getScrollTopRow();
- var initialRow = editor.getCursorPosition().row;
- var diff = initialRow - scrollTopRow;
- fn && fn.call(editor);
- editor.renderer.scrollToRow(editor.getCursorPosition().row - diff);
-};
-
-function Motion(getRange, type){
- if (type == 'extend')
- var extend = true;
- else
- var reverse = type;
-
- this.nav = function(editor) {
- var r = getRange(editor);
- if (!r)
- return;
- if (!r.end)
- var a = r;
- else if (reverse)
- var a = r.start;
- else
- var a = r.end;
-
- editor.clearSelection();
- editor.moveCursorTo(a.row, a.column);
- }
- this.sel = function(editor){
- var r = getRange(editor);
- if (!r)
- return;
- if (extend)
- return editor.selection.setSelectionRange(r);
-
- if (!r.end)
- var a = r;
- else if (reverse)
- var a = r.start;
- else
- var a = r.end;
-
- editor.selection.selectTo(a.row, a.column);
- }
-}
-
-var nonWordRe = /[\s.\/\\()\"'-:,.;<>~!@#$%^&*|+=\[\]{}`~?]/;
-var wordSeparatorRe = /[.\/\\()\"'-:,.;<>~!@#$%^&*|+=\[\]{}`~?]/;
-var whiteRe = /\s/;
-var StringStream = function(editor, cursor) {
- var sel = editor.selection;
- this.range = sel.getRange();
- cursor = cursor || sel.selectionLead;
- this.row = cursor.row;
- this.col = cursor.column;
- var line = editor.session.getLine(this.row);
- var maxRow = editor.session.getLength()
- this.ch = line[this.col] || '\n'
- this.skippedLines = 0;
-
- this.next = function() {
- this.ch = line[++this.col] || this.handleNewLine(1);
- //this.debug()
- return this.ch;
- }
- this.prev = function() {
- this.ch = line[--this.col] || this.handleNewLine(-1);
- //this.debug()
- return this.ch;
- }
- this.peek = function(dir) {
- var ch = line[this.col + dir];
- if (ch)
- return ch;
- if (dir == -1)
- return '\n';
- if (this.col == line.length - 1)
- return '\n';
- return editor.session.getLine(this.row + 1)[0] || '\n';
- }
-
- this.handleNewLine = function(dir) {
- if (dir == 1){
- if (this.col == line.length)
- return '\n';
- if (this.row == maxRow - 1)
- return '';
- this.col = 0;
- this.row ++;
- line = editor.session.getLine(this.row);
- this.skippedLines++;
- return line[0] || '\n';
- }
- if (dir == -1) {
- if (this.row == 0)
- return '';
- this.row --;
- line = editor.session.getLine(this.row);
- this.col = line.length;
- this.skippedLines--;
- return '\n';
- }
- }
- this.debug = function() {
- console.log(line.substring(0, this.col)+'|'+this.ch+'\''+this.col+'\''+line.substr(this.col+1));
- }
-}
-
-var Search = require("ace/search").Search;
-var search = new Search();
-
-function find(editor, needle, dir) {
- search.$options.needle = needle;
- search.$options.backwards = dir == -1;
- return search.find(editor.session);
-}
-
-var Range = require("ace/range").Range;
-
-module.exports = {
- "w": new Motion(function(editor) {
- var str = new StringStream(editor);
-
- if (str.ch && wordSeparatorRe.test(str.ch)) {
- while (str.ch && wordSeparatorRe.test(str.ch))
- str.next();
- } else {
- while (str.ch && !nonWordRe.test(str.ch))
- str.next();
- }
- while (str.ch && whiteRe.test(str.ch) && str.skippedLines < 2)
- str.next();
-
- str.skippedLines == 2 && str.prev();
- return {column: str.col, row: str.row};
- }),
- "W": new Motion(function(editor) {
- var str = new StringStream(editor);
- while(str.ch && !(whiteRe.test(str.ch) && !whiteRe.test(str.peek(1))) && str.skippedLines < 2)
- str.next();
- if (str.skippedLines == 2)
- str.prev();
- else
- str.next();
-
- return {column: str.col, row: str.row}
- }),
- "b": new Motion(function(editor) {
- var str = new StringStream(editor);
-
- str.prev();
- while (str.ch && whiteRe.test(str.ch) && str.skippedLines > -2)
- str.prev();
-
- if (str.ch && wordSeparatorRe.test(str.ch)) {
- while (str.ch && wordSeparatorRe.test(str.ch))
- str.prev();
- } else {
- while (str.ch && !nonWordRe.test(str.ch))
- str.prev();
- }
- str.ch && str.next();
- return {column: str.col, row: str.row};
- }),
- "B": new Motion(function(editor) {
- var str = new StringStream(editor)
- str.prev();
- while(str.ch && !(!whiteRe.test(str.ch) && whiteRe.test(str.peek(-1))) && str.skippedLines > -2)
- str.prev();
-
- if (str.skippedLines == -2)
- str.next();
-
- return {column: str.col, row: str.row};
- }, true),
- "e": new Motion(function(editor) {
- var str = new StringStream(editor);
-
- str.next();
- while (str.ch && whiteRe.test(str.ch))
- str.next();
-
- if (str.ch && wordSeparatorRe.test(str.ch)) {
- while (str.ch && wordSeparatorRe.test(str.ch))
- str.next();
- } else {
- while (str.ch && !nonWordRe.test(str.ch))
- str.next();
- }
- str.ch && str.prev();
- return {column: str.col, row: str.row};
- }),
- "E": new Motion(function(editor) {
- var str = new StringStream(editor);
- str.next();
- while(str.ch && !(!whiteRe.test(str.ch) && whiteRe.test(str.peek(1))))
- str.next();
-
- return {column: str.col, row: str.row};
- }),
-
- "l": {
- nav: function(editor) {
- editor.navigateRight();
- },
- sel: function(editor) {
- var pos = editor.getCursorPosition();
- var col = pos.column;
- var lineLen = editor.session.getLine(pos.row).length;
-
- // Solving the behavior at the end of the line due to the
- // different 0 index-based colum positions in ACE.
- if (lineLen && col !== lineLen) //In selection mode you can select the newline
- editor.selection.selectRight();
- }
- },
- "h": {
- nav: function(editor) {
- var pos = editor.getCursorPosition();
- if (pos.column > 0)
- editor.navigateLeft();
- },
- sel: function(editor) {
- var pos = editor.getCursorPosition();
- if (pos.column > 0)
- editor.selection.selectLeft();
- }
- },
- "H": {
- nav: function(editor) {
- var row = editor.renderer.getScrollTopRow();
- editor.moveCursorTo(row);
- },
- sel: function(editor) {
- var row = editor.renderer.getScrollTopRow();
- editor.selection.selectTo(row);
- }
- },
- "M": {
- nav: function(editor) {
- var topRow = editor.renderer.getScrollTopRow();
- var bottomRow = editor.renderer.getScrollBottomRow();
- var row = topRow + ((bottomRow - topRow) / 2);
- editor.moveCursorTo(row);
- },
- sel: function(editor) {
- var topRow = editor.renderer.getScrollTopRow();
- var bottomRow = editor.renderer.getScrollBottomRow();
- var row = topRow + ((bottomRow - topRow) / 2);
- editor.selection.selectTo(row);
- }
- },
- "L": {
- nav: function(editor) {
- var row = editor.renderer.getScrollBottomRow();
- editor.moveCursorTo(row);
- },
- sel: function(editor) {
- var row = editor.renderer.getScrollBottomRow();
- editor.selection.selectTo(row);
- }
- },
- "k": {
- nav: function(editor) {
- editor.navigateUp();
- },
- sel: function(editor) {
- editor.selection.selectUp();
- }
- },
- "j": {
- nav: function(editor) {
- editor.navigateDown();
- },
- sel: function(editor) {
- editor.selection.selectDown();
- }
- },
-
- "i": {
- param: true,
- sel: function(editor, range, count, param) {
- switch (param) {
- case "w":
- editor.selection.selectWord();
- break;
- case "W":
- editor.selection.selectAWord();
- break;
- case "(":
- case "{":
- case "[":
- var cursor = editor.getCursorPosition();
- var end = editor.session.$findClosingBracket(param, cursor, /paren/);
- if (!end)
- return;
- var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/);
- if (!start)
- return;
- start.column ++;
- editor.selection.setSelectionRange(Range.fromPoints(start, end));
- break;
- case "'":
- case '"':
- case "/":
- var end = find(editor, param, 1);
- if (!end)
- return;
- var start = find(editor, param, -1);
- if (!start)
- return;
- editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start));
- break;
- }
- }
- },
- "a": {
- param: true,
- sel: function(editor, range, count, param) {
- switch (param) {
- case "w":
- editor.selection.selectAWord();
- break;
- case "W":
- editor.selection.selectAWord();
- break;
- case "(":
- case "{":
- case "[":
- var cursor = editor.getCursorPosition();
- var end = editor.session.$findClosingBracket(param, cursor, /paren/);
- if (!end)
- return;
- var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/);
- if (!start)
- return;
- end.column ++;
- editor.selection.setSelectionRange(Range.fromPoints(start, end));
- break;
- case "'":
- case "\"":
- case "/":
- var end = find(editor, param, 1);
- if (!end)
- return;
- var start = find(editor, param, -1);
- if (!start)
- return;
- end.column ++;
- editor.selection.setSelectionRange(Range.fromPoints(start.start, end.end));
- break;
- }
- }
- },
-
- "f": {
- param: true,
- handlesCount: true,
- nav: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getRightNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.selection.clearSelection(); // Why does it select in the first place?
- ed.moveCursorTo(cursor.row, column + cursor.column + 1);
- }
- },
- sel: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getRightNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.moveCursorTo(cursor.row, column + cursor.column + 1);
- }
- }
- },
- "F": {
- param: true,
- handlesCount: true,
- nav: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getLeftNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.selection.clearSelection(); // Why does it select in the first place?
- ed.moveCursorTo(cursor.row, cursor.column - column - 1);
- }
- },
- sel: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getLeftNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.moveCursorTo(cursor.row, cursor.column - column - 1);
- }
- }
- },
- "t": {
- param: true,
- handlesCount: true,
- nav: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getRightNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.selection.clearSelection(); // Why does it select in the first place?
- ed.moveCursorTo(cursor.row, column + cursor.column);
- }
- },
- sel: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getRightNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.moveCursorTo(cursor.row, column + cursor.column);
- }
- }
- },
- "T": {
- param: true,
- handlesCount: true,
- nav: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getLeftNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.selection.clearSelection(); // Why does it select in the first place?
- ed.moveCursorTo(cursor.row, -column + cursor.column);
- }
- },
- sel: function(editor, range, count, param) {
- var ed = editor;
- var cursor = ed.getCursorPosition();
- var column = util.getLeftNthChar(editor, cursor, param, count || 1);
-
- if (typeof column === "number") {
- ed.moveCursorTo(cursor.row, -column + cursor.column);
- }
- }
- },
-
- "^": {
- nav: function(editor) {
- editor.navigateLineStart();
- },
- sel: function(editor) {
- editor.selection.selectLineStart();
- }
- },
- "$": {
- nav: function(editor) {
- editor.navigateLineEnd();
- },
- sel: function(editor) {
- editor.selection.selectLineEnd();
- }
- },
- "0": new Motion(function(ed) {
- return {row: ed.selection.lead.row, column: 0};
- }),
- "G": {
- nav: function(editor, range, count, param) {
- if (!count && count !== 0) { // Stupid JS
- count = editor.session.getLength();
- }
- editor.gotoLine(count);
- },
- sel: function(editor, range, count, param) {
- if (!count && count !== 0) { // Stupid JS
- count = editor.session.getLength();
- }
- editor.selection.selectTo(count, 0);
- }
- },
- "g": {
- param: true,
- nav: function(editor, range, count, param) {
- switch(param) {
- case "m":
- console.log("Middle line");
- break;
- case "e":
- console.log("End of prev word");
- break;
- case "g":
- editor.gotoLine(count || 0);
- case "u":
- editor.gotoLine(count || 0);
- case "U":
- editor.gotoLine(count || 0);
- }
- },
- sel: function(editor, range, count, param) {
- switch(param) {
- case "m":
- console.log("Middle line");
- break;
- case "e":
- console.log("End of prev word");
- break;
- case "g":
- editor.selection.selectTo(count || 0, 0);
- }
- }
- },
- "o": {
- nav: function(editor, range, count, param) {
- count = count || 1;
- var content = "";
- while (0 < count--)
- content += "\n";
-
- if (content.length) {
- editor.navigateLineEnd()
- editor.insert(content);
- util.insertMode(editor);
- }
- }
- },
- "O": {
- nav: function(editor, range, count, param) {
- var row = editor.getCursorPosition().row;
- count = count || 1;
- var content = "";
- while (0 < count--)
- content += "\n";
-
- if (content.length) {
- if(row > 0) {
- editor.navigateUp();
- editor.navigateLineEnd()
- editor.insert(content);
- } else {
- editor.session.insert({row: 0, column: 0}, content);
- editor.navigateUp();
- }
- util.insertMode(editor);
- }
- }
- },
- "%": new Motion(function(editor){
- var brRe = /[\[\]{}()]/g;
- var cursor = editor.getCursorPosition();
- var ch = editor.session.getLine(cursor.row)[cursor.column];
- if (!brRe.test(ch)) {
- var range = find(editor, brRe);
- if (!range)
- return;
- cursor = range.start;
- }
- var match = editor.session.findMatchingBracket({
- row: cursor.row,
- column: cursor.column + 1
- });
-
- return match;
- }),
- "{": new Motion(function(ed) {
- var session = ed.session;
- var row = session.selection.lead.row;
- while(row > 0 && !/\S/.test(session.getLine(row)))
- row--;
- while(/\S/.test(session.getLine(row)))
- row--;
- return {column: 0, row: row};
- }),
- "}": new Motion(function(ed) {
- var session = ed.session;
- var l = session.getLength();
- var row = session.selection.lead.row;
- while(row < l && !/\S/.test(session.getLine(row)))
- row++;
- while(/\S/.test(session.getLine(row)))
- row++;
- return {column: 0, row: row};
- }),
- "ctrl-d": {
- nav: function(editor, range, count, param) {
- editor.selection.clearSelection();
- keepScrollPosition(editor, editor.gotoPageDown);
- },
- sel: function(editor, range, count, param) {
- keepScrollPosition(editor, editor.selectPageDown);
- }
- },
- "ctrl-u": {
- nav: function(editor, range, count, param) {
- editor.selection.clearSelection();
- keepScrollPosition(editor, editor.gotoPageUp);
-
- },
- sel: function(editor, range, count, param) {
- keepScrollPosition(editor, editor.selectPageUp);
- }
- },
-};
-
-module.exports.backspace = module.exports.left = module.exports.h;
-module.exports.right = module.exports.l;
-module.exports.up = module.exports.k;
-module.exports.down = module.exports.j;
-module.exports.pagedown = module.exports["ctrl-d"];
-module.exports.pageup = module.exports["ctrl-u"];
-
-});
-
-ace.define('ace/keyboard/vim/maps/operators', ['require', 'exports', 'module' , 'ace/keyboard/vim/maps/util', 'ace/keyboard/vim/registers'], function(require, exports, module) {
-
-"never use strict";
-
-var util = require("./util");
-var registers = require("../registers");
-
-module.exports = {
- "d": {
- selFn: function(editor, range, count, param) {
- registers._default.text = editor.getCopyText();
- registers._default.isLine = util.onVisualLineMode;
- if(util.onVisualLineMode)
- editor.removeLines();
- else
- editor.session.remove(range);
- util.normalMode(editor);
- },
- fn: function(editor, range, count, param) {
- count = count || 1;
- switch (param) {
- case "d":
- registers._default.text = "";
- registers._default.isLine = true;
- for (var i = 0; i < count; i++) {
- editor.selection.selectLine();
- registers._default.text += editor.getCopyText();
- var selRange = editor.getSelectionRange();
- // check if end of the document was reached
- if (!selRange.isMultiLine()) {
- lastLineReached = true
- var row = selRange.start.row - 1;
- var col = editor.session.getLine(row).length
- selRange.setStart(row, col);
- editor.session.remove(selRange);
- editor.selection.clearSelection();
- break;
- }
- editor.session.remove(selRange);
- editor.selection.clearSelection();
- }
- registers._default.text = registers._default.text.replace(/\n$/, "");
- break;
- default:
- if (range) {
- editor.selection.setSelectionRange(range);
- registers._default.text = editor.getCopyText();
- registers._default.isLine = false;
- editor.session.remove(range);
- editor.selection.clearSelection();
- }
- }
- }
- },
- "c": {
- selFn: function(editor, range, count, param) {
- editor.session.remove(range);
- util.insertMode(editor);
- },
- fn: function(editor, range, count, param) {
- count = count || 1;
- switch (param) {
- case "c":
- for (var i = 0; i < count; i++) {
- editor.removeLines();
- util.insertMode(editor);
- }
-
- break;
- default:
- if (range) {
-
- // range.end.column ++;
- editor.session.remove(range);
- util.insertMode(editor);
- }
- }
- }
- },
- "y": {
- selFn: function(editor, range, count, param) {
- registers._default.text = editor.getCopyText();
- registers._default.isLine = util.onVisualLineMode;
- editor.selection.clearSelection();
- util.normalMode(editor);
- },
- fn: function(editor, range, count, param) {
- count = count || 1;
- switch (param) {
- case "y":
- var pos = editor.getCursorPosition();
- editor.selection.selectLine();
- for (var i = 0; i < count - 1; i++) {
- editor.selection.moveCursorDown();
- }
- registers._default.text = editor.getCopyText().replace(/\n$/, "");
- editor.selection.clearSelection();
- registers._default.isLine = true;
- editor.moveCursorToPosition(pos);
- break;
- default:
- if (range) {
- var pos = editor.getCursorPosition();
- editor.selection.setSelectionRange(range);
- registers._default.text = editor.getCopyText();
- registers._default.isLine = false;
- editor.selection.clearSelection();
- editor.moveCursorTo(pos.row, pos.column);
- }
- }
- }
- },
- ">": {
- selFn: function(editor, range, count, param) {
- count = count || 1;
- for (var i = 0; i < count; i++) {
- editor.indent();
- }
- util.normalMode(editor);
- },
- fn: function(editor, range, count, param) {
- count = parseInt(count || 1, 10);
- switch (param) {
- case ">":
- var pos = editor.getCursorPosition();
- editor.selection.selectLine();
- for (var i = 0; i < count - 1; i++) {
- editor.selection.moveCursorDown();
- }
- editor.indent();
- editor.selection.clearSelection();
- editor.moveCursorToPosition(pos);
- editor.navigateLineEnd();
- editor.navigateLineStart();
- break;
- }
- }
- },
- "<": {
- selFn: function(editor, range, count, param) {
- count = count || 1;
- for (var i = 0; i < count; i++) {
- editor.blockOutdent();
- }
- util.normalMode(editor);
- },
- fn: function(editor, range, count, param) {
- count = count || 1;
- switch (param) {
- case "<":
- var pos = editor.getCursorPosition();
- editor.selection.selectLine();
- for (var i = 0; i < count - 1; i++) {
- editor.selection.moveCursorDown();
- }
- editor.blockOutdent();
- editor.selection.clearSelection();
- editor.moveCursorToPosition(pos);
- editor.navigateLineEnd();
- editor.navigateLineStart();
- break;
- }
- }
- }
-};
-});
-
-"use strict"
-
-ace.define('ace/keyboard/vim/maps/aliases', ['require', 'exports', 'module' ], function(require, exports, module) {
-module.exports = {
- "x": {
- operator: {
- char: "d",
- count: 1
- },
- motion: {
- char: "l",
- count: 1
- }
- },
- "X": {
- operator: {
- char: "d",
- count: 1
- },
- motion: {
- char: "h",
- count: 1
- }
- },
- "D": {
- operator: {
- char: "d",
- count: 1
- },
- motion: {
- char: "$",
- count: 1
- }
- },
- "C": {
- operator: {
- char: "c",
- count: 1
- },
- motion: {
- char: "$",
- count: 1
- }
- },
- "s": {
- operator: {
- char: "c",
- count: 1
- },
- motion: {
- char: "l",
- count: 1
- }
- },
- "S": {
- operator: {
- char: "c",
- count: 1
- },
- param: "c"
- }
-};
-});
-
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-c9search.js b/vendor/assets/javascripts/ace-src-noconflict/mode-c9search.js
deleted file mode 100644
index 9f8401b7531..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-c9search.js
+++ /dev/null
@@ -1,268 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/c9search', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c9search_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/c9search'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var C9StyleFoldMode = require("./folding/c9search").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new C9SearchHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new C9StyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/c9search_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var C9SearchHighlightRules = function() {
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
- this.$rules = {
- "start" : [
- {
- token : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text"],
- regex : "(^\\s+[0-9]+)(:\\s*)(.+)"
- },
- {
- token : ["string", "text"], // single line
- regex : "(.+)(:$)"
- }
- ]
- };
-};
-
-oop.inherits(C9SearchHighlightRules, TextHighlightRules);
-
-exports.C9SearchHighlightRules = C9SearchHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-
-ace.define('ace/mode/folding/c9search', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /^(\S.*\:|Searching for.*)$/;
- this.foldingStopMarker = /^(\s+|Found.*)$/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var lines = session.doc.getAllLines(row);
- var line = lines[row];
- var level1 = /^(Found.*|Searching for.*)$/;
- var level2 = /^(\S.*\:|\s*)$/;
- var re = level1.test(line) ? level1 : level2;
-
- if (this.foldingStartMarker.test(line)) {
- for (var i = row + 1, l = session.getLength(); i < l; i++) {
- if (re.test(lines[i]))
- break;
- }
-
- return new Range(row, line.length, i, 0);
- }
-
- if (this.foldingStopMarker.test(line)) {
- for (var i = row - 1; i >= 0; i--) {
- line = lines[i];
- if (re.test(line))
- break;
- }
-
- return new Range(i, line.length, row, 0);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-c_cpp.js b/vendor/assets/javascripts/ace-src-noconflict/mode-c_cpp.js
deleted file mode 100644
index 4b128fa40b2..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-c_cpp.js
+++ /dev/null
@@ -1,759 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new c_cppHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-// used by objective-c
-var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b"
-
-var c_cppHighlightRules = function() {
-
- var keywordControls = (
- "break|case|continue|default|do|else|for|goto|if|_Pragma|" +
- "return|switch|while|catch|operator|try|throw|using"
- );
-
- var storageType = (
- "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" +
- "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void" +
- "class|wchar_t|template"
- );
-
- var storageModifiers = (
- "const|extern|register|restrict|static|volatile|inline|private:|" +
- "protected:|public:|friend|explicit|virtual|export|mutable|typename"
- );
-
- var keywordOperators = (
- "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" +
- "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"
- );
-
- var builtinConstants = (
- "NULL|true|false|TRUE|FALSE"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword.control" : keywordControls,
- "storage.type" : storageType,
- "storage.modifier" : storageModifiers,
- "keyword.operator" : keywordOperators,
- "variable.language": "this",
- "constant.language": builtinConstants
- }, "identifier");
-
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant", // <CONSTANT>
- regex : "<[a-zA-Z0-9.]+>"
- }, {
- token : "keyword", // pre-compiler directivs
- regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
- }, {
- token : "support.function.C99.c",
- regex : cFunctions
- }, {
- // function myFunc(arg) { }
- token : [
- "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(\\s+)(" + identifierRe + ")(\\s*)(\\()"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(c_cppHighlightRules, TextHighlightRules);
-
-exports.c_cppHighlightRules = c_cppHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-clojure.js b/vendor/assets/javascripts/ace-src-noconflict/mode-clojure.js
deleted file mode 100644
index 6aa6fd717cf..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-clojure.js
+++ /dev/null
@@ -1,347 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/clojure', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/clojure_highlight_rules', 'ace/mode/matching_parens_outdent', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules;
-var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new ClojureHighlightRules().getRules());
- this.$outdent = new MatchingParensOutdent();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, ";");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/[\(\[]/);
- if (match) {
- indent += " ";
- }
- match = line.match(/[\)]/);
- if (match) {
- indent = "";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/clojure_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-
-
-var ClojureHighlightRules = function() {
-
- var builtinFunctions = (
- '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' +
- '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' +
- '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' +
- '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' +
- '*read-eval* *source-path* *use-context-classloader* ' +
- '*warn-on-reflection* + - -> ->> .. / < <= = ' +
- '== > &gt; >= &gt;= accessor aclone ' +
- 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' +
- 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' +
- 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' +
- 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' +
- 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' +
- 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' +
- 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' +
- 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' +
- 'char-escape-string char-name-string char? chars chunk chunk-append ' +
- 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' +
- 'class class? clear-agent-errors clojure-version coll? comment commute ' +
- 'comp comparator compare compare-and-set! compile complement concat cond ' +
- 'condp conj conj! cons constantly construct-proxy contains? count ' +
- 'counted? create-ns create-struct cycle dec decimal? declare definline ' +
- 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' +
- 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' +
- 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' +
- 'double-array doubles drop drop-last drop-while empty empty? ensure ' +
- 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' +
- 'find-doc find-ns find-var first float float-array float? floats flush ' +
- 'fn fn? fnext for force format future future-call future-cancel ' +
- 'future-cancelled? future-done? future? gen-class gen-interface gensym ' +
- 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' +
- 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' +
- 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' +
- 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' +
- 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' +
- 'list* list? load load-file load-reader load-string loaded-libs locking ' +
- 'long long-array longs loop macroexpand macroexpand-1 make-array ' +
- 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' +
- 'merge-with meta method-sig methods min min-key mod name namespace neg? ' +
- 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' +
- 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' +
- 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' +
- 'or parents partial partition pcalls peek persistent! pmap pop pop! ' +
- 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' +
- 'primitives-classnames print print-ctor print-doc print-dup print-method ' +
- 'print-namespace-doc print-simple print-special-doc print-str printf ' +
- 'println println-str prn prn-str promise proxy proxy-call-with-super ' +
- 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' +
- 'rand rand-int range ratio? rational? rationalize re-find re-groups ' +
- 're-matcher re-matches re-pattern re-seq read read-line read-string ' +
- 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' +
- 'refer refer-clojure release-pending-sends rem remove remove-method ' +
- 'remove-ns remove-watch repeat repeatedly replace replicate require ' +
- 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' +
- 'rsubseq second select-keys send send-off seq seq? seque sequence ' +
- 'sequential? set set-validator! set? short short-array shorts ' +
- 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' +
- 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' +
- 'split-at split-with str stream? string? struct struct-map subs subseq ' +
- 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' +
- 'take-last take-nth take-while test the-ns time to-array to-array-2d ' +
- 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' +
- 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' +
- 'unchecked-remainder unchecked-subtract underive unquote ' +
- 'unquote-splicing update-in update-proxy use val vals var-get var-set ' +
- 'var? vary-meta vec vector vector? when when-first when-let when-not ' +
- 'while with-bindings with-bindings* with-in-str with-loading-context ' +
- 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' +
- 'zero? zipmap'
- );
-
- var keywords = ('throw try var ' +
- 'def do fn if let loop monitor-enter monitor-exit new quote recur set!'
- );
-
- var buildinConstants = ("true false nil");
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": buildinConstants,
- "support.function": builtinFunctions
- }, "identifier", false, " ");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : ";.*$"
- }, {
- token : "comment", // multi line comment
- regex : "^=begin$",
- next : "comment"
- }, {
- token : "keyword", //parens
- regex : "[\\(|\\)]"
- }, {
- token : "keyword", //lists
- regex : "[\\'\\(]"
- }, {
- token : "keyword", //vectors
- regex : "[\\[|\\]]"
- }, {
- token : "keyword", //sets and maps
- regex : "[\\{|\\}|\\#\\{|\\#\\}]"
- }, {
- token : "keyword", // ampersands
- regex : '[\\&]'
- }, {
- token : "keyword", // metadata
- regex : '[\\#\\^\\{]'
- }, {
- token : "keyword", // anonymous fn syntactic sugar
- regex : '[\\%]'
- }, {
- token : "keyword", // deref reader macro
- regex : '[@]'
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language",
- regex : '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]'
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "string", // single line
- regex : '"',
- next: "string"
- }, {
- token : "string", // symbol
- regex : "[:](?:[a-zA-Z]|\\d)+"
- }, {
- token : "string.regexp", //Regular Expressions
- regex : '/#"(?:\\.|(?:\\\")|[^\""\n])*"/g'
- }
-
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : "^=end$",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "string" : [
- {
- token : "constant.language.escape",
- merge : true,
- regex : "\\\\.|\\\\$"
- }, {
- token : "string",
- merge : true,
- regex : '[^"\\\\]+'
- }, {
- token : "string",
- regex : '"',
- next : "start"
- }
- ]
- };
-};
-
-oop.inherits(ClojureHighlightRules, TextHighlightRules);
-
-exports.ClojureHighlightRules = ClojureHighlightRules;
-});
-
-ace.define('ace/mode/matching_parens_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingParensOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\)/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\))/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingParensOutdent.prototype);
-
-exports.MatchingParensOutdent = MatchingParensOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-coffee.js b/vendor/assets/javascripts/ace-src-noconflict/mode-coffee.js
deleted file mode 100644
index b1d5e5f2b77..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-coffee.js
+++ /dev/null
@@ -1,513 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/coffee', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/coffee_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/coffee', 'ace/range', 'ace/mode/text', 'ace/worker/worker_client', 'ace/lib/oop'], function(require, exports, module) {
-
-
-var Tokenizer = require("../tokenizer").Tokenizer;
-var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules;
-var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var FoldMode = require("./folding/coffee").FoldMode;
-var Range = require("../range").Range;
-var TextMode = require("./text").Mode;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var oop = require("../lib/oop");
-
-function Mode() {
- this.$tokenizer = new Tokenizer(new Rules().getRules());
- this.$outdent = new Outdent();
- this.foldingRules = new FoldMode();
-}
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- var indenter = /(?:[({[=:]|[-=]>|\b(?:else|switch|try|catch(?:\s*[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$/;
- var commentLine = /^(\s*)#/;
- var hereComment = /^\s*###(?!#)/;
- var indentation = /^\s*/;
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
-
- if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&
- state === 'start' && indenter.test(line))
- indent += tab;
- return indent;
- };
-
- this.toggleCommentLines = function(state, doc, startRow, endRow){
- console.log("toggle");
- var range = new Range(0, 0, 0, 0);
- for (var i = startRow; i <= endRow; ++i) {
- var line = doc.getLine(i);
- if (hereComment.test(line))
- continue;
-
- if (commentLine.test(line))
- line = line.replace(commentLine, '$1');
- else
- line = line.replace(indentation, '$&#');
-
- range.end.row = range.start.row = i;
- range.end.column = line.length + 1;
- doc.replace(range, line);
- }
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("error", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("ok", function(e) {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/coffee_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
- var oop = require("../lib/oop");
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
- oop.inherits(CoffeeHighlightRules, TextHighlightRules);
-
- function CoffeeHighlightRules() {
- var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
- var stringfill = {
- token : "string",
- merge : true,
- regex : ".+"
- };
-
- var keywords = (
- "this|throw|then|try|typeof|super|switch|return|break|by)|continue|" +
- "catch|class|in|instanceof|is|isnt|if|else|extends|for|forown|" +
- "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" +
- "or|on|unless|until|and|yes"
- );
-
- var langConstant = (
- "true|false|null|undefined"
- );
-
- var illegal = (
- "case|const|default|function|var|void|with|enum|export|implements|" +
- "interface|let|package|private|protected|public|static|yield|" +
- "__hasProp|extends|slice|bind|indexOf"
- );
-
- var supportClass = (
- "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|" +
- "String|RangeError|SyntaxError|Error|EvalError|TypeError|URIError"
- );
-
- var supportFunction = (
- "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" +
- "encodeURIComponent|decodeURI|decodeURIComponent|String|"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": langConstant,
- "invalid.illegal": illegal,
- "language.support.class": supportClass,
- "language.support.function": supportFunction,
- }, "identifier");
-
- this.$rules = {
- start : [
- {
- token : "identifier",
- regex : "(?:(?:\\.|::)\\s*)" + identifier
- }, {
- token : "variable",
- regex : "@(?:" + identifier + ")?"
- }, {
- token: keywordMapper,
- regex : identifier
- }, {
- token : "constant.numeric",
- regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
- }, {
- token : "string",
- merge : true,
- regex : "'''",
- next : "qdoc"
- }, {
- token : "string",
- merge : true,
- regex : '"""',
- next : "qqdoc"
- }, {
- token : "string",
- merge : true,
- regex : "'",
- next : "qstring"
- }, {
- token : "string",
- merge : true,
- regex : '"',
- next : "qqstring"
- }, {
- token : "string",
- merge : true,
- regex : "`",
- next : "js"
- }, {
- token : "string.regex",
- merge : true,
- regex : "///",
- next : "heregex"
- }, {
- token : "string.regex",
- regex : "/(?!\\s)[^[/\\n\\\\]*(?: (?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[/\\n\\\\]*)*/[imgy]{0,4}(?!\\w)"
- }, {
- token : "comment",
- merge : true,
- regex : "###(?!#)",
- next : "comment"
- }, {
- token : "comment",
- regex : "#.*"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\."
- }, {
- token : "keyword.operator",
- regex : "(?:[\\-=]>|[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
- }, {
- token : "paren.lparen",
- regex : "[({[]"
- }, {
- token : "paren.rparen",
- regex : "[\\]})]"
- }, {
- token : "text",
- regex : "\\s+"
- }],
-
- qdoc : [{
- token : "string",
- regex : ".*?'''",
- next : "start"
- }, stringfill],
-
- qqdoc : [{
- token : "string",
- regex : '.*?"""',
- next : "start"
- }, stringfill],
-
- qstring : [{
- token : "string",
- regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'",
- merge : true,
- next : "start"
- }, stringfill],
-
- qqstring : [{
- token : "string",
- regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
- merge : true,
- next : "start"
- }, stringfill],
-
- js : [{
- token : "string",
- merge : true,
- regex : "[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",
- next : "start"
- }, stringfill],
-
- heregex : [{
- token : "string.regex",
- regex : '.*?///[imgy]{0,4}',
- next : "start"
- }, {
- token : "comment.regex",
- regex : "\\s+(?:#.*)?"
- }, {
- token : "string.regex",
- merge : true,
- regex : "\\S+"
- }],
-
- comment : [{
- token : "comment",
- regex : '.*?###',
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
- }
-
- exports.CoffeeHighlightRules = CoffeeHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var range = this.indentationBlock(session, row);
- if (range)
- return range;
-
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1 || line[startLevel] != "#")
- return;
-
- var startColumn = line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- line = session.getLine(row);
- var level = line.search(re);
-
- if (level == -1)
- continue;
-
- if (line[level] != "#")
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var indent = line.search(/\S/);
- var next = session.getLine(row + 1);
- var prev = session.getLine(row - 1);
- var prevIndent = prev.search(/\S/);
- var nextIndent = next.search(/\S/);
-
- if (indent == -1) {
- session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
- return "";
- }
-
- // documentation comments
- if (prevIndent == -1) {
- if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
- session.foldWidgets[row - 1] = "";
- session.foldWidgets[row + 1] = "";
- return "start";
- }
- } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
- if (session.getLine(row - 2).search(/\S/) == -1) {
- session.foldWidgets[row - 1] = "start";
- session.foldWidgets[row + 1] = "";
- return "";
- }
- }
-
- if (prevIndent!= -1 && prevIndent < indent)
- session.foldWidgets[row - 1] = "start";
- else
- session.foldWidgets[row - 1] = "";
-
- if (indent < nextIndent)
- return "start";
- else
- return "";
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-coldfusion.js b/vendor/assets/javascripts/ace-src-noconflict/mode-coldfusion.js
deleted file mode 100644
index aea4214560e..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-coldfusion.js
+++ /dev/null
@@ -1,1852 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/coldfusion', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/coldfusion_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var XmlMode = require("./xml").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var ColdfusionHighlightRules = require("./coldfusion_highlight_rules").ColdfusionHighlightRules;
-
-var Mode = function() {
- XmlMode.call(this);
-
- var highlighter = new ColdfusionHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
-
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "css-": CssMode
- });
-};
-oop.inherits(Mode, XmlMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
-var XmlFoldMode = require("./folding/xml").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new XmlHighlightRules().getRules());
- this.$behaviour = new XmlBehaviour();
- this.foldingRules = new XmlFoldMode();
-};
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- }],
-
- cdata : [{
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- }],
-
- comment : [{
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
-};
-
-oop.inherits(XmlHighlightRules, TextHighlightRules);
-
-exports.XmlHighlightRules = XmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/coldfusion_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/text_highlight_rules', 'ace/mode/xml_util'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var xml_util = require("./xml_util");
-
-var ColdfusionHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- start : [ {
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xml_util.tag(this.$rules, "tag", "start");
- xml_util.tag(this.$rules, "style", "css-start");
- xml_util.tag(this.$rules, "script", "js-start");
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(ColdfusionHighlightRules, TextHighlightRules);
-
-exports.ColdfusionHighlightRules = ColdfusionHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-csharp.js b/vendor/assets/javascripts/ace-src-noconflict/mode-csharp.js
deleted file mode 100644
index 7aa8082fa42..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-csharp.js
+++ /dev/null
@@ -1,619 +0,0 @@
-ace.define('ace/mode/csharp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/csharp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CSharpHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-
- this.createWorker = function(session) {
- return null;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-ace.define('ace/mode/csharp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CSharpHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": "abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic",
- "constant.language": "null|true|false"
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- regex : "\\/\\*",
- merge : true,
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(CSharpHighlightRules, TextHighlightRules);
-
-exports.CSharpHighlightRules = CSharpHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-css.js b/vendor/assets/javascripts/ace-src-noconflict/mode-css.js
deleted file mode 100644
index 48665f95108..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-css.js
+++ /dev/null
@@ -1,457 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-diff.js b/vendor/assets/javascripts/ace-src-noconflict/mode-diff.js
deleted file mode 100644
index 8d1e7cee096..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-diff.js
+++ /dev/null
@@ -1,244 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/diff', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/diff_highlight_rules', 'ace/mode/folding/diff'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HighlightRules = require("./diff_highlight_rules").DiffHighlightRules;
-var FoldMode = require("./folding/diff").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new HighlightRules().getRules(), "i");
- this.foldingRules = new FoldMode(["diff", "index", "\\+{3}", "@@|\\*{5}"], "i");
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/diff_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DiffHighlightRules = function() {
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [{
- "regex": "^(?:\\*{15}|={67}|-{3}|\\+{3})$",
- "token": "punctuation.definition.separator.diff",
- "name": "keyword"
- }, { //diff.range.inline
- "regex": "^(@@)(\\s*.+?\\s*)(@@)(.*)$",
- "token": [
- "constant",
- "constant.numeric",
- "constant",
- "comment.doc.tag"
- ]
- }, { //diff.range.normal
- "regex": "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",
- "token": [
- "constant.numeric",
- "punctuation.definition.range.diff",
- "constant.function",
- "constant.numeric",
- "punctuation.definition.range.diff",
- "invalid"
- ],
- "name": "meta."
- }, {
- "regex": "^(?:(\\-{3}|\\+{3}|\\*{3})( .+))$",
- "token": [
- "constant.numeric",
- "meta.tag"
- ]
- }, { // added
- "regex": "^([!+>])(.*?)(\\s*)$",
- "token": [
- "support.constant",
- "text",
- "invalid"
- ],
- }, { // removed
- "regex": "^([<\\-])(.*?)(\\s*)$",
- "token": [
- "support.function",
- "string",
- "invalid"
- ],
- }, {
- "regex": "^(diff)(\\s+--\\w+)?(.+?)( .+)?$",
- "token": ["variable", "variable", "keyword", "variable"]
- }, {
- "regex": "^Index.+$",
- "token": "variable"
- }, {
- "regex": "^(.*?)(\\s*)$",
- "token": ["invisible", "invalid"]
- }
- ]
- };
-};
-
-oop.inherits(DiffHighlightRules, TextHighlightRules);
-
-exports.DiffHighlightRules = DiffHighlightRules;
-});
-
-ace.define('ace/mode/folding/diff', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function(levels, flag) {
- this.regExpList = levels;
- this.flag = flag;
- this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag);
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var start = {row: row, column: line.length};
-
- var regList = this.regExpList;
- for (var i = 1; i <= regList.length; i++) {
- var re = RegExp("^(" + regList.slice(0, i).join("|") + ")", this.flag);
- if (re.test(line))
- break;
- }
-
- for (var l = session.getLength(); ++row < l; ) {
- line = session.getLine(row);
- if (re.test(line))
- break;
- }
- if (row == start.row + 1)
- return;
- return Range.fromPoints(start, {row: row - 1, column: line.length});
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-glsl.js b/vendor/assets/javascripts/ace-src-noconflict/mode-glsl.js
deleted file mode 100644
index c46651b20da..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-glsl.js
+++ /dev/null
@@ -1,834 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/glsl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp', 'ace/tokenizer', 'ace/mode/glsl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var CMode = require("./c_cpp").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var glslHighlightRules = require("./glsl_highlight_rules").glslHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new glslHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, CMode);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new c_cppHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-// used by objective-c
-var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b"
-
-var c_cppHighlightRules = function() {
-
- var keywordControls = (
- "break|case|continue|default|do|else|for|goto|if|_Pragma|" +
- "return|switch|while|catch|operator|try|throw|using"
- );
-
- var storageType = (
- "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" +
- "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void" +
- "class|wchar_t|template"
- );
-
- var storageModifiers = (
- "const|extern|register|restrict|static|volatile|inline|private:|" +
- "protected:|public:|friend|explicit|virtual|export|mutable|typename"
- );
-
- var keywordOperators = (
- "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" +
- "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"
- );
-
- var builtinConstants = (
- "NULL|true|false|TRUE|FALSE"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword.control" : keywordControls,
- "storage.type" : storageType,
- "storage.modifier" : storageModifiers,
- "keyword.operator" : keywordOperators,
- "variable.language": "this",
- "constant.language": builtinConstants
- }, "identifier");
-
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant", // <CONSTANT>
- regex : "<[a-zA-Z0-9.]+>"
- }, {
- token : "keyword", // pre-compiler directivs
- regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
- }, {
- token : "support.function.C99.c",
- regex : cFunctions
- }, {
- // function myFunc(arg) { }
- token : [
- "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(\\s+)(" + identifierRe + ")(\\s*)(\\()"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(c_cppHighlightRules, TextHighlightRules);
-
-exports.c_cppHighlightRules = c_cppHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/glsl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules;
-
-var glslHighlightRules = function() {
-
- var keywords = (
- "attribute|const|uniform|varying|break|continue|do|for|while|" +
- "if|else|in|out|inout|float|int|void|bool|true|false|" +
- "lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|" +
- "mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|" +
- "samplerCube|struct"
- );
-
- var buildinConstants = (
- "radians|degrees|sin|cos|tan|asin|acos|atan|pow|" +
- "exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|" +
- "min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|" +
- "normalize|faceforward|reflect|refract|matrixCompMult|lessThan|" +
- "lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|" +
- "not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|" +
- "texture2DProjLod|textureCube|textureCubeLod|" +
- "gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|" +
- "gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|" +
- "gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|" +
- "gl_DepthRangeParameters|gl_DepthRange|" +
- // The following two are only for MIME x-shader/x-vertex.
- "gl_Position|gl_PointSize|" +
- // The following five are only for MIME x-shader/x-fragment.
- "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": buildinConstants
- }, "identifier");
-
- this.$rules = new c_cppHighlightRules().$rules;
- this.$rules.start.forEach(function(rule) {
- if (typeof rule.token == "function")
- rule.token = keywordMapper;
- })
-};
-
-oop.inherits(glslHighlightRules, c_cppHighlightRules);
-
-exports.glslHighlightRules = glslHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-golang.js b/vendor/assets/javascripts/ace-src-noconflict/mode-golang.js
deleted file mode 100644
index c894682da0f..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-golang.js
+++ /dev/null
@@ -1,674 +0,0 @@
-ace.define('ace/mode/golang', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/golang_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
- var oop = require("../lib/oop");
- var TextMode = require("./text").Mode;
- var Tokenizer = require("../tokenizer").Tokenizer;
- var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
- var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
- var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
- var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
- var Mode = function() {
- this.$tokenizer = new Tokenizer(new GolangHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
- };
- oop.inherits(Mode, TextMode);
-
- (function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var outentedRows = [];
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };//end getNextLineIndent
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- }).call(Mode.prototype);
-
- exports.Mode = Mode;
-});
-ace.define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
- var oop = require("../lib/oop");
- var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
- var GolangHighlightRules = function() {
- var keywords = (
- "true|else|false|break|case|return|goto|if|const|" +
- "continue|struct|default|switch|for|" +
- "func|import|package|chan|defer|fallthrough|go|interface|map|range" +
- "select|type|var"
- );
- var buildinConstants = ("nil|true|false|iota");
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": buildinConstants
- }, "identifier");
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant", // <CONSTANT>
- regex : "<[a-zA-Z0-9.]+>"
- }, {
- token : "keyword", // pre-compiler directivs
- regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
- }
- oop.inherits(GolangHighlightRules, TextHighlightRules);
-
- exports.GolangHighlightRules = GolangHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-groovy.js b/vendor/assets/javascripts/ace-src-noconflict/mode-groovy.js
deleted file mode 100644
index 80d153d8fbd..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-groovy.js
+++ /dev/null
@@ -1,1160 +0,0 @@
-ace.define('ace/mode/groovy', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/groovy_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var JavaScriptMode = require("./javascript").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRules;
-
-var Mode = function() {
- JavaScriptMode.call(this);
- this.$tokenizer = new Tokenizer(new GroovyHighlightRules().getRules());
-};
-oop.inherits(Mode, JavaScriptMode);
-
-(function() {
-
- this.createWorker = function(session) {
- return null;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-ace.define('ace/mode/groovy_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var GroovyHighlightRules = function() {
-
- var keywords = (
- "assert|with|abstract|continue|for|new|switch|" +
- "assert|default|goto|package|synchronized|" +
- "boolean|do|if|private|this|" +
- "break|double|implements|protected|throw|" +
- "byte|else|import|public|throws|" +
- "case|enum|instanceof|return|transient|" +
- "catch|extends|int|short|try|" +
- "char|final|interface|static|void|" +
- "class|finally|long|strictfp|volatile|" +
- "def|float|native|super|while"
- );
-
- var buildinConstants = (
- "null|Infinity|NaN|undefined"
- );
-
- var langClasses = (
- "AbstractMethodError|AssertionError|ClassCircularityError|"+
- "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+
- "ExceptionInInitializerError|IllegalAccessError|"+
- "IllegalThreadStateException|InstantiationError|InternalError|"+
- "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+
- "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+
- "SuppressWarnings|TypeNotPresentException|UnknownError|"+
- "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+
- "InstantiationException|IndexOutOfBoundsException|"+
- "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+
- "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+
- "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+
- "InterruptedException|NoSuchMethodException|IllegalAccessException|"+
- "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+
- "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+
- "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+
- "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+
- "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+
- "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+
- "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+
- "ArrayStoreException|ClassCastException|LinkageError|"+
- "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+
- "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+
- "Cloneable|Class|CharSequence|Comparable|String|Object"
- );
-
- // TODO var importClasses = "";
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "support.function": langClasses,
- "constant.language": buildinConstants
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string",
- regex : '"""',
- next : "qqstring"
- }, {
- token : "string",
- regex : "'''",
- next : "qstring"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/
- }, {
- token : "constant.language.escape",
- regex : /\$[\w\d]+/
- }, {
- token : "constant.language.escape",
- regex : /\$\{[^"\}]+\}?/
- }, {
- token : "string",
- regex : '"{3,5}',
- next : "start"
- }, {
- token : "string",
- regex : '.+?'
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/
- }, {
- token : "string",
- regex : "'{3,5}",
- next : "start"
- }, {
- token : "string",
- regex : ".+?"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(GroovyHighlightRules, TextHighlightRules);
-
-exports.GroovyHighlightRules = GroovyHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-haxe.js b/vendor/assets/javascripts/ace-src-noconflict/mode-haxe.js
deleted file mode 100644
index 78910005af7..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-haxe.js
+++ /dev/null
@@ -1,624 +0,0 @@
-ace.define('ace/mode/haxe', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/haxe_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HaxeHighlightRules = require("./haxe_highlight_rules").HaxeHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new HaxeHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-ace.define('ace/mode/haxe_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var HaxeHighlightRules = function() {
-
- var keywords = (
- "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std"
- );
-
- var buildinConstants = (
- "null|true|false"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": buildinConstants
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- regex : "\\/\\*",
- merge : true,
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({<]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}>]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(HaxeHighlightRules, TextHighlightRules);
-
-exports.HaxeHighlightRules = HaxeHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-html.js b/vendor/assets/javascripts/ace-src-noconflict/mode-html.js
deleted file mode 100644
index 5ec11f141c0..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-html.js
+++ /dev/null
@@ -1,1950 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour;
-var HtmlFoldMode = require("./folding/html").FoldMode;
-
-var Mode = function() {
- var highlighter = new HtmlHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$behaviour = new HtmlBehaviour();
-
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "css-": CssMode
- });
-
- this.foldingRules = new HtmlFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- return 0;
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
- this.checkOutdent = function(state, line, input) {
- return false;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var XmlBehaviour = require("../behaviour/xml").XmlBehaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var HtmlBehaviour = function () {
-
- this.inherit(XmlBehaviour); // Get xml behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var element = token.value;
- if (atCursor){
- var element = element.substring(0, position.column - token.start);
- }
- if (voidElements.indexOf(element) !== -1){
- return;
- }
- return {
- text: '>' + '</' + element + '>',
- selection: [1, 1]
- }
- }
- });
-}
-oop.inherits(HtmlBehaviour, XmlBehaviour);
-
-exports.HtmlBehaviour = HtmlBehaviour;
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/folding/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var MixedFoldMode = require("./mixed").FoldMode;
-var XmlFoldMode = require("./xml").FoldMode;
-var CStyleFoldMode = require("./cstyle").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {
- MixedFoldMode.call(this, new XmlFoldMode({
- // void elements
- "area": 1,
- "base": 1,
- "br": 1,
- "col": 1,
- "command": 1,
- "embed": 1,
- "hr": 1,
- "img": 1,
- "input": 1,
- "keygen": 1,
- "link": 1,
- "meta": 1,
- "param": 1,
- "source": 1,
- "track": 1,
- "wbr": 1,
-
- // optional tags
- "li": 1,
- "dt": 1,
- "dd": 1,
- "p": 1,
- "rt": 1,
- "rp": 1,
- "optgroup": 1,
- "option": 1,
- "colgroup": 1,
- "td": 1,
- "th": 1
- }), {
- "js-": new CStyleFoldMode(),
- "css-": new CStyleFoldMode()
- });
-};
-
-oop.inherits(FoldMode, MixedFoldMode);
-
-});
-
-ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
- this.defaultMode = defaultMode;
- this.subModes = subModes;
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
-
- this.$getMode = function(state) {
- for (var key in this.subModes) {
- if (state.indexOf(key) === 0)
- return this.subModes[key];
- }
- return null;
- };
-
- this.$tryMode = function(state, session, foldStyle, row) {
- var mode = this.$getMode(state);
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
- };
-
- this.getFoldWidget = function(session, foldStyle, row) {
- return (
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
- this.defaultMode.getFoldWidget(session, foldStyle, row)
- );
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var mode = this.$getMode(session.getState(row-1));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.$getMode(session.getState(row));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.defaultMode;
-
- return mode.getFoldWidgetRange(session, foldStyle, row);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-jade.js b/vendor/assets/javascripts/ace-src-noconflict/mode-jade.js
deleted file mode 100644
index 32aafd17c9e..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-jade.js
+++ /dev/null
@@ -1,2038 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2012, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- * Contributor(s):
- *
- * Garen J. Torikian <gjtorikian @ gmail DOT com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/jade', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jade_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules;
-// var JavascriptMode = require("ace/mode/javascript").Mode;
-// var CssMode = require("ace/mode/css").Mode;
-
-var Mode = function() {
- var highlighter = new JadeHighlightRules();
-
- this.$tokenizer = new Tokenizer(highlighter.getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- // Extra logic goes here.
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-/*
- THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B)
-*/
-
-ace.define('ace/mode/jade_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/markdown_highlight_rules', 'ace/mode/scss_highlight_rules', 'ace/mode/less_highlight_rules', 'ace/mode/coffee_highlight_rules', 'ace/mode/javascript_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules;
-var SassHighlightRules = require("./scss_highlight_rules").ScssHighlightRules;
-var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules;
-var CoffeeHighlightRules = require("./coffee_highlight_rules").CoffeeHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-
-function mixin_embed(tag, prefix) {
- return {
- token : "entity.name.function.jade",
- regex : "^\\s*\\:" + tag,
- next : prefix + "start"
- };
-}
-
-var JadeHighlightRules = function() {
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules =
- {
- "start": [
- {
- "token": "keyword.control.import.include.jade",
- "regex": "\\s*\\binclude\\b"
- },
- {
- "token": "keyword.other.doctype.jade",
- "regex": "^!!!\\s*(?:[a-zA-Z0-9-_]+)?"
- },
- {
- "token" : "punctuation.section.comment",
- "regex" : "^\\s*\/\/(?:\\s*[^-\\s]|\\s+\\S)(?:.*$)",
- },
- {
- "token" : function(space, text) {
- return "punctuation.section.comment";
- },
- "regex" : "^((\\s*)\/\/)(?:\\s*$)",
- "next": "comment_block"
- },
- mixin_embed("markdown", "markdown-"),
- mixin_embed("sass", "sass-"),
- mixin_embed("less", "less-"),
- mixin_embed("coffee", "coffee-"),
- /*
- {
- "token": {
- "2": {
- "name": "entity.name.function.jade"
- }
- },
- "regex": "^(\\s*)(\\:cdata)",
- "next": "state_9"
- },*/
- // match stuff like: mixin dialog-title-desc(title, desc)
- {
- "token": [ "storage.type.function.jade",
- "entity.name.function.jade",
- "punctuation.definition.parameters.begin.jade",
- "variable.parameter.function.jade",
- "punctuation.definition.parameters.end.jade"
- ],
- "regex": "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"
- },
- // match stuff like: mixin dialog-title-desc
- {
- "token": [ "storage.type.function.jade", "entity.name.function.jade"],
- "regex": "^(\\s*mixin)( [\\w\\-]+)"
- },
- /* {
- "token": "source.js.embedded.jade",
- "regex": "^\\s*-|=|!=",
- "next": "js_code"
- },*/
- /*{
- "token": "entity.name.tag.script.jade",
- "regex": "^\\s*script",
- "next": "js_code_tag"
- },*/
- {
- "token": "string.interpolated.jade",
- "regex": "[#!]\\{[^\\}]+\\}"
- },
- // Match any tag, id or class. skip AST filters
- {
- "token": ["meta.tag.any.jade", "entity.variable.tag.jade"],
- "regex": /^\s*(?!\w+\:)(?:[\w]+|(?=\.|#)])/,
- "next": "tag_single"
- },
- {
- "token": "suport.type.attribute.id.jade",
- "regex": "#\\w+"
- },
- {
- "token": "suport.type.attribute.class.jade",
- "regex": "\\.\\w+"
- },
- {
- "token": "punctuation",
- "regex": "\\s*(?:\\()",
- "next": "tag_attributes"
- }
- ],
- "comment_block": [
- {
- "token": function(text) {
- return "text";
- },
- "regex": "^(\\1\\S|$)",
- "captures": "1",
- "next": "start"
- },
- {
- "token": "comment.block.jade",
- "merge" : true,
- "regex" : ".+"
- }
- ],
- /*
-
- "state_9": [
- {
- "token": "TODO",
- "regex": "^(?!\\1\\s+)",
- "next": "start"
- },
- {
- "token": "TODO",
- "regex": ".+",
- "next": "state_9"
- }
- ],*/
- /*"js_code": [
- {
- "token": "keyword.control.js",
- "regex": "\\beach\\b"
- },
- {
- "token": "text",
- "regex": "$",
- "next": "start"
- }
- ],*/
- /*"js_code_tag": [
- {
- "include": "source.js"
- },
- {
- "token": "TODO",
- "regex": "^((?=(\\1)([\\w#\\.]|$\\n?))|^$\\n?)",
- "next": "start"
- }
- ],*/
- "tag_single": [
- {
- "token": "suport.type.attribute.class.jade",
- "regex": "\\.[\\w-]+"
- },
- {
- "token": "suport.type.attribute.id.jade",
- "regex": "#[\\w-]+"
- },
- {
- "token": ["text", "punctuation"],
- "regex": "($)|((?!\\.|#|=|-))",
- "next": "start"
- }
- ],
- "tag_attributes": [
- {
- "token": ["entity.other.attribute-name.jade", "punctuation"],
- "regex": "\\b([a-zA-Z:\\.-]+)(=)",
- "next": "attribute_strings"
- },
- {
- "token": "punctuation",
- "regex": "\\)",
- "next": "start"
- }
- ],
- "attribute_strings": [
- {
- "token" : "string",
- "regex" : "'(?=.)",
- "next" : "qstring"
- },
- {
- "token" : "string",
- "regex" : '"(?=.)',
- "next" : "qqstring"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "tag_attributes",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "tag_attributes",
- merge : true
- }
- ]
-};
-};
-
-oop.inherits(JadeHighlightRules, TextHighlightRules);
-
-exports.JadeHighlightRules = JadeHighlightRules;
-});
-
-ace.define('ace/mode/markdown_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules', 'ace/mode/html_highlight_rules', 'ace/mode/css_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-
-function github_embed(tag, prefix) {
- return { // Github style block
- token : "support.function",
- regex : "^```" + tag + "\\s*$",
- next : prefix + "start"
- };
-}
-
-var MarkdownHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [ {
- token : "empty_line",
- regex : '^$'
- }, { // code span `
- token : ["support.function", "support.function", "support.function"],
- regex : "(`+)([^\\r]*?[^`])(\\1)"
- }, { // code block
- token : "support.function",
- regex : "^[ ]{4}.+"
- }, { // h1
- token: "markup.heading.1",
- regex: "^=+(?=\\s*$)"
- }, { // h2
- token: "markup.heading.2",
- regex: "^\\-+(?=\\s*$)"
- }, { // header
- token : function(value) {
- return "markup.heading." + value.search(/[^#]/);
- },
- regex : "^#{1,6}(?:[^ #].*| +.*(?:[^ #].*|[^ ]+.* +#+ *))$"
- }, github_embed("(?:javascript|js)", "js-"),
- github_embed("xml", "xml-"),
- github_embed("html", "html-"),
- github_embed("css", "css-"),
- { // Github style block
- token : "support.function",
- regex : "^```[a-zA-Z]+\\s*$",
- next : "githubblock"
- }, { // block quote
- token : "string",
- regex : "^>[ ].+$",
- next : "blockquote"
- }, { // reference
- token : ["text", "constant", "text", "url", "string", "text"],
- regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$"
- }, { // link by reference
- token : ["text", "string", "text", "constant", "text"],
- regex : "(\\[)((?:[[^\\]]*\\]|[^\\[\\]])*)(\\][ ]?(?:\\n[ ]*)?\\[)(.*?)(\\])"
- }, { // link by url
- token : ["text", "string", "text", "markup.underline", "string", "text"],
- regex : "(\\[)"+
- "(\\[[^\\]]*\\]|[^\\[\\]]*)"+
- "(\\]\\([ \\t]*)"+
- "(<?(?:(?:[^\\(]*?\\([^\\)]*?\\)\\S*?)|(?:.*?))>?)"+
- "((?:[ \t]*\"(?:.*?)\"[ \\t]*)?)"+
- "(\\))"
- }, { // HR *
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\*[ ]?){3,}\\s*$"
- }, { // HR -
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\-[ ]?){3,}\\s*$"
- }, { // HR _
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\_[ ]?){3,}\\s*$"
- }, { // list
- token : "markup.list",
- regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
- next : "listblock"
- }, { // strong ** __
- token : ["string", "string", "string"],
- regex : "([*]{2}|[_]{2}(?=\\S))([^\\r]*?\\S[*_]*)(\\1)"
- }, { // emphasis * _
- token : ["string", "string", "string"],
- regex : "([*]|[_](?=\\S))([^\\r]*?\\S[*_]*)(\\1)"
- }, { //
- token : ["text", "url", "text"],
- regex : "(<)("+
- "(?:https?|ftp|dict):[^'\">\\s]+"+
- "|"+
- "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+
- ")(>)"
- }, {
- token : "text",
- regex : "[^\\*_%$`\\[#<>]+"
- } ],
-
- "listblock" : [ { // Lists only escape on completely blank lines.
- token : "empty_line",
- regex : "^$",
- next : "start"
- }, {
- token : "markup.list",
- regex : ".+"
- } ],
-
- "blockquote" : [ { // BLockquotes only escape on blank lines.
- token : "empty_line",
- regex : "^\\s*$",
- next : "start"
- }, {
- token : "string",
- regex : ".+"
- } ],
-
- "githubblock" : [ {
- token : "support.function",
- regex : "^```",
- next : "start"
- }, {
- token : "support.function",
- regex : ".+"
- } ]
- };
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(HtmlHighlightRules, "html-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(XmlHighlightRules, "xml-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-};
-oop.inherits(MarkdownHighlightRules, TextHighlightRules);
-
-exports.MarkdownHighlightRules = MarkdownHighlightRules;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- }],
-
- cdata : [{
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- }],
-
- comment : [{
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
-};
-
-oop.inherits(XmlHighlightRules, TextHighlightRules);
-
-exports.XmlHighlightRules = XmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/scss_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var ScssHighlightRules = function() {
-
- var properties = lang.arrayToMap( (function () {
-
- var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
-
- var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
- "background-size|binding|border-bottom-colors|border-left-colors|" +
- "border-right-colors|border-top-colors|border-end|border-end-color|" +
- "border-end-style|border-end-width|border-image|border-start|" +
- "border-start-color|border-start-style|border-start-width|box-align|" +
- "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
- "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
- "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
- "font-feature-settings|font-language-override|force-broken-image-icon|" +
- "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
- "outline-offset|outline-radius|outline-radius-bottomleft|" +
- "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
- "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
- "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
- "text-decoration-style|transform|transform-origin|transition|" +
- "transition-delay|transition-duration|transition-property|" +
- "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
- "window-shadow|border-radius").split("|");
-
- var properties = ("azimuth|background-attachment|background-color|background-image|" +
- "background-position|background-repeat|background|border-bottom-color|" +
- "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
- "border-color|border-left-color|border-left-style|border-left-width|" +
- "border-left|border-right-color|border-right-style|border-right-width|" +
- "border-right|border-spacing|border-style|border-top-color|" +
- "border-top-style|border-top-width|border-top|border-width|border|" +
- "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
- "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
- "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
- "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
- "letter-spacing|line-height|list-style-image|list-style-position|" +
- "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
- "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
- "min-width|opacity|orphans|outline-color|" +
- "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
- "padding-left|padding-right|padding-top|padding|page-break-after|" +
- "page-break-before|page-break-inside|page|pause-after|pause-before|" +
- "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
- "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
- "stress|table-layout|text-align|text-decoration|text-indent|" +
- "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
- "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
- "z-index").split("|");
-
- //The return array
- var ret = [];
-
- //All prefixProperties will get the browserPrefix in
- //the begning by join the prefixProperties array with the value of browserPrefix
- for (var i=0, ln=browserPrefix.length; i<ln; i++) {
- Array.prototype.push.apply(
- ret,
- (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
- );
- }
-
- //Add also prefixProperties and properties without any browser prefix
- Array.prototype.push.apply(ret, prefixProperties);
- Array.prototype.push.apply(ret, properties);
-
- return ret;
-
- })() );
-
-
-
- var functions = lang.arrayToMap(
- ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" +
- "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" +
- "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" +
- "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" +
- "scale_color|transparentize|type_of|unit|unitless|unqoute").split("|")
- );
-
- var constants = lang.arrayToMap(
- ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
- "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
- "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
- "decimal-leading-zero|decimal|default|disabled|disc|" +
- "distribute-all-lines|distribute-letter|distribute-space|" +
- "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
- "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
- "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
- "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
- "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
- "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
- "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
- "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
- "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
- "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
- "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
- "solid|square|static|strict|super|sw-resize|table-footer-group|" +
- "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
- "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
- "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
- "zero").split("|")
- );
-
- var colors = lang.arrayToMap(
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
- "purple|red|silver|teal|white|yellow").split("|")
- );
-
- var keywords = lang.arrayToMap(
- ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|")
- )
-
- var tags = lang.arrayToMap(
- ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
- "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
- "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
- "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
- "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
- "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
- "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
- "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
- "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
- );
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric",
- regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : "constant.numeric",
- regex : numRe
- }, {
- token : function(value) {
- if (properties.hasOwnProperty(value.toLowerCase()))
- return "support.type";
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (constants.hasOwnProperty(value))
- return "constant.language";
- else if (functions.hasOwnProperty(value))
- return "support.function";
- else if (colors.hasOwnProperty(value.toLowerCase()))
- return "support.constant.color";
- else if (tags.hasOwnProperty(value.toLowerCase()))
- return "variable.language";
- else
- return "text";
- },
- regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
- }, {
- token : "variable",
- regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b"
- }, {
- token: "variable.language",
- regex: "#[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: "\\.[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: ":[a-z0-9-_]+"
- }, {
- token: "constant",
- regex: "[a-z0-9-_]+"
- }, {
- token : "keyword.operator",
- regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-};
-
-oop.inherits(ScssHighlightRules, TextHighlightRules);
-
-exports.ScssHighlightRules = ScssHighlightRules;
-
-});
-
-ace.define('ace/mode/less_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LessHighlightRules = function() {
-
- var properties = lang.arrayToMap( (function () {
-
- var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
-
- var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
- "background-size|binding|border-bottom-colors|border-left-colors|" +
- "border-right-colors|border-top-colors|border-end|border-end-color|" +
- "border-end-style|border-end-width|border-image|border-start|" +
- "border-start-color|border-start-style|border-start-width|box-align|" +
- "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
- "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
- "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
- "font-feature-settings|font-language-override|force-broken-image-icon|" +
- "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
- "outline-offset|outline-radius|outline-radius-bottomleft|" +
- "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
- "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
- "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
- "text-decoration-style|transform|transform-origin|transition|" +
- "transition-delay|transition-duration|transition-property|" +
- "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
- "window-shadow|border-radius").split("|");
-
- var properties = ("azimuth|background-attachment|background-color|background-image|" +
- "background-position|background-repeat|background|border-bottom-color|" +
- "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
- "border-color|border-left-color|border-left-style|border-left-width|" +
- "border-left|border-right-color|border-right-style|border-right-width|" +
- "border-right|border-spacing|border-style|border-top-color|" +
- "border-top-style|border-top-width|border-top|border-width|border|" +
- "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
- "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
- "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
- "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
- "letter-spacing|line-height|list-style-image|list-style-position|" +
- "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
- "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
- "min-width|opacity|orphans|outline-color|" +
- "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
- "padding-left|padding-right|padding-top|padding|page-break-after|" +
- "page-break-before|page-break-inside|page|pause-after|pause-before|" +
- "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
- "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
- "stress|table-layout|text-align|text-decoration|text-indent|" +
- "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
- "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
- "z-index").split("|");
-
- //The return array
- var ret = [];
-
- //All prefixProperties will get the browserPrefix in
- //the begning by join the prefixProperties array with the value of browserPrefix
- for (var i=0, ln=browserPrefix.length; i<ln; i++) {
- Array.prototype.push.apply(
- ret,
- (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
- );
- }
-
- //Add also prefixProperties and properties without any browser prefix
- Array.prototype.push.apply(ret, prefixProperties);
- Array.prototype.push.apply(ret, properties);
-
- return ret;
-
- })() );
-
-
-
- var functions = lang.arrayToMap(
- ("hsl|hsla|rgb|rgba|url|attr|counter|counters|lighten|darken|saturate|" +
- "desaturate|fadein|fadeout|fade|spin|mix|hue|saturation|lightness|" +
- "alpha|round|ceil|floor|percentage|color|iscolor|isnumber|isstring|" +
- "iskeyword|isurl|ispixel|ispercentage|isem").split("|")
- );
-
- var constants = lang.arrayToMap(
- ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
- "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
- "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
- "decimal-leading-zero|decimal|default|disabled|disc|" +
- "distribute-all-lines|distribute-letter|distribute-space|" +
- "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
- "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
- "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
- "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
- "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
- "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
- "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
- "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
- "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
- "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
- "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
- "solid|square|static|strict|super|sw-resize|table-footer-group|" +
- "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
- "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
- "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
- "zero").split("|")
- );
-
- var colors = lang.arrayToMap(
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
- "purple|red|silver|teal|white|yellow").split("|")
- );
-
- var keywords = lang.arrayToMap(
- ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|" +
- "@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|" +
- "def|end|declare|when|not|and").split("|")
- );
-
- var tags = lang.arrayToMap(
- ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
- "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
- "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
- "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
- "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
- "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
- "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
- "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
- "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
- );
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric",
- regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : "constant.numeric",
- regex : numRe
- }, {
- token : function(value) {
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else
- return "variable";
- },
- regex : "@[a-z0-9_\\-@]*\\b"
- }, {
- token : function(value) {
- if (properties.hasOwnProperty(value.toLowerCase()))
- return "support.type";
- else if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (constants.hasOwnProperty(value))
- return "constant.language";
- else if (functions.hasOwnProperty(value))
- return "support.function";
- else if (colors.hasOwnProperty(value.toLowerCase()))
- return "support.constant.color";
- else if (tags.hasOwnProperty(value.toLowerCase()))
- return "variable.language";
- else
- return "text";
- },
- regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
- }, {
- token: "variable.language",
- regex: "#[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: "\\.[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: ":[a-z0-9-_]+"
- }, {
- token: "constant",
- regex: "[a-z0-9-_]+"
- }, {
- token : "keyword.operator",
- regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-};
-
-oop.inherits(LessHighlightRules, TextHighlightRules);
-
-exports.LessHighlightRules = LessHighlightRules;
-
-});
-
-ace.define('ace/mode/coffee_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
- var oop = require("../lib/oop");
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
- oop.inherits(CoffeeHighlightRules, TextHighlightRules);
-
- function CoffeeHighlightRules() {
- var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
- var stringfill = {
- token : "string",
- merge : true,
- regex : ".+"
- };
-
- var keywords = (
- "this|throw|then|try|typeof|super|switch|return|break|by)|continue|" +
- "catch|class|in|instanceof|is|isnt|if|else|extends|for|forown|" +
- "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" +
- "or|on|unless|until|and|yes"
- );
-
- var langConstant = (
- "true|false|null|undefined"
- );
-
- var illegal = (
- "case|const|default|function|var|void|with|enum|export|implements|" +
- "interface|let|package|private|protected|public|static|yield|" +
- "__hasProp|extends|slice|bind|indexOf"
- );
-
- var supportClass = (
- "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|" +
- "String|RangeError|SyntaxError|Error|EvalError|TypeError|URIError"
- );
-
- var supportFunction = (
- "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" +
- "encodeURIComponent|decodeURI|decodeURIComponent|String|"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": langConstant,
- "invalid.illegal": illegal,
- "language.support.class": supportClass,
- "language.support.function": supportFunction,
- }, "identifier");
-
- this.$rules = {
- start : [
- {
- token : "identifier",
- regex : "(?:(?:\\.|::)\\s*)" + identifier
- }, {
- token : "variable",
- regex : "@(?:" + identifier + ")?"
- }, {
- token: keywordMapper,
- regex : identifier
- }, {
- token : "constant.numeric",
- regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
- }, {
- token : "string",
- merge : true,
- regex : "'''",
- next : "qdoc"
- }, {
- token : "string",
- merge : true,
- regex : '"""',
- next : "qqdoc"
- }, {
- token : "string",
- merge : true,
- regex : "'",
- next : "qstring"
- }, {
- token : "string",
- merge : true,
- regex : '"',
- next : "qqstring"
- }, {
- token : "string",
- merge : true,
- regex : "`",
- next : "js"
- }, {
- token : "string.regex",
- merge : true,
- regex : "///",
- next : "heregex"
- }, {
- token : "string.regex",
- regex : "/(?!\\s)[^[/\\n\\\\]*(?: (?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[/\\n\\\\]*)*/[imgy]{0,4}(?!\\w)"
- }, {
- token : "comment",
- merge : true,
- regex : "###(?!#)",
- next : "comment"
- }, {
- token : "comment",
- regex : "#.*"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\."
- }, {
- token : "keyword.operator",
- regex : "(?:[\\-=]>|[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
- }, {
- token : "paren.lparen",
- regex : "[({[]"
- }, {
- token : "paren.rparen",
- regex : "[\\]})]"
- }, {
- token : "text",
- regex : "\\s+"
- }],
-
- qdoc : [{
- token : "string",
- regex : ".*?'''",
- next : "start"
- }, stringfill],
-
- qqdoc : [{
- token : "string",
- regex : '.*?"""',
- next : "start"
- }, stringfill],
-
- qstring : [{
- token : "string",
- regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'",
- merge : true,
- next : "start"
- }, stringfill],
-
- qqstring : [{
- token : "string",
- regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
- merge : true,
- next : "start"
- }, stringfill],
-
- js : [{
- token : "string",
- merge : true,
- regex : "[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",
- next : "start"
- }, stringfill],
-
- heregex : [{
- token : "string.regex",
- regex : '.*?///[imgy]{0,4}',
- next : "start"
- }, {
- token : "comment.regex",
- regex : "\\s+(?:#.*)?"
- }, {
- token : "string.regex",
- merge : true,
- regex : "\\S+"
- }],
-
- comment : [{
- token : "comment",
- regex : '.*?###',
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
- }
-
- exports.CoffeeHighlightRules = CoffeeHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-java.js b/vendor/assets/javascripts/ace-src-noconflict/mode-java.js
deleted file mode 100644
index c05bf0f9e75..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-java.js
+++ /dev/null
@@ -1,1120 +0,0 @@
-ace.define('ace/mode/java', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/java_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var JavaScriptMode = require("./javascript").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules;
-
-var Mode = function() {
- JavaScriptMode.call(this);
-
- this.$tokenizer = new Tokenizer(new JavaHighlightRules().getRules());
-};
-oop.inherits(Mode, JavaScriptMode);
-
-(function() {
-
- this.createWorker = function(session) {
- return null;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-ace.define('ace/mode/java_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaHighlightRules = function() {
-
- // taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
- var keywords = (
- "abstract|continue|for|new|switch|" +
- "assert|default|goto|package|synchronized|" +
- "boolean|do|if|private|this|" +
- "break|double|implements|protected|throw|" +
- "byte|else|import|public|throws|" +
- "case|enum|instanceof|return|transient|" +
- "catch|extends|int|short|try|" +
- "char|final|interface|static|void|" +
- "class|finally|long|strictfp|volatile|" +
- "const|float|native|super|while"
- );
-
- var buildinConstants = ("null|Infinity|NaN|undefined");
-
-
- var langClasses = (
- "AbstractMethodError|AssertionError|ClassCircularityError|"+
- "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+
- "ExceptionInInitializerError|IllegalAccessError|"+
- "IllegalThreadStateException|InstantiationError|InternalError|"+
- "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+
- "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+
- "SuppressWarnings|TypeNotPresentException|UnknownError|"+
- "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+
- "InstantiationException|IndexOutOfBoundsException|"+
- "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+
- "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+
- "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+
- "InterruptedException|NoSuchMethodException|IllegalAccessException|"+
- "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+
- "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+
- "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+
- "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+
- "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+
- "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+
- "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+
- "ArrayStoreException|ClassCastException|LinkageError|"+
- "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+
- "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+
- "Cloneable|Class|CharSequence|Comparable|String|Object"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": buildinConstants,
- "support.function": langClasses,
-
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaHighlightRules, TextHighlightRules);
-
-exports.JavaHighlightRules = JavaHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-javascript.js b/vendor/assets/javascripts/ace-src-noconflict/mode-javascript.js
deleted file mode 100644
index 90cf57eb5f4..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-javascript.js
+++ /dev/null
@@ -1,990 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-json.js b/vendor/assets/javascripts/ace-src-noconflict/mode-json.js
deleted file mode 100644
index 19260b4729b..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-json.js
+++ /dev/null
@@ -1,581 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("error", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("ok", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/json_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JsonHighlightRules = function() {
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
- this.$rules = {
- "start" : [
- {
- token : "variable", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
- }, {
- token : "string", // single line
- regex : '"',
- next : "string"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : "invalid.illegal", // single quoted strings are not allowed
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "invalid.illegal", // comments are not allowed
- regex : "\\/\\/.*$"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "string" : [
- {
- token : "constant.language.escape",
- regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : '"',
- next : "start",
- merge : true
- }, {
- token : "string",
- regex : "",
- next : "start",
- merge : true
- }
- ]
- };
-
-};
-
-oop.inherits(JsonHighlightRules, TextHighlightRules);
-
-exports.JsonHighlightRules = JsonHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-jsp.js b/vendor/assets/javascripts/ace-src-noconflict/mode-jsp.js
deleted file mode 100644
index e4f4bcffed3..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-jsp.js
+++ /dev/null
@@ -1,1664 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/jsp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jsp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/mode/javascript', 'ace/mode/css'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JspHighlightRules = require("./jsp_highlight_rules").JspHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-
-var Mode = function() {
- var highlighter = new JspHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/jsp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/java_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules;
-
-var JspHighlightRules = function() {
- HtmlHighlightRules.call(this);
- for (var i in this.$rules) {
- this.$rules[i].unshift({
- token : "meta.tag", // jsp open tag
- regex : "<%@?|<%=?|<jsp:[^>]+>",
- next : "jsp-start"
- });
- }
-
- var builtinVariables = 'request|response|out|session|' +
- 'application|config|pageContext|page|Exception';
-
- var keywords = 'page|include|taglib';
-
- this.embedRules(JavaHighlightRules, "jsp-");
-
- this.$rules["start"].unshift({
- token : "comment",
- merge : true,
- regex : "<%--",
- next : "comment"
- });
-
- this.$rules["jsp-start"].unshift({
- token : "meta.tag", // jsp close tag
- regex : "%>|<\\/jsp:[^>]+>",
- next : "start"
- },
- {
- token: "variable.language",
- regex : builtinVariables
- }, {
- token: "keyword",
- regex : keywords
- });
-
- this.$rules.comment.unshift({
- token : "comment",
- regex : ".*?--%>",
- next : "start"
- });
-};
-
-oop.inherits(JspHighlightRules, HtmlHighlightRules);
-
-exports.JspHighlightRules = JspHighlightRules;
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-ace.define('ace/mode/java_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaHighlightRules = function() {
-
- // taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
- var keywords = (
- "abstract|continue|for|new|switch|" +
- "assert|default|goto|package|synchronized|" +
- "boolean|do|if|private|this|" +
- "break|double|implements|protected|throw|" +
- "byte|else|import|public|throws|" +
- "case|enum|instanceof|return|transient|" +
- "catch|extends|int|short|try|" +
- "char|final|interface|static|void|" +
- "class|finally|long|strictfp|volatile|" +
- "const|float|native|super|while"
- );
-
- var buildinConstants = ("null|Infinity|NaN|undefined");
-
-
- var langClasses = (
- "AbstractMethodError|AssertionError|ClassCircularityError|"+
- "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+
- "ExceptionInInitializerError|IllegalAccessError|"+
- "IllegalThreadStateException|InstantiationError|InternalError|"+
- "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+
- "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+
- "SuppressWarnings|TypeNotPresentException|UnknownError|"+
- "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+
- "InstantiationException|IndexOutOfBoundsException|"+
- "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+
- "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+
- "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+
- "InterruptedException|NoSuchMethodException|IllegalAccessException|"+
- "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+
- "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+
- "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+
- "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+
- "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+
- "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+
- "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+
- "ArrayStoreException|ClassCastException|LinkageError|"+
- "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+
- "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+
- "Cloneable|Class|CharSequence|Comparable|String|Object"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": buildinConstants,
- "support.function": langClasses,
-
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaHighlightRules, TextHighlightRules);
-
-exports.JavaHighlightRules = JavaHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-jsx.js b/vendor/assets/javascripts/ace-src-noconflict/mode-jsx.js
deleted file mode 100644
index 986edd9a899..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-jsx.js
+++ /dev/null
@@ -1,646 +0,0 @@
-ace.define('ace/mode/jsx', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jsx_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-function Mode() {
- this.$tokenizer = new Tokenizer(new JsxHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-}
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-ace.define('ace/mode/jsx_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
- var oop = require("../lib/oop");
- var lang = require("../lib/lang");
- var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
- var JsxHighlightRules = function() {
- var keywords = lang.arrayToMap(
- ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" +
- "if|throw|" +
- "delete|in|try|" +
- "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" +
- "number|int|string|boolean|variant|" +
- "log|assert").split("|")
- );
-
- var buildinConstants = lang.arrayToMap(
- ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")
- );
-
- var reserved = lang.arrayToMap(
- ("debugger|with|" +
- "const|export|" +
- "let|private|public|yield|protected|" +
- "extern|native|as|operator|__fake__|__readonly__").split("|")
- );
-
- var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b";
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- regex : "\\/\\*",
- merge : true,
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : [
- "storage.type",
- "text",
- "entity.name.function"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")"
- }, {
- token : function(value) {
- if (value == "this")
- return "variable.language";
- else if (value == "function")
- return "storage.type";
- else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))
- return "keyword";
- else if (buildinConstants.hasOwnProperty(value))
- return "constant.language";
- else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))
- return "language.support.class";
- else
- return "identifier";
- },
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "punctuation.operator",
- regex : "\\?|\\:|\\,|\\;|\\."
- }, {
- token : "paren.lparen",
- regex : "[[({<]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}>]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
- };
-
- oop.inherits(JsxHighlightRules, TextHighlightRules);
-
- exports.JsxHighlightRules = JsxHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-latex.js b/vendor/assets/javascripts/ace-src-noconflict/mode-latex.js
deleted file mode 100644
index eb706bbdb60..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-latex.js
+++ /dev/null
@@ -1,95 +0,0 @@
-ace.define('ace/mode/latex', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/latex_highlight_rules', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules;
-var Range = require("../range").Range;
-
-var Mode = function()
-{
- this.$tokenizer = new Tokenizer(new LatexHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- // This code is adapted from ruby.js
- var outdent = true;
-
- // LaTeX comments begin with % and go to the end of the line
- var commentRegEx = /^(\s*)\%/;
-
- for (var i = startRow; i <= endRow; i++) {
- if (!commentRegEx.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i = startRow; i <= endRow; i++) {
- var line = doc.getLine(i);
- var m = line.match(commentRegEx);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "%");
- }
- };
-
- // There is no universally accepted way of indenting a tex document
- // so just maintain the indentation of the previous line
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-ace.define('ace/mode/latex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LatexHighlightRules = function() {
- this.$rules = {
- "start" : [{
- // A tex command e.g. \foo
- token : "keyword",
- regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)",
- }, {
- // Curly and square braces
- token : "lparen",
- regex : "[[({]"
- }, {
- // Curly and square braces
- token : "rparen",
- regex : "[\\])}]"
- }, {
- // Inline math between two $ symbols
- token : "string",
- regex : "\\$(?:(?:\\\\.)|(?:[^\\$\\\\]))*?\\$"
- }, {
- // A comment. Tex comments start with % and go to
- // the end of the line
- token : "comment",
- regex : "%.*$"
- }]
- };
-};
-
-oop.inherits(LatexHighlightRules, TextHighlightRules);
-
-exports.LatexHighlightRules = LatexHighlightRules;
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-less.js b/vendor/assets/javascripts/ace-src-noconflict/mode-less.js
deleted file mode 100644
index 43bf8a9d524..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-less.js
+++ /dev/null
@@ -1,504 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/less', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/less_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new LessHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/less_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LessHighlightRules = function() {
-
- var properties = lang.arrayToMap( (function () {
-
- var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
-
- var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
- "background-size|binding|border-bottom-colors|border-left-colors|" +
- "border-right-colors|border-top-colors|border-end|border-end-color|" +
- "border-end-style|border-end-width|border-image|border-start|" +
- "border-start-color|border-start-style|border-start-width|box-align|" +
- "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
- "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
- "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
- "font-feature-settings|font-language-override|force-broken-image-icon|" +
- "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
- "outline-offset|outline-radius|outline-radius-bottomleft|" +
- "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
- "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
- "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
- "text-decoration-style|transform|transform-origin|transition|" +
- "transition-delay|transition-duration|transition-property|" +
- "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
- "window-shadow|border-radius").split("|");
-
- var properties = ("azimuth|background-attachment|background-color|background-image|" +
- "background-position|background-repeat|background|border-bottom-color|" +
- "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
- "border-color|border-left-color|border-left-style|border-left-width|" +
- "border-left|border-right-color|border-right-style|border-right-width|" +
- "border-right|border-spacing|border-style|border-top-color|" +
- "border-top-style|border-top-width|border-top|border-width|border|" +
- "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
- "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
- "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
- "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
- "letter-spacing|line-height|list-style-image|list-style-position|" +
- "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
- "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
- "min-width|opacity|orphans|outline-color|" +
- "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
- "padding-left|padding-right|padding-top|padding|page-break-after|" +
- "page-break-before|page-break-inside|page|pause-after|pause-before|" +
- "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
- "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
- "stress|table-layout|text-align|text-decoration|text-indent|" +
- "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
- "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
- "z-index").split("|");
-
- //The return array
- var ret = [];
-
- //All prefixProperties will get the browserPrefix in
- //the begning by join the prefixProperties array with the value of browserPrefix
- for (var i=0, ln=browserPrefix.length; i<ln; i++) {
- Array.prototype.push.apply(
- ret,
- (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
- );
- }
-
- //Add also prefixProperties and properties without any browser prefix
- Array.prototype.push.apply(ret, prefixProperties);
- Array.prototype.push.apply(ret, properties);
-
- return ret;
-
- })() );
-
-
-
- var functions = lang.arrayToMap(
- ("hsl|hsla|rgb|rgba|url|attr|counter|counters|lighten|darken|saturate|" +
- "desaturate|fadein|fadeout|fade|spin|mix|hue|saturation|lightness|" +
- "alpha|round|ceil|floor|percentage|color|iscolor|isnumber|isstring|" +
- "iskeyword|isurl|ispixel|ispercentage|isem").split("|")
- );
-
- var constants = lang.arrayToMap(
- ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
- "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
- "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
- "decimal-leading-zero|decimal|default|disabled|disc|" +
- "distribute-all-lines|distribute-letter|distribute-space|" +
- "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
- "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
- "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
- "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
- "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
- "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
- "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
- "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
- "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
- "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
- "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
- "solid|square|static|strict|super|sw-resize|table-footer-group|" +
- "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
- "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
- "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
- "zero").split("|")
- );
-
- var colors = lang.arrayToMap(
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
- "purple|red|silver|teal|white|yellow").split("|")
- );
-
- var keywords = lang.arrayToMap(
- ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|" +
- "@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|" +
- "def|end|declare|when|not|and").split("|")
- );
-
- var tags = lang.arrayToMap(
- ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
- "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
- "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
- "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
- "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
- "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
- "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
- "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
- "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
- );
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric",
- regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : "constant.numeric",
- regex : numRe
- }, {
- token : function(value) {
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else
- return "variable";
- },
- regex : "@[a-z0-9_\\-@]*\\b"
- }, {
- token : function(value) {
- if (properties.hasOwnProperty(value.toLowerCase()))
- return "support.type";
- else if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (constants.hasOwnProperty(value))
- return "constant.language";
- else if (functions.hasOwnProperty(value))
- return "support.function";
- else if (colors.hasOwnProperty(value.toLowerCase()))
- return "support.constant.color";
- else if (tags.hasOwnProperty(value.toLowerCase()))
- return "variable.language";
- else
- return "text";
- },
- regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
- }, {
- token: "variable.language",
- regex: "#[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: "\\.[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: ":[a-z0-9-_]+"
- }, {
- token: "constant",
- regex: "[a-z0-9-_]+"
- }, {
- token : "keyword.operator",
- regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-};
-
-oop.inherits(LessHighlightRules, TextHighlightRules);
-
-exports.LessHighlightRules = LessHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-liquid.js b/vendor/assets/javascripts/ace-src-noconflict/mode-liquid.js
deleted file mode 100644
index 3886e739ba4..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-liquid.js
+++ /dev/null
@@ -1,1003 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/liquid', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/liquid_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) {
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new LiquidHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var outentedRows = [];
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/liquid_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LiquidHighlightRules = function() {
-
- // see: https://developer.mozilla.org/en/Liquid/Reference/Global_Objects
- var functions = (
- // Standard Filters
- "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|" +
- "escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|" +
- "truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split"
- );
-
- var keywords = (
- // Standard Tags
- "capture|endcapture|case|endcase|when|comment|endcomment|" +
- "cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|" +
- // Commonly used tags
- "style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow"
- );
-
- var builtinVariables = 'forloop|tablerowloop';
- // "forloop\\.(length|index|index0|rindex|rindex0|first|last)|limit|offset|range" +
- // "tablerowloop\\.(length|index|index0|rindex|rindex0|first|last|col|col0|"+
- // "col_first|col_last)"
-
- var definitions = ("assign");
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": builtinVariables,
- "keyword": keywords,
- "support.function": functions,
- "keyword.definition": definitions
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- start : [{
- token : "variable",
- regex : "{%",
- next : "liquid_start"
- }, {
- token : "variable",
- regex : "{{",
- next : "liquid_start"
- }, {
- token : "meta.tag",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "meta.tag",
- regex : "<(?=\\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ] ,
-
- liquid_start : [{
- token: "variable",
- regex: "}}",
- next: "start"
- }, {
- token: "variable",
- regex: "%}",
- next: "start"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\/|\\*|\\-|\\+|=|!=|\\?\\:"
- }, {
- token : "paren.lparen",
- regex : /[\[\({]/
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "text",
- regex : "\\s+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
- xmlUtil.tag(this.$rules, "style", "css-start");
- xmlUtil.tag(this.$rules, "script", "js-start");
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-oop.inherits(LiquidHighlightRules, TextHighlightRules);
-
-exports.LiquidHighlightRules = LiquidHighlightRules;
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-lua.js b/vendor/assets/javascripts/ace-src-noconflict/mode-lua.js
deleted file mode 100644
index 22d35f18a31..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-lua.js
+++ /dev/null
@@ -1,524 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lua_highlight_rules', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- var indentKeywords = {
- "function": 1,
- "then": 1,
- "do": 1,
- "else": 1,
- "elseif": 1,
- "repeat": 1,
- "end": -1,
- "until": -1,
- };
- var outdentKeywords = [
- "else",
- "elseif",
- "end",
- "until"
- ];
-
- function getNetIndentLevel(tokens) {
- var level = 0;
- // Support single-line blocks by decrementing the indent level if
- // an ending token is found
- for (var i in tokens){
- var token = tokens[i];
- if (token.type == "keyword") {
- if (token.value in indentKeywords) {
- level += indentKeywords[token.value];
- }
- } else if (token.type == "paren.lparen") {
- level ++;
- } else if (token.type == "paren.rparen") {
- level --;
- }
- }
- // Limit the level to +/- 1 since usually users only indent one level
- // at a time regardless of the logical nesting level
- if (level < 0) {
- return -1;
- } else if (level > 0) {
- return 1;
- } else {
- return 0;
- }
- }
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- var level = 0;
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (state == "start") {
- level = getNetIndentLevel(tokens);
- }
- if (level > 0) {
- return indent + tab;
- } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) {
- // Don't do a next-line outdent if we're going to do a real outdent of this line
- if (!this.checkOutdent(state, line, "\n")) {
- return indent.substr(0, indent.length - tab.length);
- }
- }
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- if (input != "\n" && input != "\r" && input != "\r\n")
- return false;
-
- if (line.match(/^\s*[\)\}\]]$/))
- return true;
-
- var tokens = this.$tokenizer.getLineTokens(line.trim(), state).tokens;
-
- if (!tokens || !tokens.length)
- return false;
-
- return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1);
- };
-
- this.autoOutdent = function(state, session, row) {
- var prevLine = session.getLine(row - 1);
- var prevIndent = this.$getIndent(prevLine).length;
- var prevTokens = this.$tokenizer.getLineTokens(prevLine, "start").tokens;
- var tabLength = session.getTabString().length;
- var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens);
- var curIndent = this.$getIndent(session.getLine(row)).length;
- if (curIndent < expectedIndent) {
- // User already outdented //
- return;
- }
- session.outdentRows(new Range(row, 0, row + 2, 0));
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/lua_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LuaHighlightRules = function() {
-
- var keywords = (
- "break|do|else|elseif|end|for|function|if|in|local|repeat|"+
- "return|then|until|while|or|and|not"
- );
-
- var builtinConstants = ("true|false|nil|_G|_VERSION");
-
- var functions = (
- // builtinFunctions
- "string|xpcall|package|tostring|print|os|unpack|require|"+
- "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+
- "collectgarbage|getmetatable|module|rawset|math|debug|"+
- "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+
- "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+
- "load|error|loadfile|"+
-
- "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+
- "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+
- "loaders|cpath|config|path|seeall|exit|setlocale|date|"+
- "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+
- "lines|write|close|flush|open|output|type|read|stderr|"+
- "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+
- "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+
- "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+
- "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+
- "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+
- "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+
- "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+
- "status|wrap|create|running|"+
- // metatableMethods
- "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+
- "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"
- );
-
- var stdLibaries = ("string|package|os|io|math|debug|table|coroutine");
-
- var futureReserved = "";
-
- var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn");
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "support.function": functions,
- "invalid.deprecated": deprecatedIn5152,
- "constant.library": stdLibaries,
- "constant.language": builtinConstants,
- "invalid.illegal": futureReserved,
- "variable.language": "this"
- }, "identifier");
-
- var strPre = "";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var integer = "(?:" + decimalInteger + "|" + hexInteger + ")";
-
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var floatNumber = "(?:" + pointFloat + ")";
-
- var comment_stack = [];
-
- this.$rules = {
- "start" :
-
-
- // bracketed comments
- [{
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*\\]\\]'
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "comment", // --[====+[ comment
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed comments
- {
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*$',
- merge : true,
- next : "qcomment"
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*$',
- merge : true,
- next : "qcomment1"
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*$',
- merge : true,
- next : "qcomment2"
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*$',
- merge : true,
- next : "qcomment3"
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*$',
- merge : true,
- next : "qcomment4"
- }, {
- token : function(value){ // --[====+[ comment
- // WARNING: EXTREMELY SLOW, but this is the only way to circumvent the
- // limits imposed by the current automaton.
- // I've never personally seen any practical code where 5 or more '='s are
- // used for string or commenting, so this will rarely be invoked.
- var pattern = /\-\-\[(\=+)\[/, match;
- // you can never be too paranoid ;)
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "comment";
- },
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qcomment5"
- },
-
- // single line comments
- {
- token : "comment",
- regex : "\\-\\-.*$"
- },
-
- // bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*\\]\\]'
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "string", // [====+[ string
- regex : strPre + '\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*$',
- merge : true,
- next : "qstring"
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*$',
- merge : true,
- next : "qstring1"
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*$',
- merge : true,
- next : "qstring2"
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*$',
- merge : true,
- next : "qstring3"
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*$',
- merge : true,
- next : "qstring4"
- }, {
- token : function(value){ // --[====+[ string
- // WARNING: EXTREMELY SLOW, see above.
- var pattern = /\[(\=+)\[/, match;
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "string";
- },
- regex : strPre + '\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qstring5"
- },
-
- {
- token : "string", // " string
- regex : strPre + '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "string", // ' string
- regex : strPre + "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
-
- "qcomment": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment1": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment2": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment3": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment4": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment5": [ {
- token : function(value){
- // very hackish, mutates the qcomment5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qcomment5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qcomment5";
- }
- }
-
- return "comment";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
-
- "qstring": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring1": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring2": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring3": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring4": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring5": [ {
- token : function(value){
- // very hackish, mutates the qstring5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qstring5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qstring5";
- }
- }
-
- return "string";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
-
- };
-
-}
-
-oop.inherits(LuaHighlightRules, TextHighlightRules);
-
-exports.LuaHighlightRules = LuaHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-luahtml.js b/vendor/assets/javascripts/ace-src-noconflict/mode-luahtml.js
deleted file mode 100644
index d8a1b653f3d..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-luahtml.js
+++ /dev/null
@@ -1,2415 +0,0 @@
-ace.define('ace/mode/luahtml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/mode/lua', 'ace/tokenizer', 'ace/mode/luahtml_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HtmlMode = require("./html").Mode;
-var LuaMode = require("./lua").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LuaHtmlHighlightRules = require("./luahtml_highlight_rules").LuaHtmlHighlightRules;
-
-var Mode = function() {
- var highlighter = new LuaHtmlHighlightRules();
-
- this.$tokenizer = new Tokenizer(new LuaHtmlHighlightRules().getRules());
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "lua-": LuaMode
- });
-};
-oop.inherits(Mode, HtmlMode);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/html'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
-var HtmlFoldMode = require("./folding/html").FoldMode;
-
-var Mode = function() {
- var highlighter = new HtmlHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$behaviour = new XmlBehaviour();
-
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "css-": CssMode
- });
-
- this.foldingRules = new HtmlFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- return 0;
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
- this.checkOutdent = function(state, line, input) {
- return false;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "worker-javascript.js", "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
-
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var globals = lang.arrayToMap(
- // Constructors
- ("Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" +
- // E4X
- "Namespace|QName|XML|XMLList|" +
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- // Errors
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" +
- "SyntaxError|TypeError|URIError|" +
- // Non-constructor functions
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" +
- "isNaN|parseFloat|parseInt|" +
- // Other
- "JSON|Math|" +
- // Pseudo
- "this|arguments|prototype|window|document"
- ).split("|")
- );
-
- var keywords = lang.arrayToMap(
- ("break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|" +
- "const|yield|import|get|set").split("|")
- );
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- var deprecated = lang.arrayToMap(
- ("__parent__|__count__|escape|unescape|with|__proto__").split("|")
- );
-
- var definitions = lang.arrayToMap(("const|let|var|function").split("|"));
-
- var buildinConstants = lang.arrayToMap(
- ("null|Infinity|NaN|undefined").split("|")
- );
-
- var futureReserved = lang.arrayToMap(
- ("class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static").split("|")
- );
-
- // TODO: Unicode escape sequences
- var identifierRe = "[" + unicode.packages.L + "\\$_]["
- + unicode.packages.L
- + unicode.packages.Mn + unicode.packages.Mc
- + unicode.packages.Nd
- + unicode.packages.Pc + "\\$_]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, { // match stuff like: Sound.prototype.play = function() { }
- token : [
- "storage.type",
- "punctuation.operator",
- "support.function",
- "punctuation.operator",
- "entity.name.function",
- "text",
- "keyword.operator",
- "text",
- "storage.type",
- "text",
- "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, { // match stuff like: Sound.prototype.play = myfunc
- token : [
- "storage.type",
- "punctuation.operator",
- "support.function",
- "punctuation.operator",
- "entity.name.function",
- "text",
- "keyword.operator",
- "text"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)",
- next: "function_arguments"
- }, { // match stuff like: Sound.play = function() { }
- token : [
- "storage.type",
- "punctuation.operator",
- "entity.name.function",
- "text",
- "keyword.operator",
- "text",
- "storage.type",
- "text",
- "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, { // match stuff like: play = function() { }
- token : [
- "entity.name.function",
- "text",
- "keyword.operator",
- "text",
- "storage.type",
- "text",
- "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, { // match stuff like: Sound.play = function play() { }
- token : [
- "storage.type",
- "punctuation.operator",
- "entity.name.function",
- "text",
- "keyword.operator",
- "text",
- "storage.type",
- "text",
- "entity.name.function",
- "text",
- "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, { // match regular function like: function myFunc(arg) { }
- token : [
- "storage.type",
- "text",
- "entity.name.function",
- "text",
- "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, { // match stuff like: foobar: function() { }
- token : [
- "entity.name.function",
- "text",
- "punctuation.operator",
- "text",
- "storage.type",
- "text",
- "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, { // Attempt to match : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text",
- "text",
- "storage.type",
- "text",
- "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : function(value) {
- if (globals.hasOwnProperty(value))
- return "variable.language";
- else if (deprecated.hasOwnProperty(value))
- return "invalid.deprecated";
- else if (definitions.hasOwnProperty(value))
- return "storage.type";
- else if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (buildinConstants.hasOwnProperty(value))
- return "constant.language";
- else if (futureReserved.hasOwnProperty(value))
- return "invalid.illegal";
- else if (value == "debugger")
- return "invalid.deprecated";
- else
- return "identifier";
- },
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- token: "string.regexp",
- regex: "[^\\\\/\\[]+",
- merge: true
- }, {
- token: "string.regexp.charachterclass",
- regex: "\\[",
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "string.regexp.charachterclass",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "string.regexp.charachterclass",
- regex: "[^\\\\\\]]+",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe,
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /^\s*/;
- var startRow = row;
- var endRow = row;
- var line = session.getLine(row);
- var startColumn = column || line.length;
- var startLevel = line.match(re)[0].length;
- var maxRow = session.getLength()
-
- while (++row < maxRow) {
- line = session.getLine(row);
- var level = line.match(re)[0].length;
-
- if (level == line.length)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe, allowBlankLine) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe, allowBlankLine);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start") {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "worker-css.js", "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
-
- var properties = lang.arrayToMap(
- ("animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index").split("|")
- );
-
- var functions = lang.arrayToMap(
- ("rgb|rgba|url|attr|counter|counters").split("|")
- );
-
- var constants = lang.arrayToMap(
- ("absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|font-size|font|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero").split("|")
- );
-
- var colors = lang.arrayToMap(
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
- "purple|red|silver|teal|white|yellow").split("|")
- );
-
- var fonts = lang.arrayToMap(
- ("arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|" +
- "symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|" +
- "serif|monospace").split("|")
- );
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : function(value) {
- if (properties.hasOwnProperty(value.toLowerCase())) {
- return "support.type";
- }
- else if (functions.hasOwnProperty(value.toLowerCase())) {
- return "support.function";
- }
- else if (constants.hasOwnProperty(value.toLowerCase())) {
- return "support.constant";
- }
- else if (colors.hasOwnProperty(value.toLowerCase())) {
- return "support.constant.color";
- }
- else if (fonts.hasOwnProperty(value.toLowerCase())) {
- return "support.constant.fonts";
- }
- else {
- return "text";
- }
- },
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
- xmlUtil.tag(this.$rules, "style", "css-start");
- xmlUtil.tag(this.$rules, "script", "js-start");
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {
-
-
-var lang = require("../lib/lang");
-
-var formTags = lang.arrayToMap(
- ("button|form|input|label|select|textarea").split("|")
-);
-
-var tableTags = lang.arrayToMap(
- ("table|tbody|td|tfoot|th|tr").split("|")
-);
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : function(value) {
- if ( value==='a' ) {
- return "meta.tag.anchor";
- }
- else if ( value==='img' ) {
- return "meta.tag.image";
- }
- else if ( value==='script' ) {
- return "meta.tag.script";
- }
- else if ( value==='style' ) {
- return "meta.tag.style";
- }
- else if (formTags.hasOwnProperty(value.toLowerCase())) {
- return "meta.tag.form";
- }
- else if (tableTags.hasOwnProperty(value.toLowerCase())) {
- return "meta.tag.table";
- }
- else {
- return "meta.tag";
- }
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '<') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return false;
- } else {
- return {
- text: '<>',
- selection: [1, 1]
- }
- }
- } else if (text == '>') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '>') { // need some kind of matching check here
- return {
- text: '',
- selection: [1, 1]
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/folding/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var MixedFoldMode = require("./mixed").FoldMode;
-var XmlFoldMode = require("./xml").FoldMode;
-var CStyleFoldMode = require("./cstyle").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {
- MixedFoldMode.call(this, new XmlFoldMode({
- // void elements
- "area": 1,
- "base": 1,
- "br": 1,
- "col": 1,
- "command": 1,
- "embed": 1,
- "hr": 1,
- "img": 1,
- "input": 1,
- "keygen": 1,
- "link": 1,
- "meta": 1,
- "param": 1,
- "source": 1,
- "track": 1,
- "wbr": 1,
-
- // optional tags
- "li": 1,
- "dt": 1,
- "dd": 1,
- "p": 1,
- "rt": 1,
- "rp": 1,
- "optgroup": 1,
- "option": 1,
- "colgroup": 1,
- "td": 1,
- "th": 1
- }), {
- "js-": new CStyleFoldMode(),
- "css-": new CStyleFoldMode()
- });
-};
-
-oop.inherits(FoldMode, MixedFoldMode);
-
-});
-
-ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
- this.defaultMode = defaultMode;
- this.subModes = subModes;
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
-
- this.$getMode = function(state) {
- for (var key in this.subModes) {
- if (state.indexOf(key) === 0)
- return this.subModes[key];
- }
- return null;
- };
-
- this.$tryMode = function(state, session, foldStyle, row) {
- var mode = this.$getMode(state);
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
- };
-
- this.getFoldWidget = function(session, foldStyle, row) {
- return (
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
- this.defaultMode.getFoldWidget(session, foldStyle, row)
- );
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var mode = this.$getMode(session.getState(row-1));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.$getMode(session.getState(row));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.defaultMode;
-
- return mode.getFoldWidgetRange(session, foldStyle, row);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lua_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- var chunks = ["function", "then", "do", "repeat"];
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- } else {
- for (var i in tokens){
- var token = tokens[i];
- if (token.type != "keyword") continue;
- var chunk_i = chunks.indexOf(token.value);
- if (chunk_i != -1){
- indent += tab;
- break;
- }
- }
- }
- }
-
- return indent;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/lua_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LuaHighlightRules = function() {
-
- var keywords = lang.arrayToMap(
- ("break|do|else|elseif|end|for|function|if|in|local|repeat|"+
- "return|then|until|while|or|and|not").split("|")
- );
-
- var builtinConstants = lang.arrayToMap(
- ("true|false|nil|_G|_VERSION").split("|")
- );
-
- var builtinFunctions = lang.arrayToMap(
- ("string|xpcall|package|tostring|print|os|unpack|require|"+
- "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+
- "collectgarbage|getmetatable|module|rawset|math|debug|"+
- "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+
- "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+
- "load|error|loadfile|"+
-
- "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+
- "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+
- "loaders|cpath|config|path|seeall|exit|setlocale|date|"+
- "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+
- "lines|write|close|flush|open|output|type|read|stderr|"+
- "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+
- "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+
- "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+
- "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+
- "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+
- "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+
- "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+
- "status|wrap|create|running").split("|")
- );
-
- var stdLibaries = lang.arrayToMap(
- ("string|package|os|io|math|debug|table|coroutine").split("|")
- );
-
- var metatableMethods = lang.arrayToMap(
- ("__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+
- "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber").split("|")
- );
-
- var futureReserved = lang.arrayToMap(
- ("").split("|")
- );
-
- var deprecatedIn5152 = lang.arrayToMap(
- ("setn|foreach|foreachi|gcinfo|log10|maxn").split("|")
- );
-
- var strPre = "";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var integer = "(?:" + decimalInteger + "|" + hexInteger + ")";
-
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var floatNumber = "(?:" + pointFloat + ")";
-
- var comment_stack = [];
-
- this.$rules = {
- "start" :
-
-
- // bracketed comments
- [{
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*\\]\\]'
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "comment", // --[====+[ comment
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed comments
- {
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*$',
- merge : true,
- next : "qcomment"
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*$',
- merge : true,
- next : "qcomment1"
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*$',
- merge : true,
- next : "qcomment2"
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*$',
- merge : true,
- next : "qcomment3"
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*$',
- merge : true,
- next : "qcomment4"
- }, {
- token : function(value){ // --[====+[ comment
- // WARNING: EXTREMELY SLOW, but this is the only way to circumvent the
- // limits imposed by the current automaton.
- // I've never personally seen any practical code where 5 or more '='s are
- // used for string or commenting, so this will rarely be invoked.
- var pattern = /\-\-\[(\=+)\[/, match;
- // you can never be too paranoid ;)
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "comment";
- },
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qcomment5"
- },
-
- // single line comments
- {
- token : "comment",
- regex : "\\-\\-.*$"
- },
-
- // bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*\\]\\]'
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "string", // [====+[ string
- regex : strPre + '\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*$',
- merge : true,
- next : "qstring"
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*$',
- merge : true,
- next : "qstring1"
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*$',
- merge : true,
- next : "qstring2"
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*$',
- merge : true,
- next : "qstring3"
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*$',
- merge : true,
- next : "qstring4"
- }, {
- token : function(value){ // --[====+[ string
- // WARNING: EXTREMELY SLOW, see above.
- var pattern = /\[(\=+)\[/, match;
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "string";
- },
- regex : strPre + '\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qstring5"
- },
-
- {
- token : "string", // " string
- regex : strPre + '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "string", // ' string
- regex : strPre + "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : function(value) {
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (builtinConstants.hasOwnProperty(value))
- return "constant.language";
- else if (futureReserved.hasOwnProperty(value))
- return "invalid.illegal";
- else if (stdLibaries.hasOwnProperty(value))
- return "constant.library";
- else if (deprecatedIn5152.hasOwnProperty(value))
- return "invalid.deprecated";
- else if (builtinFunctions.hasOwnProperty(value))
- return "support.function";
- else if (metatableMethods.hasOwnProperty(value))
- return "support.function";
- else
- return "identifier";
- },
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
-
- "qcomment": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment1": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment2": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment3": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment4": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment5": [ {
- token : function(value){
- // very hackish, mutates the qcomment5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qcomment5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qcomment5";
- }
- }
-
- return "comment";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
-
- "qstring": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring1": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring2": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring3": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring4": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring5": [ {
- token : function(value){
- // very hackish, mutates the qstring5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qstring5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qstring5";
- }
- }
-
- return "string";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
-
- };
-
-}
-
-oop.inherits(LuaHighlightRules, TextHighlightRules);
-
-exports.LuaHighlightRules = LuaHighlightRules;
-});
-ace.define('ace/mode/luahtml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/lua_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
-
-var LuaHtmlHighlightRules = function() {
- this.$rules = new HtmlHighlightRules().getRules();
-
- for (var i in this.$rules)
- this.$rules[i].unshift({
- token: "luatag-percent",
- regex: "<\\%",
- next: "lua-start"
- }, {
- token: "luatag-lua",
- regex: "<\\?lua",
- next: "lua-start"
- });
-
- this.embedRules(LuaHighlightRules, "lua-", [
- {
- token: "keyword1",
- regex: "\\%>",
- next: "start"
- },
- {
- token: "keyword2",
- regex: "\\?>",
- next: "start"
- }
- ]);
-};
-
-oop.inherits(LuaHtmlHighlightRules, HtmlHighlightRules);
-
-exports.LuaHtmlHighlightRules = LuaHtmlHighlightRules;
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-luapage.js b/vendor/assets/javascripts/ace-src-noconflict/mode-luapage.js
deleted file mode 100644
index 9be136de978..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-luapage.js
+++ /dev/null
@@ -1,2480 +0,0 @@
-ace.define('ace/mode/luapage', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/mode/lua', 'ace/tokenizer', 'ace/mode/luapage_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HtmlMode = require("./html").Mode;
-var LuaMode = require("./lua").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules;
-
-var Mode = function() {
- var highlighter = new LuaPageHighlightRules();
-
- this.$tokenizer = new Tokenizer(new LuaPageHighlightRules().getRules());
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "lua-": LuaMode
- });
-};
-oop.inherits(Mode, HtmlMode);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour;
-var HtmlFoldMode = require("./folding/html").FoldMode;
-
-var Mode = function() {
- var highlighter = new HtmlHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$behaviour = new HtmlBehaviour();
-
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "css-": CssMode
- });
-
- this.foldingRules = new HtmlFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- return 0;
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
- this.checkOutdent = function(state, line, input) {
- return false;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var XmlBehaviour = require("../behaviour/xml").XmlBehaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var HtmlBehaviour = function () {
-
- this.inherit(XmlBehaviour); // Get xml behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var element = token.value;
- if (atCursor){
- var element = element.substring(0, position.column - token.start);
- }
- if (voidElements.indexOf(element) !== -1){
- return;
- }
- return {
- text: '>' + '</' + element + '>',
- selection: [1, 1]
- }
- }
- });
-}
-oop.inherits(HtmlBehaviour, XmlBehaviour);
-
-exports.HtmlBehaviour = HtmlBehaviour;
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/folding/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var MixedFoldMode = require("./mixed").FoldMode;
-var XmlFoldMode = require("./xml").FoldMode;
-var CStyleFoldMode = require("./cstyle").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {
- MixedFoldMode.call(this, new XmlFoldMode({
- // void elements
- "area": 1,
- "base": 1,
- "br": 1,
- "col": 1,
- "command": 1,
- "embed": 1,
- "hr": 1,
- "img": 1,
- "input": 1,
- "keygen": 1,
- "link": 1,
- "meta": 1,
- "param": 1,
- "source": 1,
- "track": 1,
- "wbr": 1,
-
- // optional tags
- "li": 1,
- "dt": 1,
- "dd": 1,
- "p": 1,
- "rt": 1,
- "rp": 1,
- "optgroup": 1,
- "option": 1,
- "colgroup": 1,
- "td": 1,
- "th": 1
- }), {
- "js-": new CStyleFoldMode(),
- "css-": new CStyleFoldMode()
- });
-};
-
-oop.inherits(FoldMode, MixedFoldMode);
-
-});
-
-ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
- this.defaultMode = defaultMode;
- this.subModes = subModes;
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
-
- this.$getMode = function(state) {
- for (var key in this.subModes) {
- if (state.indexOf(key) === 0)
- return this.subModes[key];
- }
- return null;
- };
-
- this.$tryMode = function(state, session, foldStyle, row) {
- var mode = this.$getMode(state);
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
- };
-
- this.getFoldWidget = function(session, foldStyle, row) {
- return (
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
- this.defaultMode.getFoldWidget(session, foldStyle, row)
- );
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var mode = this.$getMode(session.getState(row-1));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.$getMode(session.getState(row));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.defaultMode;
-
- return mode.getFoldWidgetRange(session, foldStyle, row);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lua_highlight_rules', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- var indentKeywords = {
- "function": 1,
- "then": 1,
- "do": 1,
- "else": 1,
- "elseif": 1,
- "repeat": 1,
- "end": -1,
- "until": -1,
- };
- var outdentKeywords = [
- "else",
- "elseif",
- "end",
- "until"
- ];
-
- function getNetIndentLevel(tokens) {
- var level = 0;
- // Support single-line blocks by decrementing the indent level if
- // an ending token is found
- for (var i in tokens){
- var token = tokens[i];
- if (token.type == "keyword") {
- if (token.value in indentKeywords) {
- level += indentKeywords[token.value];
- }
- } else if (token.type == "paren.lparen") {
- level ++;
- } else if (token.type == "paren.rparen") {
- level --;
- }
- }
- // Limit the level to +/- 1 since usually users only indent one level
- // at a time regardless of the logical nesting level
- if (level < 0) {
- return -1;
- } else if (level > 0) {
- return 1;
- } else {
- return 0;
- }
- }
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- var level = 0;
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (state == "start") {
- level = getNetIndentLevel(tokens);
- }
- if (level > 0) {
- return indent + tab;
- } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) {
- // Don't do a next-line outdent if we're going to do a real outdent of this line
- if (!this.checkOutdent(state, line, "\n")) {
- return indent.substr(0, indent.length - tab.length);
- }
- }
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- if (input != "\n" && input != "\r" && input != "\r\n")
- return false;
-
- if (line.match(/^\s*[\)\}\]]$/))
- return true;
-
- var tokens = this.$tokenizer.getLineTokens(line.trim(), state).tokens;
-
- if (!tokens || !tokens.length)
- return false;
-
- return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1);
- };
-
- this.autoOutdent = function(state, session, row) {
- var prevLine = session.getLine(row - 1);
- var prevIndent = this.$getIndent(prevLine).length;
- var prevTokens = this.$tokenizer.getLineTokens(prevLine, "start").tokens;
- var tabLength = session.getTabString().length;
- var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens);
- var curIndent = this.$getIndent(session.getLine(row)).length;
- if (curIndent < expectedIndent) {
- // User already outdented //
- return;
- }
- session.outdentRows(new Range(row, 0, row + 2, 0));
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/lua_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var LuaHighlightRules = function() {
-
- var keywords = (
- "break|do|else|elseif|end|for|function|if|in|local|repeat|"+
- "return|then|until|while|or|and|not"
- );
-
- var builtinConstants = ("true|false|nil|_G|_VERSION");
-
- var functions = (
- // builtinFunctions
- "string|xpcall|package|tostring|print|os|unpack|require|"+
- "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+
- "collectgarbage|getmetatable|module|rawset|math|debug|"+
- "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+
- "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+
- "load|error|loadfile|"+
-
- "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+
- "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+
- "loaders|cpath|config|path|seeall|exit|setlocale|date|"+
- "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+
- "lines|write|close|flush|open|output|type|read|stderr|"+
- "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+
- "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+
- "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+
- "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+
- "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+
- "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+
- "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+
- "status|wrap|create|running|"+
- // metatableMethods
- "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+
- "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"
- );
-
- var stdLibaries = ("string|package|os|io|math|debug|table|coroutine");
-
- var futureReserved = "";
-
- var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn");
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "support.function": functions,
- "invalid.deprecated": deprecatedIn5152,
- "constant.library": stdLibaries,
- "constant.language": builtinConstants,
- "invalid.illegal": futureReserved,
- "variable.language": "this"
- }, "identifier");
-
- var strPre = "";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var integer = "(?:" + decimalInteger + "|" + hexInteger + ")";
-
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var floatNumber = "(?:" + pointFloat + ")";
-
- var comment_stack = [];
-
- this.$rules = {
- "start" :
-
-
- // bracketed comments
- [{
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*\\]\\]'
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "comment", // --[====+[ comment
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed comments
- {
- token : "comment", // --[[ comment
- regex : strPre + '\\-\\-\\[\\[.*$',
- merge : true,
- next : "qcomment"
- }, {
- token : "comment", // --[=[ comment
- regex : strPre + '\\-\\-\\[\\=\\[.*$',
- merge : true,
- next : "qcomment1"
- }, {
- token : "comment", // --[==[ comment
- regex : strPre + '\\-\\-\\[\\={2}\\[.*$',
- merge : true,
- next : "qcomment2"
- }, {
- token : "comment", // --[===[ comment
- regex : strPre + '\\-\\-\\[\\={3}\\[.*$',
- merge : true,
- next : "qcomment3"
- }, {
- token : "comment", // --[====[ comment
- regex : strPre + '\\-\\-\\[\\={4}\\[.*$',
- merge : true,
- next : "qcomment4"
- }, {
- token : function(value){ // --[====+[ comment
- // WARNING: EXTREMELY SLOW, but this is the only way to circumvent the
- // limits imposed by the current automaton.
- // I've never personally seen any practical code where 5 or more '='s are
- // used for string or commenting, so this will rarely be invoked.
- var pattern = /\-\-\[(\=+)\[/, match;
- // you can never be too paranoid ;)
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "comment";
- },
- regex : strPre + '\\-\\-\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qcomment5"
- },
-
- // single line comments
- {
- token : "comment",
- regex : "\\-\\-.*$"
- },
-
- // bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*\\]\\]'
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*\\]\\=\\]'
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*\\]\\={2}\\]'
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*\\]\\={3}\\]'
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*\\]\\={4}\\]'
- }, {
- token : "string", // [====+[ string
- regex : strPre + '\\[\\={5}\\=*\\[.*\\]\\={5}\\=*\\]'
- },
-
- // multiline bracketed strings
- {
- token : "string", // [[ string
- regex : strPre + '\\[\\[.*$',
- merge : true,
- next : "qstring"
- }, {
- token : "string", // [=[ string
- regex : strPre + '\\[\\=\\[.*$',
- merge : true,
- next : "qstring1"
- }, {
- token : "string", // [==[ string
- regex : strPre + '\\[\\={2}\\[.*$',
- merge : true,
- next : "qstring2"
- }, {
- token : "string", // [===[ string
- regex : strPre + '\\[\\={3}\\[.*$',
- merge : true,
- next : "qstring3"
- }, {
- token : "string", // [====[ string
- regex : strPre + '\\[\\={4}\\[.*$',
- merge : true,
- next : "qstring4"
- }, {
- token : function(value){ // --[====+[ string
- // WARNING: EXTREMELY SLOW, see above.
- var pattern = /\[(\=+)\[/, match;
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined)
- comment_stack.push(match.length);
-
- return "string";
- },
- regex : strPre + '\\[\\={5}\\=*\\[.*$',
- merge : true,
- next : "qstring5"
- },
-
- {
- token : "string", // " string
- regex : strPre + '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "string", // ' string
- regex : strPre + "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
-
- "qcomment": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment1": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment2": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment3": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment4": [ {
- token : "comment",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
- "qcomment5": [ {
- token : function(value){
- // very hackish, mutates the qcomment5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qcomment5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qcomment5";
- }
- }
-
- return "comment";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : '.+'
- } ],
-
- "qstring": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring1": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\=\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring2": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={2}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring3": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={3}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring4": [ {
- token : "string",
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={4}\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring5": [ {
- token : function(value){
- // very hackish, mutates the qstring5 field on the fly.
- var pattern = /\](\=+)\]/, rule = this.rules.qstring5[0], match;
- rule.next = "start";
- if ((match = pattern.exec(value)) != null && (match = match[1]) != undefined){
- var found = match.length, expected;
- if ((expected = comment_stack.pop()) != found){
- comment_stack.push(expected);
- rule.next = "qstring5";
- }
- }
-
- return "string";
- },
- regex : "(?:[^\\\\]|\\\\.)*?\\]\\={5}\\=*\\]",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
-
- };
-
-}
-
-oop.inherits(LuaHighlightRules, TextHighlightRules);
-
-exports.LuaHighlightRules = LuaHighlightRules;
-});
-// LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua
-// documentation: http://keplerproject.github.com/cgilua/manual.html#templates
-ace.define('ace/mode/luapage_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/lua_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
-
-var LuaPageHighlightRules = function() {
- this.$rules = new HtmlHighlightRules().getRules();
-
- for (var i in this.$rules) {
- this.$rules[i].unshift({
- token: "keyword",
- regex: "<\\%\\=?",
- next: "lua-start"
- }, {
- token: "keyword",
- regex: "<\\?lua\\=?",
- next: "lua-start"
- });
- }
- this.embedRules(LuaHighlightRules, "lua-", [
- {
- token: "keyword",
- regex: "\\%>",
- next: "start"
- },
- {
- token: "keyword",
- regex: "\\?>",
- next: "start"
- }
- ]);
-};
-
-oop.inherits(LuaPageHighlightRules, HtmlHighlightRules);
-
-exports.LuaPageHighlightRules = LuaPageHighlightRules;
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-markdown.js b/vendor/assets/javascripts/ace-src-noconflict/mode-markdown.js
deleted file mode 100644
index e1c269eefc2..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-markdown.js
+++ /dev/null
@@ -1,2252 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/markdown', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/xml', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/markdown_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var XmlMode = require("./xml").Mode;
-var HtmlMode = require("./html").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules;
-
-var Mode = function() {
- var highlighter = new MarkdownHighlightRules();
-
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "xml-": XmlMode,
- "html-": HtmlMode
- });
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- this.getNextLineIndent = function(state, line, tab) {
- if (state == "listblock") {
- var match = /^((?:.+)?)(([-+*]|\d+\.)\s+)/.exec(line);
- if (match) {
- return new Array(match[1].length + 1).join(" ") + match[2];
- } else {
- return "";
- }
- } else {
- return this.$getIndent(line);
- }
- };
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
-var XmlFoldMode = require("./folding/xml").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new XmlHighlightRules().getRules());
- this.$behaviour = new XmlBehaviour();
- this.foldingRules = new XmlFoldMode();
-};
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- }],
-
- cdata : [{
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- }],
-
- comment : [{
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
-};
-
-oop.inherits(XmlHighlightRules, TextHighlightRules);
-
-exports.XmlHighlightRules = XmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var CssMode = require("./css").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour;
-var HtmlFoldMode = require("./folding/html").FoldMode;
-
-var Mode = function() {
- var highlighter = new HtmlHighlightRules();
- this.$tokenizer = new Tokenizer(highlighter.getRules());
- this.$behaviour = new HtmlBehaviour();
-
- this.$embeds = highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode,
- "css-": CssMode
- });
-
- this.foldingRules = new HtmlFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- return 0;
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
- this.checkOutdent = function(state, line, input) {
- return false;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.foldingRules = "cStyle";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("csslint", function(e) {
- var errors = [];
- e.data.forEach(function(message) {
- errors.push({
- row: message.line - 1,
- column: message.col - 1,
- text: message.message,
- type: message.type,
- lint: message
- });
- });
-
- session.setAnnotations(errors);
- });
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var XmlBehaviour = require("../behaviour/xml").XmlBehaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var HtmlBehaviour = function () {
-
- this.inherit(XmlBehaviour); // Get xml behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var element = token.value;
- if (atCursor){
- var element = element.substring(0, position.column - token.start);
- }
- if (voidElements.indexOf(element) !== -1){
- return;
- }
- return {
- text: '>' + '</' + element + '>',
- selection: [1, 1]
- }
- }
- });
-}
-oop.inherits(HtmlBehaviour, XmlBehaviour);
-
-exports.HtmlBehaviour = HtmlBehaviour;
-});
-
-ace.define('ace/mode/folding/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var MixedFoldMode = require("./mixed").FoldMode;
-var XmlFoldMode = require("./xml").FoldMode;
-var CStyleFoldMode = require("./cstyle").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {
- MixedFoldMode.call(this, new XmlFoldMode({
- // void elements
- "area": 1,
- "base": 1,
- "br": 1,
- "col": 1,
- "command": 1,
- "embed": 1,
- "hr": 1,
- "img": 1,
- "input": 1,
- "keygen": 1,
- "link": 1,
- "meta": 1,
- "param": 1,
- "source": 1,
- "track": 1,
- "wbr": 1,
-
- // optional tags
- "li": 1,
- "dt": 1,
- "dd": 1,
- "p": 1,
- "rt": 1,
- "rp": 1,
- "optgroup": 1,
- "option": 1,
- "colgroup": 1,
- "td": 1,
- "th": 1
- }), {
- "js-": new CStyleFoldMode(),
- "css-": new CStyleFoldMode()
- });
-};
-
-oop.inherits(FoldMode, MixedFoldMode);
-
-});
-
-ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
- this.defaultMode = defaultMode;
- this.subModes = subModes;
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
-
- this.$getMode = function(state) {
- for (var key in this.subModes) {
- if (state.indexOf(key) === 0)
- return this.subModes[key];
- }
- return null;
- };
-
- this.$tryMode = function(state, session, foldStyle, row) {
- var mode = this.$getMode(state);
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
- };
-
- this.getFoldWidget = function(session, foldStyle, row) {
- return (
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
- this.defaultMode.getFoldWidget(session, foldStyle, row)
- );
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var mode = this.$getMode(session.getState(row-1));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.$getMode(session.getState(row));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.defaultMode;
-
- return mode.getFoldWidgetRange(session, foldStyle, row);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/markdown_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules', 'ace/mode/html_highlight_rules', 'ace/mode/css_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-
-function github_embed(tag, prefix) {
- return { // Github style block
- token : "support.function",
- regex : "^```" + tag + "\\s*$",
- next : prefix + "start"
- };
-}
-
-var MarkdownHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [ {
- token : "empty_line",
- regex : '^$'
- }, { // code span `
- token : ["support.function", "support.function", "support.function"],
- regex : "(`+)([^\\r]*?[^`])(\\1)"
- }, { // code block
- token : "support.function",
- regex : "^[ ]{4}.+"
- }, { // h1
- token: "markup.heading.1",
- regex: "^=+(?=\\s*$)"
- }, { // h2
- token: "markup.heading.2",
- regex: "^\\-+(?=\\s*$)"
- }, { // header
- token : function(value) {
- return "markup.heading." + value.search(/[^#]/);
- },
- regex : "^#{1,6}(?:[^ #].*| +.*(?:[^ #].*|[^ ]+.* +#+ *))$"
- }, github_embed("(?:javascript|js)", "js-"),
- github_embed("xml", "xml-"),
- github_embed("html", "html-"),
- github_embed("css", "css-"),
- { // Github style block
- token : "support.function",
- regex : "^```[a-zA-Z]+\\s*$",
- next : "githubblock"
- }, { // block quote
- token : "string",
- regex : "^>[ ].+$",
- next : "blockquote"
- }, { // reference
- token : ["text", "constant", "text", "url", "string", "text"],
- regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$"
- }, { // link by reference
- token : ["text", "string", "text", "constant", "text"],
- regex : "(\\[)((?:[[^\\]]*\\]|[^\\[\\]])*)(\\][ ]?(?:\\n[ ]*)?\\[)(.*?)(\\])"
- }, { // link by url
- token : ["text", "string", "text", "markup.underline", "string", "text"],
- regex : "(\\[)"+
- "(\\[[^\\]]*\\]|[^\\[\\]]*)"+
- "(\\]\\([ \\t]*)"+
- "(<?(?:(?:[^\\(]*?\\([^\\)]*?\\)\\S*?)|(?:.*?))>?)"+
- "((?:[ \t]*\"(?:.*?)\"[ \\t]*)?)"+
- "(\\))"
- }, { // HR *
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\*[ ]?){3,}\\s*$"
- }, { // HR -
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\-[ ]?){3,}\\s*$"
- }, { // HR _
- token : "constant",
- regex : "^[ ]{0,2}(?:[ ]?\\_[ ]?){3,}\\s*$"
- }, { // list
- token : "markup.list",
- regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
- next : "listblock"
- }, { // strong ** __
- token : ["string", "string", "string"],
- regex : "([*]{2}|[_]{2}(?=\\S))([^\\r]*?\\S[*_]*)(\\1)"
- }, { // emphasis * _
- token : ["string", "string", "string"],
- regex : "([*]|[_](?=\\S))([^\\r]*?\\S[*_]*)(\\1)"
- }, { //
- token : ["text", "url", "text"],
- regex : "(<)("+
- "(?:https?|ftp|dict):[^'\">\\s]+"+
- "|"+
- "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+
- ")(>)"
- }, {
- token : "text",
- regex : "[^\\*_%$`\\[#<>]+"
- } ],
-
- "listblock" : [ { // Lists only escape on completely blank lines.
- token : "empty_line",
- regex : "^$",
- next : "start"
- }, {
- token : "markup.list",
- regex : ".+"
- } ],
-
- "blockquote" : [ { // BLockquotes only escape on blank lines.
- token : "empty_line",
- regex : "^\\s*$",
- next : "start"
- }, {
- token : "string",
- regex : ".+"
- } ],
-
- "githubblock" : [ {
- token : "support.function",
- regex : "^```",
- next : "start"
- }, {
- token : "support.function",
- regex : ".+"
- } ]
- };
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(HtmlHighlightRules, "html-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-
- this.embedRules(XmlHighlightRules, "xml-", [{
- token : "support.function",
- regex : "^```",
- next : "start"
- }]);
-};
-oop.inherits(MarkdownHighlightRules, TextHighlightRules);
-
-exports.MarkdownHighlightRules = MarkdownHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-ocaml.js b/vendor/assets/javascripts/ace-src-noconflict/mode-ocaml.js
deleted file mode 100644
index e6188c73234..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-ocaml.js
+++ /dev/null
@@ -1,452 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/ocaml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ocaml_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var OcamlHighlightRules = require("./ocaml_highlight_rules").OcamlHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new OcamlHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
-};
-oop.inherits(Mode, TextMode);
-
-var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/;
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var i, line;
- var outdent = true;
- var re = /^\s*\(\*(.*)\*\)/;
-
- for (i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- var range = new Range(0, 0, 0, 0);
- for (i=startRow; i<= endRow; i++) {
- line = doc.getLine(i);
- range.start.row = i;
- range.end.row = i;
- range.end.column = line.length;
-
- doc.replace(range, outdent ? line.match(re)[1] : "(*" + line + "*)");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
-
- if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&
- state === 'start' && indenter.test(line))
- indent += tab;
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/ocaml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var OcamlHighlightRules = function() {
-
- var keywords = (
- "and|as|assert|begin|class|constraint|do|done|downto|else|end|" +
- "exception|external|for|fun|function|functor|if|in|include|" +
- "inherit|initializer|lazy|let|match|method|module|mutable|new|" +
- "object|of|open|or|private|rec|sig|struct|then|to|try|type|val|" +
- "virtual|when|while|with"
- );
-
- var builtinConstants = ("true|false");
-
- var builtinFunctions = (
- "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" +
- "add_available_units|add_big_int|add_buffer|add_channel|add_char|" +
- "add_initializer|add_int_big_int|add_interfaces|add_num|add_string|" +
- "add_substitute|add_substring|alarm|allocated_bytes|allow_only|" +
- "allow_unsafe_modules|always|append|appname_get|appname_set|" +
- "approx_num_exp|approx_num_fix|arg|argv|arith_status|array|" +
- "array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|" +
- "assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|" +
- "beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|" +
- "bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|" +
- "bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|" +
- "bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|" +
- "cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|" +
- "chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|" +
- "chown|chr|chroot|classify_float|clear|clear_available_units|" +
- "clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|" +
- "close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|" +
- "close_out|close_out_noerr|close_process|close_process|" +
- "close_process_full|close_process_in|close_process_out|close_subwindow|" +
- "close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|" +
- "combine|combine|command|compact|compare|compare_big_int|compare_num|" +
- "complex32|complex64|concat|conj|connect|contains|contains_from|contents|" +
- "copy|cos|cosh|count|count|counters|create|create_alarm|create_image|" +
- "create_matrix|create_matrix|create_matrix|create_object|" +
- "create_object_and_run_initializers|create_object_opt|create_process|" +
- "create_process|create_process_env|create_process_env|create_table|" +
- "current|current_dir_name|current_point|current_x|current_y|curveto|" +
- "custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|" +
- "delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|" +
- "dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|" +
- "double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|" +
- "draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|" +
- "dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|" +
- "environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|" +
- "error_message|escaped|establish_server|executable_name|execv|execve|execvp|" +
- "execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|" +
- "file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|" +
- "filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|" +
- "float|float32|float64|float_of_big_int|float_of_bits|float_of_int|" +
- "float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|" +
- "flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|" +
- "for_all|for_all2|force|force_newline|force_val|foreground|fork|" +
- "format_of_string|formatter_of_buffer|formatter_of_out_channel|" +
- "fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|" +
- "from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|" +
- "full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|" +
- "genarray_of_array1|genarray_of_array2|genarray_of_array3|get|" +
- "get_all_formatter_output_functions|get_approx_printing|get_copy|" +
- "get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|" +
- "get_formatter_output_functions|get_formatter_tag_functions|get_image|" +
- "get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|" +
- "get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|" +
- "get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|" +
- "getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|" +
- "getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|" +
- "getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|" +
- "getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|" +
- "getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|" +
- "global_replace|global_substitute|gmtime|green|grid|group_beginning|" +
- "group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|" +
- "hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|" +
- "incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|" +
- "infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|" +
- "input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|" +
- "int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|" +
- "int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|" +
- "is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|" +
- "is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|" +
- "kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|" +
- "lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|" +
- "lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|" +
- "loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|" +
- "logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|" +
- "lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|" +
- "make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|" +
- "marshal|match_beginning|match_end|matched_group|matched_string|max|" +
- "max_array_length|max_big_int|max_elt|max_float|max_int|max_num|" +
- "max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|" +
- "min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|" +
- "minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|" +
- "mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|" +
- "nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|" +
- "new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|" +
- "nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|" +
- "num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|" +
- "of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|" +
- "of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|" +
- "open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|" +
- "open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|" +
- "open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|" +
- "open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|" +
- "out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|" +
- "output_char|output_string|output_value|over_max_boxes|pack|params|" +
- "parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|" +
- "place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|" +
- "power_big_int_positive_big_int|power_big_int_positive_int|" +
- "power_int_positive_big_int|power_int_positive_int|power_num|" +
- "pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|" +
- "pp_get_all_formatter_output_functions|pp_get_ellipsis_text|" +
- "pp_get_formatter_output_functions|pp_get_formatter_tag_functions|" +
- "pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|" +
- "pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|" +
- "pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|" +
- "pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|" +
- "pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|" +
- "pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|" +
- "pp_set_all_formatter_output_functions|pp_set_ellipsis_text|" +
- "pp_set_formatter_out_channel|pp_set_formatter_output_functions|" +
- "pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|" +
- "pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|" +
- "pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|" +
- "prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|" +
- "print_bool|print_break|print_char|print_cut|print_endline|print_float|" +
- "print_flush|print_if_newline|print_int|print_newline|print_space|" +
- "print_stat|print_string|print_tab|print_tbreak|printf|prohibit|" +
- "public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|" +
- "raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|" +
- "read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|" +
- "recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|" +
- "regexp_string_case_fold|register|register_exception|rem|remember_mode|" +
- "remove|remove_assoc|remove_assq|rename|replace|replace_first|" +
- "replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|" +
- "rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|" +
- "rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|" +
- "run_initializers|run_initializers_opt|scanf|search_backward|" +
- "search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|" +
- "set_all_formatter_output_functions|set_approx_printing|" +
- "set_binary_mode_in|set_binary_mode_out|set_close_on_exec|" +
- "set_close_on_exec|set_color|set_ellipsis_text|" +
- "set_error_when_null_denominator|set_field|set_floating_precision|" +
- "set_font|set_formatter_out_channel|set_formatter_output_functions|" +
- "set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|" +
- "set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|" +
- "set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|" +
- "set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|" +
- "set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|" +
- "setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|" +
- "setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|" +
- "shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|" +
- "shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|" +
- "shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|" +
- "sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|" +
- "sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|" +
- "sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|" +
- "sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|" +
- "sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|" +
- "slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|" +
- "slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|" +
- "split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|" +
- "square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|" +
- "stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|" +
- "stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|" +
- "str_formatter|string|string_after|string_before|string_match|" +
- "string_of_big_int|string_of_bool|string_of_float|string_of_format|" +
- "string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|" +
- "string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|" +
- "sub_right|subset|subset|substitute_first|substring|succ|succ|" +
- "succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|" +
- "symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|" +
- "tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|" +
- "tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|" +
- "temp_file|text_size|time|time|time|timed_read|timed_write|times|times|" +
- "tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|" +
- "to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|" +
- "to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|" +
- "truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|" +
- "uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|" +
- "unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|" +
- "update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|" +
- "wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|" +
- "wait_timed_read|wait_timed_write|wait_write|waitpid|white|" +
- "widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|" +
-
- "Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|" +
- "Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|" +
- "Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|" +
- "Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|" +
- "MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|" +
- "Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|" +
- "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "constant.language": builtinConstants,
- "support.function": builtinFunctions
- }, "identifier");
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var octInteger = "(?:0[oO]?[0-7]+)";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var binInteger = "(?:0[bB][01]+)";
- var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
-
- var exponent = "(?:[eE][+-]?\\d+)";
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
- var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : '\\(\\*.*?\\*\\)\\s*?$'
- },
- {
- token : "comment",
- merge : true,
- regex : '\\(\\*.*',
- next : "comment"
- },
- {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- },
- {
- token : "string", // single char
- regex : "'.'"
- },
- {
- token : "string", // " string
- merge : true,
- regex : '"',
- next : "qstring"
- },
- {
- token : "constant.numeric", // imaginary
- regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
- },
- {
- token : "constant.numeric", // float
- regex : floatNumber
- },
- {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- },
- {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- },
- {
- token : "keyword.operator",
- regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="
- },
- {
- token : "paren.lparen",
- regex : "[[({]"
- },
- {
- token : "paren.rparen",
- regex : "[\\])}]"
- },
- {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\)",
- next : "start"
- },
- {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
-
- "qstring" : [
- {
- token : "string",
- regex : '"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-};
-
-oop.inherits(OcamlHighlightRules, TextHighlightRules);
-
-exports.OcamlHighlightRules = OcamlHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-perl.js b/vendor/assets/javascripts/ace-src-noconflict/mode-perl.js
deleted file mode 100644
index d53a347ae85..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-perl.js
+++ /dev/null
@@ -1,419 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/perl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/perl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new PerlHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[\:]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/perl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var PerlHighlightRules = function() {
-
- var keywords = (
- "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" +
- "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars"
- );
-
- var buildinConstants = ("ARGV|ENV|INC|SIG");
-
- var builtinFunctions = (
- "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" +
- "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" +
- "getpeername|setpriority|getprotoent|setprotoent|getpriority|" +
- "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" +
- "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" +
- "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" +
- "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" +
- "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" +
- "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" +
- "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" +
- "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" +
- "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" +
- "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" +
- "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" +
- "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" +
- "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" +
- "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" +
- "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" +
- "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" +
- "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" +
- "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" +
- "map|die|uc|lc|do"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": buildinConstants,
- "support.function": builtinFunctions
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0x[0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-};
-
-oop.inherits(PerlHighlightRules, TextHighlightRules);
-
-exports.PerlHighlightRules = PerlHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-pgsql.js b/vendor/assets/javascripts/ace-src-noconflict/mode-pgsql.js
deleted file mode 100644
index 2bc99ff9cad..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-pgsql.js
+++ /dev/null
@@ -1,963 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/pgsql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/pgsql_highlight_rules', 'ace/range'], function(require, exports, module) {
-
- var oop = require("../lib/oop");
- var TextMode = require("../mode/text").Mode;
- var Tokenizer = require("../tokenizer").Tokenizer;
- var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules;
- var Range = require("../range").Range;
-
- var Mode = function() {
- this.$tokenizer = new Tokenizer(new PgsqlHighlightRules().getRules());
- };
- oop.inherits(Mode, TextMode);
-
- (function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- // var outentedRows = [];
- var re = /^(\s*)--/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "--");
- }
- };
-
-
- this.getNextLineIndent = function(state, line, tab) {
- if (state == "start" || state == "keyword.statementEnd") {
- return "";
- } else {
- return this.$getIndent(line); // Keep whatever indent the previous line has
- }
- }
-
- }).call(Mode.prototype);
-
- exports.Mode = Mode;
-});
-
-ace.define('ace/mode/pgsql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules', 'ace/mode/perl_highlight_rules', 'ace/mode/python_highlight_rules'], function(require, exports, module) {
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-// Supporting perl and python for now -- both in pg core and ace
-var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules;
-var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules;
-
-var PgsqlHighlightRules = function() {
-
- // Keywords, functions, operators last updated for pg 9.1.
- var keywords = (
- "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" +
- "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|array|as|asc|assertion|" +
- "assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|" +
- "binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" +
- "catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|" +
- "cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|" +
- "configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|" +
- "create|cross|cstring|csv|current|current_catalog|current_date|current_role|" +
- "current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|" +
- "date|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|" +
- "delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|" +
- "drop|each|else|enable|encoding|encrypted|end|enum|escape|except|exclude|excluding|exclusive|" +
- "execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|" +
- "float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|" +
- "global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|" +
- "ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|" +
- "inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|" +
- "int4|int8|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|key|label|" +
- "language|language_handler|large|last|lc_collate|lc_ctype|leading|least|left|level|like|" +
- "limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|" +
- "match|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|" +
- "none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|object|of|off|offset|oid|oids|" +
- "oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|" +
- "owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|" +
- "pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|" +
- "position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|" +
- "procedural|procedure|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|" +
- "references|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|" +
- "regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|" +
- "restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|" +
- "search|second|security|select|sequence|sequences|serializable|server|session|session_user|" +
- "set|setof|share|show|similar|simple|smallint|smgr|some|stable|standalone|start|statement|" +
- "statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|" +
- "tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|" +
- "tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsvector|" +
- "txid_snapshot|type|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|" +
- "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" +
- "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" +
- "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" +
- "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone"
- );
-
-
- var builtinFunctions = (
- "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" +
- "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" +
- "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" +
- "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" +
- "abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|aclexplode|aclinsert|" +
- "aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|" +
- "anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|" +
- "anynonarray_in|anynonarray_out|anytextcat|area|areajoinsel|areasel|array_agg|" +
- "array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|" +
- "array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|" +
- "array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_send|" +
- "array_smaller|array_to_string|array_upper|arraycontained|arraycontains|arrayoverlap|" +
- "ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|" +
- "big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|" +
- "bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|" +
- "bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|" +
- "boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|" +
- "box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|" +
- "box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|" +
- "box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|" +
- "box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|" +
- "bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|" +
- "bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|" +
- "bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|" +
- "bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|" +
- "bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|" +
- "btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcharcmp|btcostestimate|" +
- "btendscan|btfloat48cmp|btfloat4cmp|btfloat84cmp|btfloat8cmp|btgetbitmap|btgettuple|" +
- "btinsert|btint24cmp|btint28cmp|btint2cmp|btint42cmp|btint48cmp|btint4cmp|btint82cmp|" +
- "btint84cmp|btint8cmp|btmarkpos|btnamecmp|btoidcmp|btoidvectorcmp|btoptions|btrecordcmp|" +
- "btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|" +
- "bttintervalcmp|btvacuumcleanup|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|" +
- "bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|" +
- "cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|" +
- "cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|" +
- "cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|" +
- "center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|" +
- "charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|" +
- "cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|" +
- "circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|" +
- "circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|" +
- "circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|" +
- "circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|" +
- "clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|" +
- "close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|" +
- "convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|" +
- "cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|" +
- "current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|" +
- "cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|" +
- "database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|" +
- "date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|" +
- "date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|" +
- "date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|" +
- "date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|" +
- "date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|" +
- "date_trunc|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|" +
- "diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|" +
- "dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|" +
- "dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|" +
- "dsynonym_lexize|dtrunc|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|" +
- "enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|" +
- "enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|" +
- "euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|" +
- "euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|" +
- "euc_tw_to_utf8|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|" +
- "float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|" +
- "float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|" +
- "float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|" +
- "float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|" +
- "float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|" +
- "float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|" +
- "float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|" +
- "float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|" +
- "float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|" +
- "float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|" +
- "float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|" +
- "flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|" +
- "fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|" +
- "generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|" +
- "getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|" +
- "gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|" +
- "ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|" +
- "gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|" +
- "ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|" +
- "gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|" +
- "gist_circle_compress|gist_circle_consistent|gist_point_compress|" +
- "gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|" +
- "gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|" +
- "gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|" +
- "gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|" +
- "gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|" +
- "gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|" +
- "gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|" +
- "has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|" +
- "has_function_privilege|has_language_privilege|has_schema_privilege|" +
- "has_sequence_privilege|has_server_privilege|has_table_privilege|" +
- "has_tablespace_privilege|hash_aclitem|hash_array|hash_numeric|hashbeginscan|" +
- "hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|" +
- "hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|" +
- "hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|" +
- "hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|" +
- "hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|" +
- "icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|" +
- "inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|" +
- "inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|" +
- "int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|" +
- "int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|" +
- "int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|" +
- "int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|" +
- "int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|" +
- "int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|" +
- "int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|" +
- "int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|" +
- "int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|" +
- "int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4recv|int4send|" +
- "int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|" +
- "int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|" +
- "int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|" +
- "int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|" +
- "int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|" +
- "int8or|int8out|int8pl|int8pl_inet|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|" +
- "int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|" +
- "interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|" +
- "interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|" +
- "interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|" +
- "interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|" +
- "interval_recv|interval_send|interval_smaller|interval_um|intervaltypmodin|" +
- "intervaltypmodout|intinterval|isclosed|isfinite|ishorizontal|iso8859_1_to_utf8|" +
- "iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|" +
- "isperp|isvertical|johab_to_utf8|justify_days|justify_hours|justify_interval|" +
- "koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|" +
- "koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|" +
- "latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|" +
- "length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|" +
- "line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|" +
- "line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|" +
- "lo_open|lo_tell|lo_truncate|lo_unlink|log|loread|lower|lowrite|lpad|lseg|lseg_center|" +
- "lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|" +
- "lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|" +
- "lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|" +
- "macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_out|macaddr_recv|macaddr_send|" +
- "makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|" +
- "mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|" +
- "mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|" +
- "min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|" +
- "nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|" +
- "namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|" +
- "network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|" +
- "network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|" +
- "npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|" +
- "numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|" +
- "numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|" +
- "numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|" +
- "numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|" +
- "numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_uminus|numeric_uplus|" +
- "numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|" +
- "obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|" +
- "oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|" +
- "oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|" +
- "on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|" +
- "path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|" +
- "path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|" +
- "path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|" +
- "pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|" +
- "pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|" +
- "pg_available_extension_versions|pg_available_extensions|pg_backend_pid|" +
- "pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_is_visible|" +
- "pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|" +
- "pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|" +
- "pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|" +
- "pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|" +
- "pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|" +
- "pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|" +
- "pg_get_indexdef|pg_get_keywords|pg_get_ruledef|pg_get_serial_sequence|" +
- "pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_indexes_size|" +
- "pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|" +
- "pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|" +
- "pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|" +
- "pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|" +
- "pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|" +
- "pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|" +
- "pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|" +
- "pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|" +
- "pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|" +
- "pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|" +
- "pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|" +
- "pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|" +
- "pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|" +
- "pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|" +
- "pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|" +
- "pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|" +
- "pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|" +
- "pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|" +
- "pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|" +
- "pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|" +
- "pg_stat_get_buf_written_backend|pg_stat_get_db_blocks_fetched|" +
- "pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|" +
- "pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|" +
- "pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|" +
- "pg_stat_get_db_conflict_tablespace|pg_stat_get_db_numbackends|" +
- "pg_stat_get_db_stat_reset_time|pg_stat_get_db_tuples_deleted|" +
- "pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|" +
- "pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|" +
- "pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|" +
- "pg_stat_get_function_calls|pg_stat_get_function_self_time|" +
- "pg_stat_get_function_time|pg_stat_get_last_analyze_time|" +
- "pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|" +
- "pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|" +
- "pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|" +
- "pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|" +
- "pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|" +
- "pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|" +
- "pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|" +
- "pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_time|" +
- "pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|" +
- "pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|" +
- "pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|" +
- "pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|" +
- "pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|" +
- "pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|" +
- "pg_tablespace_databases|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|" +
- "pg_timezone_names|pg_total_relation_size|pg_try_advisory_lock|" +
- "pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|" +
- "pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|" +
- "pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|" +
- "pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|" +
- "pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|" +
- "point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|" +
- "point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|" +
- "point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|" +
- "poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|" +
- "poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|" +
- "poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|" +
- "postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|" +
- "prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|" +
- "query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|" +
- "quote_nullable|radians|radius|random|rank|record_eq|record_ge|record_gt|record_in|" +
- "record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|" +
- "regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|" +
- "regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|" +
- "regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|" +
- "regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|" +
- "regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|" +
- "regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|" +
- "regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|" +
- "regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|" +
- "reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|" +
- "reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|rpad|rtrim|" +
- "scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|" +
- "schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|" +
- "set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|" +
- "shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|" +
- "similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|" +
- "smgrout|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|" +
- "string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|" +
- "suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|" +
- "table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|" +
- "text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|" +
- "texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|" +
- "textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|" +
- "thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|" +
- "tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|" +
- "time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|" +
- "time_smaller|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|" +
- "timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|" +
- "timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|" +
- "timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|" +
- "timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|" +
- "timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|" +
- "timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|" +
- "timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|" +
- "timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|" +
- "timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|" +
- "timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|" +
- "timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|" +
- "timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|" +
- "timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|" +
- "timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|" +
- "timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|" +
- "timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|" +
- "timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|" +
- "timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|" +
- "timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|" +
- "timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|" +
- "tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|" +
- "tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|" +
- "tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|" +
- "tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|" +
- "to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|" +
- "trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|" +
- "ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|" +
- "ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|" +
- "tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|" +
- "tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsvector_cmp|" +
- "tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|" +
- "tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|" +
- "tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|" +
- "txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|" +
- "txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|" +
- "uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|" +
- "upper|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|" +
- "utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|" +
- "utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|" +
- "utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|" +
- "uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|" +
- "varbit_out|varbit_recv|varbit_send|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|" +
- "varbitlt|varbitne|varbittypmodin|varbittypmodout|varcharin|varcharout|varcharrecv|" +
- "varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|" +
- "void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|" +
- "win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|" +
- "win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|" +
- "xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|" +
- "xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|" +
- "xpath_exists"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "support.function": builtinFunctions,
- "keyword": keywords,
- }, "identifier", true);
-
-
- var sqlRules = [
- {
- token : "string", // single line string -- assume dollar strings if multi-line for now
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "variable.language", // pg identifier
- regex : '".*?"'
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers
- }, {
- token : "keyword.operator",
- regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" +
- "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" +
- "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" +
- "~=|~>=~|~>~|~~|~~\\*"
- }, {
- token : "paren.lparen",
- regex : "[\\(]"
- }, {
- token : "paren.rparen",
- regex : "[\\)]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ];
-
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "--.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi-line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- },{
- token : "keyword.statementBegin",
- regex : "^[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added.
- next : "statement"
- },{
- token : "support.buildin", // psql directive
- regex : "^\\\\[\\S]+.*$"
- }
- ],
-
- "statement" : [
- {
- token : "comment",
- regex : "--.*$"
- }, {
- token : "comment", // multi-line comment
- merge : true,
- regex : "\\/\\*",
- next : "commentStatement"
- }, {
- token : "statementEnd",
- regex : ";",
- next : "start"
- }, {
- token : "string", // perl, python, tcl are in the pg default dist (no tcl highlighter)
- regex : "\\$perl\\$",
- next : "perl-start"
- }, {
- token : "string",
- regex : "\\$python\\$",
- next : "python-start"
- },{
- token : "string",
- regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line
- next : "dollarSql"
- }, {
- token : "string",
- regex : "\\$[\\w_0-9]*\\$",
- next : "dollarStatementString"
- }
- ].concat(sqlRules),
-
- "dollarSql" : [
- {
- token : "comment",
- regex : "--.*$"
- }, {
- token : "comment", // multi-line comment
- merge : true,
- regex : "\\/\\*",
- next : "commentDollarSql"
- }, {
- token : "string", // end quoting with dollar at the start of a line
- regex : "^\\$[\\w_0-9]*\\$",
- next : "statement"
- }, {
- token : "string",
- regex : "\\$[\\w_0-9]*\\$",
- next : "dollarSqlString"
- }
- ].concat(sqlRules),
-
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
-
- "commentStatement" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "statement"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
-
- "commentDollarSql" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "dollarSql"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
-
- "dollarStatementString" : [
- {
- token : "string", // closing dollarstring
- regex : ".*?\\$[\\w_0-9]*\\$",
- next : "statement"
- }, {
- token : "string", // dollarstring spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
-
- "dollarSqlString" : [
- {
- token : "string", // closing dollarstring
- regex : ".*?\\$[\\w_0-9]*\\$",
- next : "dollarSql"
- }, {
- token : "string", // dollarstring spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]);
- this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]);
- this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]);
-};
-
-oop.inherits(PgsqlHighlightRules, TextHighlightRules);
-
-exports.PgsqlHighlightRules = PgsqlHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/perl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var PerlHighlightRules = function() {
-
- var keywords = (
- "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" +
- "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars"
- );
-
- var buildinConstants = ("ARGV|ENV|INC|SIG");
-
- var builtinFunctions = (
- "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" +
- "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" +
- "getpeername|setpriority|getprotoent|setprotoent|getpriority|" +
- "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" +
- "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" +
- "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" +
- "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" +
- "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" +
- "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" +
- "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" +
- "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" +
- "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" +
- "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" +
- "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" +
- "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" +
- "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" +
- "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" +
- "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" +
- "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" +
- "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" +
- "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" +
- "map|die|uc|lc|do"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": buildinConstants,
- "support.function": builtinFunctions
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0x[0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-};
-
-oop.inherits(PerlHighlightRules, TextHighlightRules);
-
-exports.PerlHighlightRules = PerlHighlightRules;
-});
-/*
- * TODO: python delimiters
- */
-
-ace.define('ace/mode/python_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var PythonHighlightRules = function() {
-
- var keywords = (
- "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" +
- "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" +
- "raise|return|try|while|with|yield"
- );
-
- var builtinConstants = (
- "True|False|None|NotImplemented|Ellipsis|__debug__"
- );
-
- var builtinFunctions = (
- "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" +
- "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" +
- "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" +
- "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" +
- "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" +
- "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" +
- "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" +
- "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern"
- );
-
- //var futureReserved = "";
- var keywordMapper = this.createKeywordMapper({
- "invalid.deprecated": "debugger",
- "support.function": builtinFunctions,
- //"invalid.illegal": futureReserved,
- "constant.language": builtinConstants,
- "keyword": keywords
- }, "identifier");
-
- var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var octInteger = "(?:0[oO]?[0-7]+)";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var binInteger = "(?:0[bB][01]+)";
- var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
-
- var exponent = "(?:[eE][+-]?\\d+)";
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
- var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
-
- this.$rules = {
- "start" : [ {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string", // """ string
- regex : strPre + '"{3}(?:[^\\\\]|\\\\.)*?"{3}'
- }, {
- token : "string", // multi line """ string start
- merge : true,
- regex : strPre + '"{3}.*$',
- next : "qqstring"
- }, {
- token : "string", // " string
- regex : strPre + '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "string", // ''' string
- regex : strPre + "'{3}(?:[^\\\\]|\\\\.)*?'{3}"
- }, {
- token : "string", // multi line ''' string start
- merge : true,
- regex : strPre + "'{3}.*$",
- next : "qstring"
- }, {
- token : "string", // ' string
- regex : strPre + "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // imaginary
- regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // long integer
- regex : integer + "[lL]\\b"
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
- "qqstring" : [ {
- token : "string", // multi line """ string end
- regex : '(?:[^\\\\]|\\\\.)*?"{3}',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring" : [ {
- token : "string", // multi line ''' string end
- regex : "(?:[^\\\\]|\\\\.)*?'{3}",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
- };
-};
-
-oop.inherits(PythonHighlightRules, TextHighlightRules);
-
-exports.PythonHighlightRules = PythonHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-php.js b/vendor/assets/javascripts/ace-src-noconflict/mode-php.js
deleted file mode 100644
index 40710ceef20..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-php.js
+++ /dev/null
@@ -1,2359 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/php', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/php_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new PhpHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[\:]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/php_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules', 'ace/mode/html_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
-
-var PhpLangHighlightRules = function() {
- var docComment = DocCommentHighlightRules;
- // http://php.net/quickref.php
- var builtinFunctions = lang.arrayToMap(
- ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' +
- 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' +
- 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' +
- 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' +
- 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' +
- 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' +
- 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' +
- 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' +
- 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' +
- 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' +
- 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' +
- 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' +
- 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' +
- 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' +
- 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' +
- 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' +
- 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' +
- 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' +
- 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' +
- 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' +
- 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' +
- 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' +
- 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' +
- 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' +
- 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' +
- 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' +
- 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' +
- 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' +
- 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' +
- 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' +
- 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' +
- 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' +
- 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' +
- 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' +
- 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' +
- 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' +
- 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' +
- 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' +
- 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' +
- 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' +
- 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' +
- 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' +
- 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' +
- 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' +
- 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' +
- 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' +
- 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' +
- 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' +
- 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' +
- 'class_parents|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' +
- 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' +
- 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' +
- 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' +
- 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' +
- 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' +
- 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' +
- 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' +
- 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' +
- 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' +
- 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' +
- 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' +
- 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' +
- 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' +
- 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' +
- 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' +
- 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' +
- 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' +
- 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' +
- 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' +
- 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' +
- 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' +
- 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' +
- 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' +
- 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' +
- 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' +
- 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' +
- 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' +
- 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' +
- 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' +
- 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' +
- 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' +
- 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' +
- 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' +
- 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' +
- 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' +
- 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' +
- 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' +
- 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' +
- 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' +
- 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' +
- 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' +
- 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' +
- 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' +
- 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' +
- 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' +
- 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' +
- 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' +
- 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' +
- 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' +
- 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' +
- 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' +
- 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' +
- 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' +
- 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' +
- 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' +
- 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' +
- 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' +
- 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' +
- 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' +
- 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' +
- 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' +
- 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' +
- 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' +
- 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' +
- 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' +
- 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' +
- 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' +
- 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' +
- 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' +
- 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' +
- 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' +
- 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' +
- 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' +
- 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' +
- 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' +
- 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' +
- 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' +
- 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' +
- 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' +
- 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' +
- 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' +
- 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' +
- 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' +
- 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' +
- 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' +
- 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' +
- 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' +
- 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' +
- 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' +
- 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' +
- 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' +
- 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' +
- 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' +
- 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' +
- 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' +
- 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' +
- 'get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' +
- 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' +
- 'get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' +
- 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' +
- 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' +
- 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' +
- 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' +
- 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' +
- 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' +
- 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' +
- 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' +
- 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' +
- 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' +
- 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' +
- 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' +
- 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' +
- 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' +
- 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' +
- 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' +
- 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' +
- 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' +
- 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' +
- 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' +
- 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' +
- 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' +
- 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' +
- 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' +
- 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' +
- 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' +
- 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' +
- 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' +
- 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' +
- 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' +
- 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' +
- 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' +
- 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' +
- 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' +
- 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' +
- 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' +
- 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' +
- 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' +
- 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' +
- 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' +
- 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' +
- 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' +
- 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' +
- 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' +
- 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' +
- 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' +
- 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' +
- 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' +
- 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' +
- 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' +
- 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' +
- 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' +
- 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' +
- 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' +
- 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' +
- 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' +
- 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' +
- 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' +
- 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' +
- 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' +
- 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' +
- 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' +
- 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' +
- 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' +
- 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' +
- 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' +
- 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' +
- 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' +
- 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' +
- 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' +
- 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' +
- 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' +
- 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' +
- 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' +
- 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' +
- 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' +
- 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' +
- 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' +
- 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' +
- 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' +
- 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' +
- 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' +
- 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' +
- 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' +
- 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' +
- 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' +
- 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' +
- 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' +
- 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' +
- 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' +
- 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' +
- 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' +
- 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' +
- 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' +
- 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' +
- 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' +
- 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' +
- 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' +
- 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' +
- 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' +
- 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' +
- 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' +
- 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' +
- 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' +
- 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' +
- 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' +
- 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' +
- 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' +
- 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' +
- 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' +
- 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' +
- 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' +
- 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' +
- 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' +
- 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' +
- 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' +
- 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' +
- 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' +
- 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' +
- 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' +
- 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' +
- 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' +
- 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' +
- 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' +
- 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' +
- 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' +
- 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' +
- 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' +
- 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' +
- 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' +
- 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' +
- 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' +
- 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' +
- 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' +
- 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' +
- 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' +
- 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' +
- 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' +
- 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' +
- 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' +
- 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' +
- 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' +
- 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' +
- 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' +
- 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' +
- 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' +
- 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' +
- 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' +
- 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' +
- 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' +
- 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' +
- 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' +
- 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' +
- 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' +
- 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' +
- 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' +
- 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' +
- 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' +
- 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' +
- 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' +
- 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' +
- 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' +
- 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' +
- 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' +
- 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' +
- 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' +
- 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' +
- 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' +
- 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' +
- 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' +
- 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' +
- 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' +
- 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' +
- 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' +
- 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' +
- 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' +
- 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' +
- 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' +
- 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' +
- 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' +
- 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' +
- 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' +
- 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' +
- 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' +
- 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' +
- 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' +
- 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' +
- 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' +
- 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' +
- 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' +
- 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' +
- 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' +
- 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' +
- 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' +
- 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' +
- 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' +
- 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' +
- 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' +
- 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' +
- 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' +
- 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' +
- 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' +
- 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' +
- 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' +
- 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' +
- 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' +
- 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' +
- 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' +
- 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' +
- 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' +
- 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' +
- 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' +
- 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' +
- 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' +
- 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' +
- 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' +
- 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' +
- 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' +
- 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' +
- 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' +
- 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' +
- 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' +
- 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' +
- 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' +
- 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' +
- 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' +
- 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' +
- 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' +
- 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' +
- 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' +
- 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' +
- 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' +
- 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' +
- 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' +
- 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' +
- 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' +
- 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' +
- 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' +
- 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' +
- 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' +
- 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' +
- 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' +
- 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' +
- 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' +
- 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' +
- 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' +
- 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' +
- 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' +
- 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' +
- 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' +
- 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' +
- 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' +
- 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' +
- 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' +
- 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' +
- 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' +
- 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' +
- 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' +
- 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' +
- 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' +
- 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' +
- 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' +
- 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' +
- 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' +
- 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' +
- 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' +
- 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' +
- 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' +
- 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' +
- 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' +
- 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' +
- 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' +
- 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' +
- 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' +
- 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' +
- 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' +
- 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' +
- 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' +
- 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' +
- 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' +
- 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' +
- 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' +
- 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' +
- 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' +
- 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' +
- 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' +
- 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' +
- 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' +
- 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' +
- 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' +
- 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' +
- 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' +
- 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' +
- 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' +
- 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' +
- 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' +
- 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' +
- 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' +
- 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' +
- 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' +
- 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' +
- 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' +
- 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' +
- 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' +
- 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' +
- 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' +
- 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' +
- 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' +
- 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' +
- 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' +
- 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' +
- 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' +
- 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' +
- 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' +
- 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' +
- 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' +
- 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|' +
- 'mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|' +
- 'mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|' +
- 'mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' +
- 'mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|' +
- 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' +
- 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' +
- 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' +
- 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' +
- 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' +
- 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' +
- 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' +
- 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' +
- 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' +
- 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' +
- 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' +
- 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' +
- 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' +
- 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' +
- 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' +
- 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' +
- 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' +
- 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' +
- 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' +
- 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' +
- 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' +
- 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' +
- 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' +
- 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' +
- 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' +
- 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' +
- 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' +
- 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' +
- 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' +
- 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' +
- 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' +
- 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' +
- 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' +
- 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' +
- 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' +
- 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' +
- 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' +
- 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' +
- 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' +
- 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' +
- 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' +
- 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' +
- 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' +
- 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' +
- 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' +
- 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' +
- 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' +
- 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' +
- 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' +
- 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' +
- 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' +
- 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' +
- 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' +
- 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' +
- 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' +
- 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' +
- 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' +
- 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' +
- 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' +
- 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' +
- 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' +
- 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' +
- 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' +
- 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' +
- 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' +
- 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' +
- 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' +
- 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' +
- 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' +
- 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' +
- 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' +
- 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' +
- 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' +
- 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' +
- 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' +
- 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' +
- 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' +
- 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' +
- 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' +
- 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' +
- 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' +
- 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' +
- 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' +
- 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' +
- 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' +
- 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' +
- 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' +
- 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' +
- 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' +
- 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' +
- 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' +
- 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' +
- 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' +
- 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' +
- 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' +
- 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' +
- 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' +
- 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' +
- 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' +
- 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' +
- 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' +
- 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' +
- 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' +
- 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' +
- 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' +
- 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' +
- 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' +
- 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' +
- 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' +
- 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' +
- 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' +
- 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' +
- 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' +
- 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' +
- 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' +
- 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' +
- 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' +
- 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' +
- 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' +
- 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' +
- 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' +
- 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' +
- 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' +
- 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' +
- 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' +
- 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' +
- 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' +
- 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' +
- 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' +
- 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' +
- 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' +
- 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' +
- 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' +
- 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' +
- 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' +
- 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' +
- 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' +
- 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' +
- 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' +
- 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' +
- 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' +
- 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' +
- 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' +
- 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' +
- 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' +
- 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' +
- 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' +
- 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' +
- 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' +
- 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' +
- 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' +
- 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' +
- 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' +
- 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' +
- 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' +
- 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' +
- 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|' +
- 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' +
- 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' +
- 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' +
- 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' +
- 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' +
- 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' +
- 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' +
- 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' +
- 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' +
- 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' +
- 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' +
- 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' +
- 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' +
- 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' +
- 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' +
- 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' +
- 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' +
- 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' +
- 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' +
- 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' +
- 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' +
- 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' +
- 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' +
- 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' +
- 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' +
- 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' +
- 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' +
- 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' +
- 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' +
- 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' +
- 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' +
- 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' +
- 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' +
- 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' +
- 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' +
- 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' +
- 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' +
- 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' +
- 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' +
- 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' +
- 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' +
- 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' +
- 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' +
- 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' +
- 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' +
- 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' +
- 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' +
- 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' +
- 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' +
- 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' +
- 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' +
- 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' +
- 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' +
- 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' +
- 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' +
- 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' +
- 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' +
- 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' +
- 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' +
- 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' +
- 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' +
- 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' +
- 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' +
- 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' +
- 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' +
- 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' +
- 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' +
- 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' +
- 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' +
- 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' +
- 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' +
- 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' +
- 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' +
- 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' +
- 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' +
- 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' +
- 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' +
- 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' +
- 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' +
- 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' +
- 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' +
- 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' +
- 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' +
- 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' +
- 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' +
- 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' +
- 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' +
- 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' +
- 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' +
- 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' +
- 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' +
- 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' +
- 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' +
- 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' +
- 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' +
- 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' +
- 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' +
- 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' +
- 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' +
- 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' +
- 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' +
- 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' +
- 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' +
- 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' +
- 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' +
- 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' +
- 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' +
- 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' +
- 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' +
- 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' +
- 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' +
- 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' +
- 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' +
- 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' +
- 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' +
- 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' +
- 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' +
- 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' +
- 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' +
- 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' +
- 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' +
- 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' +
- 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' +
- 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' +
- 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' +
- 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' +
- 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' +
- 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' +
- 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' +
- 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' +
- 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' +
- 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' +
- 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' +
- 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' +
- 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' +
- 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' +
- 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' +
- 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' +
- 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' +
- 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' +
- 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' +
- 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' +
- 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' +
- 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' +
- 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' +
- 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' +
- 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' +
- 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' +
- 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' +
- 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' +
- 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' +
- 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' +
- 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' +
- 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' +
- 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' +
- 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' +
- 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' +
- 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' +
- 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' +
- 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' +
- 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' +
- 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' +
- 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|')
- );
-
- // http://php.net/manual/en/reserved.keywords.php
- var keywords = lang.arrayToMap(
- ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' +
- 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' +
- 'public|static|switch|throw|try|use|var|while|xor').split('|')
- );
-
- // http://php.net/manual/en/reserved.keywords.php
- var languageConstructs = lang.arrayToMap(
- ('die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|')
- );
-
- var builtinConstants = lang.arrayToMap(
- ('true|false|null|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|')
- );
-
- var builtinVariables = lang.arrayToMap(
- ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' +
- '$http_response_header|$argc|$argv').split('|')
- );
-
- // Discovery done by downloading 'Many HTML files' from: http://php.net/download-docs.php
- // Then search for files containing 'deprecated' (case-insensitive) and look at each file that turns up.
- var builtinFunctionsDeprecated = lang.arrayToMap(
- ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' +
- 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' +
- 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' +
- 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' +
- 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' +
- 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' +
- 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' +
- 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' +
- 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' +
- 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' +
- 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' +
- 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' +
- 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' +
- 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' +
- 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' +
- 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' +
- 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' +
- 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' +
- 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' +
- 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' +
- 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' +
- 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' +
- 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' +
- 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' +
- 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' +
- 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' +
- 'sql_regcase').split('|')
- );
-
- var keywordsDeprecated = lang.arrayToMap(
- ('cfunction|old_function').split('|')
- );
-
- var futureReserved = lang.arrayToMap([]);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- {
- token : "comment",
- regex : "#.*$"
- },
- docComment.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // " string start
- regex : '"',
- next : "qqstring"
- }, {
- token : "string", // ' string start
- regex : "'",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language", // constants
- regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" +
- "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" +
- "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" +
- "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" +
- "VERSION))|__COMPILER_HALT_OFFSET__)\\b"
- }, {
- token : "constant.language", // constants
- regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" +
- "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" +
- "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" +
- "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" +
- "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" +
- "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" +
- "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" +
- "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" +
- "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" +
- "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" +
- "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" +
- "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" +
- "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" +
- "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" +
- "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" +
- "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"
- }, {
- token : function(value) {
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (builtinConstants.hasOwnProperty(value))
- return "constant.language";
- else if (builtinVariables.hasOwnProperty(value))
- return "variable.language";
- else if (futureReserved.hasOwnProperty(value))
- return "invalid.illegal";
- else if (builtinFunctions.hasOwnProperty(value))
- return "support.function";
- else if (value == "debugger")
- return "invalid.deprecated";
- else
- if(value.match(/^(\$[a-zA-Z][a-zA-Z0-9_]*|self|parent)$/))
- return "variable";
- return "identifier";
- },
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'
- }, {
- token : "constant.language.escape",
- regex : /\$[\w\d]+(?:\[[\w\d]+\])?/
- }, {
- token : "constant.language.escape",
- regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now
- }, {
- token : "string",
- regex : '"',
- next : "start"
- }, {
- token : "string",
- regex : '.+?'
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : "\\\\['\\\\]"
- }, {
- token : "string",
- regex : "'",
- next : "start"
- }, {
- token : "string",
- regex : ".+?"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(PhpLangHighlightRules, TextHighlightRules);
-
-
-var PhpHighlightRules = function() {
- HtmlHighlightRules.call(this);
-
- for (var i in this.$rules) {
- this.$rules[i].unshift({
- token : "support.php_tag", // php open tag
- regex : "<\\?(?:php|\\=)",
- next : "php-start"
- });
- }
-
- this.embedRules(PhpLangHighlightRules, "php-");
-
- this.$rules["php-start"].unshift({
- token : "support.php_tag", // php close tag
- regex : "\\?>",
- next : "start"
- });
-};
-
-oop.inherits(PhpHighlightRules, HtmlHighlightRules);
-
-exports.PhpHighlightRules = PhpHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var tagMap = lang.createMap({
- a : 'anchor',
- button : 'form',
- form : 'form',
- img : 'image',
- input : 'form',
- label : 'form',
- script : 'script',
- select : 'form',
- textarea : 'form',
- style : 'style',
- table : 'table',
- tbody : 'table',
- td : 'table',
- tfoot : 'table',
- th : 'table',
- tr : 'table'
-});
-
-var HtmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- merge : true,
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*script\\b)",
- next : "script"
- }, {
- token : "meta.tag",
- regex : "<(?=\s*style\\b)",
- next : "style"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- } ],
-
- cdata : [ {
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- merge : true,
- regex : "\\s+"
- }, {
- token : "text",
- merge : true,
- regex : ".+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- } ]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start", tagMap);
- xmlUtil.tag(this.$rules, "style", "css-start", tagMap);
- xmlUtil.tag(this.$rules, "script", "js-start", tagMap);
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-
- this.embedRules(CssHighlightRules, "css-", [{
- token: "meta.tag",
- regex: "<\\/(?=style)",
- next: "tag"
- }]);
-};
-
-oop.inherits(HtmlHighlightRules, TextHighlightRules);
-
-exports.HtmlHighlightRules = HtmlHighlightRules;
-});
-
-ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var CssHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "support.type": "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",
- "support.function": "rgb|rgba|url|attr|counter|counters",
- "support.constant": "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",
- "support.constant.color": "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",
- "support.constant.fonts": "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"
- }, "text", true);
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
- var pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
- var pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
-
- var base_ruleset = [
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "ruleset_comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : ["constant.numeric", "keyword"],
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
- }, {
- token : ["constant.numeric"],
- regex : "([0-9]+)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
- regex : pseudoElements
- }, {
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
- regex : pseudoClasses
- }, {
- token : keywordMapper,
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
- }
- ];
-
- var ruleset = lang.copyArray(base_ruleset);
- ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "start"
- });
-
- var media_ruleset = lang.copyArray( base_ruleset );
- media_ruleset.unshift({
- token : "paren.rparen",
- regex : "\\}",
- next: "media"
- });
-
- var base_comment = [{
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }];
-
- var comment = lang.copyArray(base_comment);
- comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- });
-
- var media_comment = lang.copyArray(base_comment);
- media_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "media"
- });
-
- var ruleset_comment = lang.copyArray(base_comment);
- ruleset_comment.unshift({
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "ruleset"
- });
-
- this.$rules = {
- "start" : [{
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "ruleset"
- }, {
- token: "string",
- regex: "@.*?{",
- next: "media"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "media" : [ {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "media_comment"
- }, {
- token: "paren.lparen",
- regex: "\\{",
- next: "media_ruleset"
- },{
- token: "string",
- regex: "\\}",
- next: "start"
- },{
- token: "keyword",
- regex: "#[a-z0-9-_]+"
- },{
- token: "variable",
- regex: "\\.[a-z0-9-_]+"
- },{
- token: "string",
- regex: ":[a-z0-9-_]+"
- },{
- token: "constant",
- regex: "[a-z0-9-_]+"
- }],
-
- "comment" : comment,
-
- "ruleset" : ruleset,
- "ruleset_comment" : ruleset_comment,
-
- "media_ruleset" : media_ruleset,
- "media_comment" : media_comment
- };
-};
-
-oop.inherits(CssHighlightRules, TextHighlightRules);
-
-exports.CssHighlightRules = CssHighlightRules;
-
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-powershell.js b/vendor/assets/javascripts/ace-src-noconflict/mode-powershell.js
deleted file mode 100644
index 6e58237bde1..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-powershell.js
+++ /dev/null
@@ -1,608 +0,0 @@
-ace.define('ace/mode/powershell', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/powershell_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new PowershellHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-
- this.createWorker = function(session) {
- return null;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-ace.define('ace/mode/powershell_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var PowershellHighlightRules = function() {
-
- var keywords = (
- "function|if|else|elseif|switch|while|default|for|do|until|break|continue|" +
- "foreach|return|filter|in|trap|throw|param|begin|process|end"
- );
-
- var builtinFunctions = (
- "Get-Alias|Import-Alias|New-Alias|Set-Alias|Get-AuthenticodeSignature|Set-AuthenticodeSignature|" +
- "Set-Location|Get-ChildItem|Clear-Item|Get-Command|Measure-Command|Trace-Command|" +
- "Add-Computer|Checkpoint-Computer|Remove-Computer|Restart-Computer|Restore-Computer|Stop-Computer|" +
- "Reset-ComputerMachinePassword|Test-ComputerSecureChannel|Add-Content|Get-Content|Set-Content|Clear-Content|" +
- "Get-Command|Invoke-Command|Enable-ComputerRestore|Disable-ComputerRestore|Get-ComputerRestorePoint|Test-Connection|" +
- "ConvertFrom-CSV|ConvertTo-CSV|ConvertTo-Html|ConvertTo-Xml|ConvertFrom-SecureString|ConvertTo-SecureString|" +
- "Copy-Item|Export-Counter|Get-Counter|Import-Counter|Get-Credential|Get-Culture|" +
- "Get-ChildItem|Get-Date|Set-Date|Remove-Item|Compare-Object|Get-Event|" +
- "Get-WinEvent|New-Event|Remove-Event|Unregister-Event|Wait-Event|Clear-EventLog|" +
- "Get-Eventlog|Limit-EventLog|New-Eventlog|Remove-EventLog|Show-EventLog|Write-EventLog|" +
- "Get-EventSubscriber|Register-EngineEvent|Register-ObjectEvent|Register-WmiEvent|Get-ExecutionPolicy|Set-ExecutionPolicy|" +
- "Export-Alias|Export-Clixml|Export-Console|Export-Csv|ForEach-Object|Format-Custom|" +
- "Format-List|Format-Table|Format-Wide|Export-FormatData|Get-FormatData|Get-Item|" +
- "Get-ChildItem|Get-Help|Add-History|Clear-History|Get-History|Invoke-History|" +
- "Get-Host|Read-Host|Write-Host|Get-HotFix|Import-Clixml|Import-Csv|" +
- "Invoke-Command|Invoke-Expression|Get-Item|Invoke-Item|New-Item|Remove-Item|" +
- "Set-Item|Clear-ItemProperty|Copy-ItemProperty|Get-ItemProperty|Move-ItemProperty|New-ItemProperty|" +
- "Remove-ItemProperty|Rename-ItemProperty|Set-ItemProperty|Get-Job|Receive-Job|Remove-Job|" +
- "Start-Job|Stop-Job|Wait-Job|Stop-Process|Update-List|Get-Location|" +
- "Pop-Location|Push-Location|Set-Location|Send-MailMessage|Add-Member|Get-Member|" +
- "Move-Item|Compare-Object|Group-Object|Measure-Object|New-Object|Select-Object|" +
- "Sort-Object|Where-Object|Out-Default|Out-File|Out-GridView|Out-Host|" +
- "Out-Null|Out-Printer|Out-String|Convert-Path|Join-Path|Resolve-Path|" +
- "Split-Path|Test-Path|Get-Pfxcertificate|Pop-Location|Push-Location|Get-Process|" +
- "Start-Process|Stop-Process|Wait-Process|Enable-PSBreakpoint|Disable-PSBreakpoint|Get-PSBreakpoint|" +
- "Set-PSBreakpoint|Remove-PSBreakpoint|Get-PSDrive|New-PSDrive|Remove-PSDrive|Get-PSProvider|" +
- "Set-PSdebug|Enter-PSSession|Exit-PSSession|Export-PSSession|Get-PSSession|Import-PSSession|" +
- "New-PSSession|Remove-PSSession|Disable-PSSessionConfiguration|Enable-PSSessionConfiguration|Get-PSSessionConfiguration|Register-PSSessionConfiguration|" +
- "Set-PSSessionConfiguration|Unregister-PSSessionConfiguration|New-PSSessionOption|Add-PsSnapIn|Get-PsSnapin|Remove-PSSnapin|" +
- "Get-Random|Read-Host|Remove-Item|Rename-Item|Rename-ItemProperty|Select-Object|" +
- "Select-XML|Send-MailMessage|Get-Service|New-Service|Restart-Service|Resume-Service|" +
- "Set-Service|Start-Service|Stop-Service|Suspend-Service|Sort-Object|Start-Sleep|" +
- "ConvertFrom-StringData|Select-String|Tee-Object|New-Timespan|Trace-Command|Get-Tracesource|" +
- "Set-Tracesource|Start-Transaction|Complete-Transaction|Get-Transaction|Use-Transaction|Undo-Transaction|" +
- "Start-Transcript|Stop-Transcript|Add-Type|Update-TypeData|Get-Uiculture|Get-Unique|" +
- "Update-Formatdata|Update-Typedata|Clear-Variable|Get-Variable|New-Variable|Remove-Variable|" +
- "Set-Variable|New-WebServiceProxy|Where-Object|Write-Debug|Write-Error|Write-Host|" +
- "Write-Output|Write-Progress|Write-Verbose|Write-Warning|Set-WmiInstance|Invoke-WmiMethod|" +
- "Get-WmiObject|Remove-WmiObject|Connect-WSMan|Disconnect-WSMan|Test-WSMan|Invoke-WSManAction|" +
- "Disable-WSManCredSSP|Enable-WSManCredSSP|Get-WSManCredSSP|New-WSManInstance|Get-WSManInstance|Set-WSManInstance|" +
- "Remove-WSManInstance|Set-WSManQuickConfig|New-WSManSessionOption"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "support.function": builtinFunctions,
- "keyword": keywords
- }, "identifier");
-
- var binaryOperatorsRe = "eq|ne|ge|gt|lt|le|like|notlike|match|notmatch|replace|contains|notcontains|" +
- "ieq|ine|ige|igt|ile|ilt|ilike|inotlike|imatch|inotmatch|ireplace|icontains|inotcontains|" +
- "is|isnot|as|" +
- "and|or|band|bor|not";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "[$](?:[Tt]rue|[Ff]alse)\\b"
- }, {
- token : "constant.language",
- regex : "[$][Nn]ull\\b"
- }, {
- token : "variable.instance",
- regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\-(?:" + binaryOperatorsRe + ")"
- }, {
- token : "keyword.operator",
- regex : "&|\\*|\\+|\\-|\\=|\\+=|\\-="
- }, {
- token : "lparen",
- regex : "[[({]"
- }, {
- token : "rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-};
-
-oop.inherits(PowershellHighlightRules, TextHighlightRules);
-
-exports.PowershellHighlightRules = PowershellHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-python.js b/vendor/assets/javascripts/ace-src-noconflict/mode-python.js
deleted file mode 100644
index 51e1acf7b75..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-python.js
+++ /dev/null
@@ -1,383 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/python', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/python_highlight_rules', 'ace/mode/folding/pythonic', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules;
-var PythonFoldMode = require("./folding/pythonic").FoldMode;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new PythonHighlightRules().getRules());
- this.foldingRules = new PythonFoldMode("\\:");
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[\:]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- var outdents = {
- "pass": 1,
- "return": 1,
- "raise": 1,
- "break": 1,
- "continue": 1
- };
-
- this.checkOutdent = function(state, line, input) {
- if (input !== "\r\n" && input !== "\r" && input !== "\n")
- return false;
-
- var tokens = this.$tokenizer.getLineTokens(line.trim(), state).tokens;
-
- if (!tokens)
- return false;
-
- // ignore trailing comments
- do {
- var last = tokens.pop();
- } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
-
- if (!last)
- return false;
-
- return (last.type == "keyword" && outdents[last.value]);
- };
-
- this.autoOutdent = function(state, doc, row) {
- // outdenting in python is slightly different because it always applies
- // to the next line and only of a new line is inserted
-
- row += 1;
- var indent = this.$getIndent(doc.getLine(row));
- var tab = doc.getTabString();
- if (indent.slice(-tab.length) == tab)
- doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-/*
- * TODO: python delimiters
- */
-
-ace.define('ace/mode/python_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var PythonHighlightRules = function() {
-
- var keywords = (
- "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" +
- "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" +
- "raise|return|try|while|with|yield"
- );
-
- var builtinConstants = (
- "True|False|None|NotImplemented|Ellipsis|__debug__"
- );
-
- var builtinFunctions = (
- "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" +
- "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" +
- "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" +
- "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" +
- "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" +
- "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" +
- "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" +
- "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern"
- );
-
- //var futureReserved = "";
- var keywordMapper = this.createKeywordMapper({
- "invalid.deprecated": "debugger",
- "support.function": builtinFunctions,
- //"invalid.illegal": futureReserved,
- "constant.language": builtinConstants,
- "keyword": keywords
- }, "identifier");
-
- var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var octInteger = "(?:0[oO]?[0-7]+)";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var binInteger = "(?:0[bB][01]+)";
- var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
-
- var exponent = "(?:[eE][+-]?\\d+)";
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
- var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
-
- this.$rules = {
- "start" : [ {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string", // """ string
- regex : strPre + '"{3}(?:[^\\\\]|\\\\.)*?"{3}'
- }, {
- token : "string", // multi line """ string start
- merge : true,
- regex : strPre + '"{3}.*$',
- next : "qqstring"
- }, {
- token : "string", // " string
- regex : strPre + '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "string", // ''' string
- regex : strPre + "'{3}(?:[^\\\\]|\\\\.)*?'{3}"
- }, {
- token : "string", // multi line ''' string start
- merge : true,
- regex : strPre + "'{3}.*$",
- next : "qstring"
- }, {
- token : "string", // ' string
- regex : strPre + "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // imaginary
- regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // long integer
- regex : integer + "[lL]\\b"
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
- "qqstring" : [ {
- token : "string", // multi line """ string end
- regex : '(?:[^\\\\]|\\\\.)*?"{3}',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ],
- "qstring" : [ {
- token : "string", // multi line ''' string end
- regex : "(?:[^\\\\]|\\\\.)*?'{3}",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
- };
-};
-
-oop.inherits(PythonHighlightRules, TextHighlightRules);
-
-exports.PythonHighlightRules = PythonHighlightRules;
-});
-
-ace.define('ace/mode/folding/pythonic', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(markers) {
- this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$");
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, match.index);
- if (match[2])
- return this.indentationBlock(session, row, match.index + match[2].length);
- return this.indentationBlock(session, row);
- }
- }
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-ruby.js b/vendor/assets/javascripts/ace-src-noconflict/mode-ruby.js
deleted file mode 100644
index 72ad0a4a2ca..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-ruby.js
+++ /dev/null
@@ -1,302 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/ruby', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ruby_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new RubyHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var RubyHighlightRules = function() {
-
- var builtinFunctions = (
- "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" +
- "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" +
- "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" +
- "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" +
- "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" +
- "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" +
- "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" +
- "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" +
- "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" +
- "gsub!|get_via_redirect|h|host!|https?|https!|include|Integer|lambda|link_to|" +
- "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" +
- "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" +
- "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" +
- "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" +
- "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" +
- "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" +
- "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" +
- "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" +
- "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" +
- "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" +
- "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" +
- "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" +
- "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" +
- "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" +
- "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" +
- "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" +
- "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" +
- "translate|localize|extract_locale_from_tld|t|l|caches_page|expire_page|caches_action|expire_action|" +
- "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" +
- "has_many|has_one|belongs_to|has_and_belongs_to_many"
- );
-
- var keywords = (
- "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
- "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" +
- "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield"
- );
-
- var buildinConstants = (
- "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
- "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING"
- );
-
- var builtinVariables = (
- "\$DEBUG|\$defout|\$FILENAME|\$LOAD_PATH|\$SAFE|\$stdin|\$stdout|\$stderr|\$VERBOSE|" +
- "$!|root_url|flash|session|cookies|params|request|response|logger|self"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": keywords,
- "constant.language": buildinConstants,
- "variable.language": builtinVariables,
- "support.function": builtinFunctions,
- "invalid.deprecated": "debugger" // TODO is this a remnant from js mode?
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "comment", // multi line comment
- merge : true,
- regex : "^\=begin$",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // backtick string
- regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
- }, {
- token : "text", // namespaces aren't symbols
- regex : "::"
- }, {
- token : "variable.instancce", // instance variable
- regex : "@{1,2}(?:[a-zA-Z_]|\d)+"
- }, {
- token : "variable.class", // class name
- regex : "[A-Z](?:[a-zA-Z_]|\d)+"
- }, {
- token : "string", // symbol
- regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : "^\=end$",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ]
- };
-};
-
-oop.inherits(RubyHighlightRules, TextHighlightRules);
-
-exports.RubyHighlightRules = RubyHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-scad.js b/vendor/assets/javascripts/ace-src-noconflict/mode-scad.js
deleted file mode 100644
index 3d3c42cd187..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-scad.js
+++ /dev/null
@@ -1,712 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/scad', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/scad_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new scadHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/scad_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var scadHighlightRules = function() {
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": "module|if|else|for",
- "constant.language": "NULL",
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant", // <CONSTANT>
- regex : "<[a-zA-Z0-9.]+>"
- }, {
- token : "keyword", // pre-compiler directivs
- regex : "(?:use|include)"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(scadHighlightRules, TextHighlightRules);
-
-exports.scadHighlightRules = scadHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-scala.js b/vendor/assets/javascripts/ace-src-noconflict/mode-scala.js
deleted file mode 100644
index 87b8e12b8e0..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-scala.js
+++ /dev/null
@@ -1,1151 +0,0 @@
-ace.define('ace/mode/scala', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/scala_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var JavaScriptMode = require("./javascript").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules;
-
-var Mode = function() {
- JavaScriptMode.call(this);
-
- this.$tokenizer = new Tokenizer(new ScalaHighlightRules().getRules());
-};
-oop.inherits(Mode, JavaScriptMode);
-
-(function() {
-
- this.createWorker = function(session) {
- return null;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-ace.define('ace/mode/scala_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var ScalaHighlightRules = function() {
-
- // taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
- var keywords = (
- "case|default|do|else|for|if|match|while|throw|return|try|catch|finally|yield|" +
- "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|" +
- "override|package|private|protected|sealed|super|this|trait|type|val|var|with"
- );
-
- var buildinConstants = ("true|false");
-
- var langClasses = (
- "AbstractMethodError|AssertionError|ClassCircularityError|"+
- "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+
- "ExceptionInInitializerError|IllegalAccessError|"+
- "IllegalThreadStateException|InstantiationError|InternalError|"+
-
- "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+
- "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+
- "SuppressWarnings|TypeNotPresentException|UnknownError|"+
- "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+
- "InstantiationException|IndexOutOfBoundsException|"+
- "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+
- "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+
- "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+
- "InterruptedException|NoSuchMethodException|IllegalAccessException|"+
- "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+
- "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+
- "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+
- "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+
- "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+
- "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+
- "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+
- "ArrayStoreException|ClassCastException|LinkageError|"+
- "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+
- "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+
- "Cloneable|Class|CharSequence|Comparable|String|Object|" +
- "Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|" +
- "Option|Array|Char|Byte|Short|Int|Long|Nothing"
-
-
- );
-
- var keywordMapper = this.createKeywordMapper({
- "variable.language": "this",
- "keyword": keywords,
- "support.function": langClasses,
- "constant.language": buildinConstants
- }, "identifier");
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string.regexp",
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
- }, {
- token : "string",
- regex : '"""',
- next : "tstring"
- }, {
- token : "string",
- regex : '"(?=.)', // " strings can't span multiple lines
- next : "string"
- }, {
- token : "symbol.constant", // single line
- regex : "'[\\w\\d_]+"
- }, {
- token : "constant.numeric", // hex
- regex : "0[xX][0-9a-fA-F]+\\b"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false)\\b"
- }, {
- token : keywordMapper,
- // TODO: Unicode escape sequences
- // TODO: Unicode identifiers
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "string" : [
- {
- token : "escape",
- regex : '\\\\"',
- }, {
- token : "string",
- merge : true,
- regex : '"',
- next : "start"
- }, {
- token : "string.invalid",
- regex : '[^"\\\\]*$',
- next : "start"
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }
- ],
- "tstring" : [
- {
- token : "string", // closing comment
- regex : '"{3,5}',
- next : "start"
- }, {
- token : "string", // comment spanning whole line
- merge : true,
- regex : ".+?"
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(ScalaHighlightRules, TextHighlightRules);
-
-exports.ScalaHighlightRules = ScalaHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-scss.js b/vendor/assets/javascripts/ace-src-noconflict/mode-scss.js
deleted file mode 100644
index 10a2b33d8fe..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-scss.js
+++ /dev/null
@@ -1,530 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/scss', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/scss_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new ScssHighlightRules().getRules(), "i");
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- // ignore braces in comments
- var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- var match = line.match(/^.*\{\s*$/);
- if (match) {
- indent += tab;
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/scss_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var lang = require("../lib/lang");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var ScssHighlightRules = function() {
-
- var properties = lang.arrayToMap( (function () {
-
- var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
-
- var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
- "background-size|binding|border-bottom-colors|border-left-colors|" +
- "border-right-colors|border-top-colors|border-end|border-end-color|" +
- "border-end-style|border-end-width|border-image|border-start|" +
- "border-start-color|border-start-style|border-start-width|box-align|" +
- "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
- "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
- "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
- "font-feature-settings|font-language-override|force-broken-image-icon|" +
- "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
- "outline-offset|outline-radius|outline-radius-bottomleft|" +
- "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
- "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
- "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
- "text-decoration-style|transform|transform-origin|transition|" +
- "transition-delay|transition-duration|transition-property|" +
- "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
- "window-shadow|border-radius").split("|");
-
- var properties = ("azimuth|background-attachment|background-color|background-image|" +
- "background-position|background-repeat|background|border-bottom-color|" +
- "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
- "border-color|border-left-color|border-left-style|border-left-width|" +
- "border-left|border-right-color|border-right-style|border-right-width|" +
- "border-right|border-spacing|border-style|border-top-color|" +
- "border-top-style|border-top-width|border-top|border-width|border|" +
- "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
- "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
- "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
- "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
- "letter-spacing|line-height|list-style-image|list-style-position|" +
- "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
- "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
- "min-width|opacity|orphans|outline-color|" +
- "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
- "padding-left|padding-right|padding-top|padding|page-break-after|" +
- "page-break-before|page-break-inside|page|pause-after|pause-before|" +
- "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
- "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
- "stress|table-layout|text-align|text-decoration|text-indent|" +
- "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
- "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
- "z-index").split("|");
-
- //The return array
- var ret = [];
-
- //All prefixProperties will get the browserPrefix in
- //the begning by join the prefixProperties array with the value of browserPrefix
- for (var i=0, ln=browserPrefix.length; i<ln; i++) {
- Array.prototype.push.apply(
- ret,
- (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
- );
- }
-
- //Add also prefixProperties and properties without any browser prefix
- Array.prototype.push.apply(ret, prefixProperties);
- Array.prototype.push.apply(ret, properties);
-
- return ret;
-
- })() );
-
-
-
- var functions = lang.arrayToMap(
- ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" +
- "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" +
- "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" +
- "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" +
- "scale_color|transparentize|type_of|unit|unitless|unqoute").split("|")
- );
-
- var constants = lang.arrayToMap(
- ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
- "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
- "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
- "decimal-leading-zero|decimal|default|disabled|disc|" +
- "distribute-all-lines|distribute-letter|distribute-space|" +
- "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
- "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
- "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
- "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
- "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
- "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
- "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
- "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
- "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
- "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
- "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
- "solid|square|static|strict|super|sw-resize|table-footer-group|" +
- "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
- "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
- "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
- "zero").split("|")
- );
-
- var colors = lang.arrayToMap(
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
- "purple|red|silver|teal|white|yellow").split("|")
- );
-
- var keywords = lang.arrayToMap(
- ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|")
- )
-
- var tags = lang.arrayToMap(
- ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
- "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
- "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
- "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
- "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
- "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
- "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
- "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
- "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
- );
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "\\/\\/.*$"
- },
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*\\\\$',
- next : "qqstring"
- }, {
- token : "string", // single line
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*\\\\$",
- next : "qstring"
- }, {
- token : "constant.numeric",
- regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
- }, {
- token : "constant.numeric", // hex6 color
- regex : "#[a-f0-9]{6}"
- }, {
- token : "constant.numeric", // hex3 color
- regex : "#[a-f0-9]{3}"
- }, {
- token : "constant.numeric",
- regex : numRe
- }, {
- token : function(value) {
- if (properties.hasOwnProperty(value.toLowerCase()))
- return "support.type";
- if (keywords.hasOwnProperty(value))
- return "keyword";
- else if (constants.hasOwnProperty(value))
- return "constant.language";
- else if (functions.hasOwnProperty(value))
- return "support.function";
- else if (colors.hasOwnProperty(value.toLowerCase()))
- return "support.constant.color";
- else if (tags.hasOwnProperty(value.toLowerCase()))
- return "variable.language";
- else
- return "text";
- },
- regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
- }, {
- token : "variable",
- regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b"
- }, {
- token: "variable.language",
- regex: "#[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: "\\.[a-z0-9-_]+"
- }, {
- token: "variable.language",
- regex: ":[a-z0-9-_]+"
- }, {
- token: "constant",
- regex: "[a-z0-9-_]+"
- }, {
- token : "keyword.operator",
- regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ],
- "qstring" : [
- {
- token : "string",
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]
- };
-};
-
-oop.inherits(ScssHighlightRules, TextHighlightRules);
-
-exports.ScssHighlightRules = ScssHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-sh.js b/vendor/assets/javascripts/ace-src-noconflict/mode-sh.js
deleted file mode 100644
index 52fbfae3313..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-sh.js
+++ /dev/null
@@ -1,238 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/sh', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/sh_highlight_rules', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new ShHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[\:]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- var outdents = {
- "pass": 1,
- "return": 1,
- "raise": 1,
- "break": 1,
- "continue": 1
- };
-
- this.checkOutdent = function(state, line, input) {
- if (input !== "\r\n" && input !== "\r" && input !== "\n")
- return false;
-
- var tokens = this.$tokenizer.getLineTokens(line.trim(), state).tokens;
-
- if (!tokens)
- return false;
-
- // ignore trailing comments
- do {
- var last = tokens.pop();
- } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
-
- if (!last)
- return false;
-
- return (last.type == "keyword" && outdents[last.value]);
- };
-
- this.autoOutdent = function(state, doc, row) {
- // outdenting in sh is slightly different because it always applies
- // to the next line and only of a new line is inserted
-
- row += 1;
- var indent = this.$getIndent(doc.getLine(row));
- var tab = doc.getTabString();
- if (indent.slice(-tab.length) == tab)
- doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/sh_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var ShHighlightRules = function() {
-
- var reservedKeywords = (
- '!|{|}|case|do|done|elif|else|'+
- 'esac|fi|for|if|in|then|until|while|'+
- '&|;|export|local|read|typeset|unset|'+
- 'elif|select|set'
- );
-
- var languageConstructs = (
- '[|]|alias|bg|bind|break|builtin|'+
- 'cd|command|compgen|complete|continue|'+
- 'dirs|disown|echo|enable|eval|exec|'+
- 'exit|fc|fg|getopts|hash|help|history|'+
- 'jobs|kill|let|logout|popd|printf|pushd|'+
- 'pwd|return|set|shift|shopt|source|'+
- 'suspend|test|times|trap|type|ulimit|'+
- 'umask|unalias|wait'
- );
-
- var keywordMapper = this.createKeywordMapper({
- "keyword": reservedKeywords,
- "constant.language": languageConstructs,
- "invalid.deprecated": "debugger"
- }, "identifier");
-
- var integer = "(?:(?:[1-9]\\d*)|(?:0))";
- // var integer = "(?:" + decimalInteger + ")";
-
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")";
- var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
- var fileDescriptor = "(?:&" + intPart + ")";
-
- var variableName = "[a-zA-Z][a-zA-Z0-9_]*";
- var variable = "(?:(?:\\$" + variableName + ")|(?:" + variableName + "=))";
-
- var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))";
-
- var func = "(?:" + variableName + "\\s*\\(\\))";
-
- this.$rules = {
- "start" : [ {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "string", // " string
- regex : '"(?:[^\\\\]|\\\\.)*?"'
- }, {
- token : "variable.language",
- regex : builtinVariable
- }, {
- token : "variable",
- regex : variable
- }, {
- token : "support.function",
- regex : func,
- }, {
- token : "support.function",
- regex : fileDescriptor
- }, {
- token : "string", // ' string
- regex : "'(?:[^\\\\]|\\\\.)*?'"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ]
- };
-};
-
-oop.inherits(ShHighlightRules, TextHighlightRules);
-
-exports.ShHighlightRules = ShHighlightRules;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-sql.js b/vendor/assets/javascripts/ace-src-noconflict/mode-sql.js
deleted file mode 100644
index d7fab1c53ec..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-sql.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/sql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/sql_highlight_rules', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new SqlHighlightRules().getRules());
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var outentedRows = [];
- var re = /^(\s*)--/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "--");
- }
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/sql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var SqlHighlightRules = function() {
-
- var keywords = (
- "select|from|where|and|or|group|by|order|limit|offset|having|as|case|" +
- "when|else|end|type|left|right|join|on|outer|desc|asc"
- );
-
- var builtinConstants = (
- "true|false|null"
- );
-
- var builtinFunctions = (
- "count|min|max|avg|sum|rank|now|coalesce"
- );
-
- var keywordMapper = this.createKeywordMapper({
- "support.function": builtinFunctions,
- "keyword": keywords,
- "constant.language": builtinConstants
- }, "identifier", true);
-
- this.$rules = {
- "start" : [ {
- token : "comment",
- regex : "--.*$"
- }, {
- token : "string", // " string
- regex : '".*?"'
- }, {
- token : "string", // ' string
- regex : "'.*?'"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
- }, {
- token : "paren.lparen",
- regex : "[\\(]"
- }, {
- token : "paren.rparen",
- regex : "[\\)]"
- }, {
- token : "text",
- regex : "\\s+"
- } ]
- };
-};
-
-oop.inherits(SqlHighlightRules, TextHighlightRules);
-
-exports.SqlHighlightRules = SqlHighlightRules;
-});
-
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-svg.js b/vendor/assets/javascripts/ace-src-noconflict/mode-svg.js
deleted file mode 100644
index 96b965ba112..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-svg.js
+++ /dev/null
@@ -1,1602 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/svg', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/svg_highlight_rules', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var XmlMode = require("./xml").Mode;
-var JavaScriptMode = require("./javascript").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var SvgHighlightRules = require("./svg_highlight_rules").SvgHighlightRules;
-var MixedFoldMode = require("./folding/mixed").FoldMode;
-var XmlFoldMode = require("./folding/xml").FoldMode;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- XmlMode.call(this);
-
- this.highlighter = new SvgHighlightRules();
- this.$tokenizer = new Tokenizer(this.highlighter.getRules());
-
- this.$embeds = this.highlighter.getEmbeds();
- this.createModeDelegates({
- "js-": JavaScriptMode
- });
-
- this.foldingRules = new MixedFoldMode(new XmlFoldMode({}), {
- "js-": new CStyleFoldMode()
- });
-};
-
-oop.inherits(Mode, XmlMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
-var XmlFoldMode = require("./folding/xml").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new XmlHighlightRules().getRules());
- this.$behaviour = new XmlBehaviour();
- this.foldingRules = new XmlFoldMode();
-};
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- }],
-
- cdata : [{
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- }],
-
- comment : [{
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
-};
-
-oop.inherits(XmlHighlightRules, TextHighlightRules);
-
-exports.XmlHighlightRules = XmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.$behaviour = new CstyleBehaviour();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)\/\//;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "//");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
- var endState = tokenizedLine.state;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start" || state == "regex_allowed") {
- var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);
- if (match) {
- indent += tab;
- }
- } else if (state == "doc-start") {
- if (endState == "start" || state == "regex_allowed") {
- return "";
- }
- var match = line.match(/^\s*(\/?)\*/);
- if (match) {
- if (match[1]) {
- indent += " ";
- }
- indent += "* ";
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
- this.createWorker = function(session) {
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
- worker.attachToDocument(session.getDocument());
-
- worker.on("jslint", function(results) {
- var errors = [];
- for (var i=0; i<results.data.length; i++) {
- var error = results.data[i];
- if (error)
- errors.push({
- row: error.line-1,
- column: error.character-1,
- text: error.reason,
- type: "warning",
- lint: error
- });
- }
- session.setAnnotations(errors);
- });
-
- worker.on("narcissus", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("terminate", function() {
- session.clearAnnotations();
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/unicode', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var unicode = require("../unicode");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var JavaScriptHighlightRules = function() {
- // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects
- var keywordMapper = this.createKeywordMapper({
- "variable.language":
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
- "Namespace|QName|XML|XMLList|" + // E4X
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
- "SyntaxError|TypeError|URIError|" +
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
- "isNaN|parseFloat|parseInt|" +
- "JSON|Math|" + // Other
- "this|arguments|prototype|window|document" , // Pseudo
- "invalid.deprecated":
- "__parent__|__count__|escape|unescape|with|__proto__|debugger",
- "keyword":
- "const|yield|import|get|set" +
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
- "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|",
- "storage.type":
- "const|let|var|function",
- "invalid.illegal":
- "class|enum|extends|super|export|implements|private|" +
- "public|interface|package|protected|static",
- "constant.language":
- "null|Infinity|NaN|undefined",
- }, "identifier");
-
-
- // keywords which can be followed by regular expressions
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield";
-
- // TODO: Unicode escape sequences
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";
-
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
- "u[0-9a-fA-F]{4}|" + // unicode
- "[0-2][0-7]{0,2}|" + // oct
- "3[0-6][0-7]?|" + // oct
- "37[0-7]?|" + // oct
- "[4-7][0-7]?|" + //oct
- ".)";
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : /\/\/.*$/
- },
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : /\/\*/,
- next : "comment"
- }, {
- token : "string",
- regex : "'(?=.)",
- next : "qstring"
- }, {
- token : "string",
- regex : '"(?=.)',
- next : "qqstring"
- }, {
- token : "constant.numeric", // hex
- regex : /0[xX][0-9a-fA-F]+\b/
- }, {
- token : "constant.numeric", // float
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
- }, {
- // Sound.prototype.play =
- token : [
- "storage.type", "punctuation.operator", "support.function",
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
- ],
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
- next: "function_arguments"
- }, {
- // Sound.play = function() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // play = function() { }
- token : [
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
- "text", "paren.lparen"
- ],
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // Sound.play = function play() { }
- token : [
- "storage.type", "punctuation.operator", "entity.name.function", "text",
- "keyword.operator", "text",
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // function myFunc(arg) { }
- token : [
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
- ],
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // foobar: function() { }
- token : [
- "entity.name.function", "text", "punctuation.operator",
- "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- // : function() { } (this is for issues with 'foo': function() { })
- token : [
- "text", "text", "storage.type", "text", "paren.lparen"
- ],
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
- next: "function_arguments"
- }, {
- token : "constant.language.boolean",
- regex : /(?:true|false)\b/
- }, {
- token : "keyword",
- regex : "(?:" + kwBeforeRe + ")\\b",
- next : "regex_allowed"
- }, {
- token : ["punctuation.operator", "support.function"],
- regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.function.dom"],
- regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
- }, {
- token : ["punctuation.operator", "support.constant"],
- regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
- }, {
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
- regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
- }, {
- token : keywordMapper,
- regex : identifierRe
- }, {
- token : "keyword.operator",
- regex : /!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=|\b(?:in|instanceof|new|delete|typeof|void)/,
- next : "regex_allowed"
- }, {
- token : "punctuation.operator",
- regex : /\?|\:|\,|\;|\./,
- next : "regex_allowed"
- }, {
- token : "paren.lparen",
- regex : /[\[({]/,
- next : "regex_allowed"
- }, {
- token : "paren.rparen",
- regex : /[\])}]/
- }, {
- token : "keyword.operator",
- regex : /\/=?/,
- next : "regex_allowed"
- }, {
- token: "comment",
- regex: /^#!.*$/
- }, {
- token : "text",
- regex : /\s+/
- }
- ],
- // regular expressions are only allowed after certain tokens. This
- // makes sure we don't mix up regexps with the division operator
- "regex_allowed": [
- DocCommentHighlightRules.getStartRule("doc-start"),
- {
- token : "comment", // multi line comment
- merge : true,
- regex : "\\/\\*",
- next : "comment_regex_allowed"
- }, {
- token : "comment",
- regex : "\\/\\/.*$"
- }, {
- token: "string.regexp",
- regex: "\\/",
- next: "regex",
- merge: true
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- // immediately return to the start mode without matching
- // anything
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex": [
- {
- // escapes
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- // flag
- token: "string.regexp",
- regex: "/\\w*",
- next: "start",
- merge: true
- }, {
- // invalid operators
- token : "invalid",
- regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
- }, {
- // operators
- token : "constant.language.escape",
- regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
- }, {
- token: "string.regexp",
- regex: /{|[^\[\\{()$^+*?\/]+/,
- merge: true
- }, {
- token: "constant.language.escape",
- regex: /\[\^?/,
- next: "regex_character_class",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "regex_character_class": [
- {
- token: "regexp.keyword.operator",
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
- }, {
- token: "constant.language.escape",
- regex: "]",
- next: "regex",
- merge: true
- }, {
- token: "constant.language.escape",
- regex: "-",
- }, {
- token: "string.regexp.charachterclass",
- regex: /[^\]\-\\]+/,
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "function_arguments": [
- {
- token: "variable.parameter",
- regex: identifierRe
- }, {
- token: "punctuation.operator",
- regex: "[, ]+",
- merge: true
- }, {
- token: "punctuation.operator",
- regex: "$",
- merge: true
- }, {
- token: "empty",
- regex: "",
- next: "start"
- }
- ],
- "comment_regex_allowed" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "regex_allowed"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "comment" : [
- {
- token : "comment", // closing comment
- regex : ".*?\\*\\/",
- merge : true,
- next : "start"
- }, {
- token : "comment", // comment spanning whole line
- merge : true,
- regex : ".+"
- }
- ],
- "qqstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : '[^"\\\\]+',
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring",
- merge : true
- }, {
- token : "string",
- regex : '"|$',
- next : "start",
- merge : true
- }
- ],
- "qstring" : [
- {
- token : "constant.language.escape",
- regex : escapedRe
- }, {
- token : "string",
- regex : "[^'\\\\]+",
- merge : true
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring",
- merge : true
- }, {
- token : "string",
- regex : "'|$",
- next : "start",
- merge : true
- }
- ]
- };
-
- this.embedRules(DocCommentHighlightRules, "doc-",
- [ DocCommentHighlightRules.getEndRule("start") ]);
-};
-
-oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
-
-exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
-});
-
-ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var DocCommentHighlightRules = function() {
-
- this.$rules = {
- "start" : [ {
- token : "comment.doc.tag",
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
- }, {
- token : "comment.doc",
- merge : true,
- regex : "\\s+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "TODO"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "[^@\\*]+"
- }, {
- token : "comment.doc",
- merge : true,
- regex : "."
- }]
- };
-};
-
-oop.inherits(DocCommentHighlightRules, TextHighlightRules);
-
-DocCommentHighlightRules.getStartRule = function(start) {
- return {
- token : "comment.doc", // doc comment
- merge : true,
- regex : "\\/\\*(?=\\*)",
- next : start
- };
-};
-
-DocCommentHighlightRules.getEndRule = function (start) {
- return {
- token : "comment.doc", // closing comment
- merge : true,
- regex : "\\*\\/",
- next : start
- };
-};
-
-
-exports.DocCommentHighlightRules = DocCommentHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/svg_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules', 'ace/mode/xml_util'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var xmlUtil = require("./xml_util");
-
-var SvgHighlightRules = function() {
- XmlHighlightRules.call(this);
-
- this.$rules.start.splice(3, 0, {
- token : "meta.tag",
- regex : "<(?=\s*script)",
- next : "script"
- });
-
- xmlUtil.tag(this.$rules, "script", "js-start");
-
- this.embedRules(JavaScriptHighlightRules, "js-", [{
- token: "comment",
- regex: "\\/\\/.*(?=<\\/script>)",
- next: "tag"
- }, {
- token: "meta.tag",
- regex: "<\\/(?=script)",
- next: "tag"
- }]);
-};
-
-oop.inherits(SvgHighlightRules, XmlHighlightRules);
-
-exports.SvgHighlightRules = SvgHighlightRules;
-});
-
-ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
- this.defaultMode = defaultMode;
- this.subModes = subModes;
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
-
- this.$getMode = function(state) {
- for (var key in this.subModes) {
- if (state.indexOf(key) === 0)
- return this.subModes[key];
- }
- return null;
- };
-
- this.$tryMode = function(state, session, foldStyle, row) {
- var mode = this.$getMode(state);
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
- };
-
- this.getFoldWidget = function(session, foldStyle, row) {
- return (
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
- this.defaultMode.getFoldWidget(session, foldStyle, row)
- );
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var mode = this.$getMode(session.getState(row-1));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.$getMode(session.getState(row));
-
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
- mode = this.defaultMode;
-
- return mode.getFoldWidgetRange(session, foldStyle, row);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-tcl.js b/vendor/assets/javascripts/ace-src-noconflict/mode-tcl.js
deleted file mode 100644
index 64473a24797..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-tcl.js
+++ /dev/null
@@ -1,444 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/tcl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/folding/cstyle', 'ace/mode/tcl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
-var TclHighlightRules = require("./tcl_highlight_rules").TclHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new TclHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new CStyleFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var outdent = true;
- var re = /^(\s*)#/;
-
- for (var i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- if (outdent) {
- var deleteRange = new Range(0, 0, 0, 0);
- for (var i=startRow; i<= endRow; i++)
- {
- var line = doc.getLine(i);
- var m = line.match(re);
- deleteRange.start.row = i;
- deleteRange.end.row = i;
- deleteRange.end.column = m[0].length;
- doc.replace(deleteRange, m[1]);
- }
- }
- else {
- doc.indentRows(startRow, endRow, "#");
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
- var tokens = tokenizedLine.tokens;
-
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
- return indent;
- }
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
-
- if (match[1])
- return this.openingBracketBlock(session, match[1], row, i);
-
- var range = session.getCommentFoldRange(row, i + match[0].length);
- range.end.column -= 2;
- return range;
- }
-
- if (foldStyle !== "markbeginend")
- return;
-
- var match = line.match(this.foldingStopMarker);
- if (match) {
- var i = match.index + match[0].length;
-
- if (match[2]) {
- var range = session.getCommentFoldRange(row, i);
- range.end.column -= 2;
- return range;
- }
-
- var end = {row: row, column: i};
- var start = session.$findOpeningBracket(match[1], end);
-
- if (!start)
- return;
-
- start.column++;
- end.column--;
-
- return Range.fromPoints(start, end);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/tcl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var TclHighlightRules = function() {
-
- //TODO var builtinFunctions = "";
-
- this.$rules = {
- "start" : [
- {
- token : "comment",
- merge : true,
- regex : "#.*\\\\$",
- next : "commentfollow"
- }, {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "support.function",
- regex : '[\\\\]$',
- next : "splitlineStart"
- }, {
- token : "text",
- regex : '[\\\\](?:["]|[{]|[}]|[[]|[]]|[$]|[\])'
- }, {
- token : "text", // last value before command
- regex : '^|[^{][;][^}]|[/\r/]',
- next : "commandItem"
- }, {
- token : "string", // single line
- regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line """ string start
- merge : true,
- regex : '[ ]*["]',
- next : "qqstring"
- }, {
- token : "variable.instancce", // variable xotcl with braces
- merge : true,
- regex : "[$]",
- next : "variable"
- }, {
- token : "support.function",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"
- }, {
- token : "identifier",
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "paren.lparen",
- regex : "[[{]",
- next : "commandItem"
- }, {
- token : "paren.lparen",
- regex : "[(]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "commandItem" : [
- {
- token : "comment",
- merge : true,
- regex : "#.*\\\\$",
- next : "commentfollow"
- }, {
- token : "comment",
- regex : "#.*$",
- next : "start"
- }, {
- token : "string", // single line
- regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "variable.instancce", // variable xotcl with braces
- merge : true,
- regex : "[$]",
- next : "variable"
- }, {
- token : "support.function",
- regex : "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])",
- next : "commandItem"
- }, {
- token : "support.function",
- regex : "[a-zA-Z0-9_/]+(?:[:][:])",
- next : "commandItem"
- }, {
- token : "support.function",
- regex : "(?:[:][:])",
- next : "commandItem"
- }, {
- token : "support.function",
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"
- }, {
- token : "keyword",
- regex : "[a-zA-Z0-9_/]+",
- next : "start"
- } ],
- "commentfollow" : [
- {
- token : "comment",
- regex : ".*\\\\$",
- next : "commentfollow"
- }, {
- token : "comment",
- merge : true,
- regex : '.+',
- next : "start"
- } ],
- "splitlineStart" : [
- {
- token : "text",
- regex : "^.",
- next : "start"
- }],
- "variable" : [
- {
- token : "variable.instancce", // variable xotcl with braces
- regex : "(?:[:][:])?(?:[a-zA-Z_]|\d)+(?:(?:[:][:])?(?:[a-zA-Z_]|\d)+)?(?:[(](?:[a-zA-Z_]|\d)+[)])?",
- next : "start"
- }, {
- token : "variable.instancce", // variable tcl
- regex : "(?:[a-zA-Z_]|\d)+(?:[(](?:[a-zA-Z_]|\d)+[)])?",
- next : "start"
- }, {
- token : "variable.instancce", // variable tcl with braces
- regex : "{?(?:[a-zA-Z_]|\d)+}?",
- next : "start"
- }],
- "qqstring" : [ {
- token : "string", // multi line """ string end
- regex : '(?:[^\\\\]|\\\\.)*?["]',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- } ]
- };
-};
-
-oop.inherits(TclHighlightRules, TextHighlightRules);
-
-exports.TclHighlightRules = TclHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-text.js b/vendor/assets/javascripts/ace-src-noconflict/mode-text.js
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-text.js
+++ /dev/null
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-textile.js b/vendor/assets/javascripts/ace-src-noconflict/mode-textile.js
deleted file mode 100644
index fb70ddc0e20..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-textile.js
+++ /dev/null
@@ -1,175 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/textile', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/textile_highlight_rules', 'ace/mode/matching_brace_outdent'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new TextileHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- this.getNextLineIndent = function(state, line, tab) {
- if (state == "intag")
- return tab;
-
- return "";
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/textile_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var TextileHighlightRules = function() {
- this.$rules = {
- "start" : [
- {
- token : function(value) {
- if (value.charAt(0) == "h")
- return "markup.heading." + value.charAt(1);
- else
- return "markup.heading";
- },
- regex : "h1|h2|h3|h4|h5|h6|bq|p|bc|pre",
- next : "blocktag"
- },
- {
- token : "keyword",
- regex : "[\\*]+|[#]+"
- },
- {
- token : "text",
- regex : ".+"
- }
- ],
- "blocktag" : [
- {
- token : "keyword",
- regex : "\\. ",
- next : "start"
- },
- {
- token : "keyword",
- regex : "\\(",
- next : "blocktagproperties"
- }
- ],
- "blocktagproperties" : [
- {
- token : "keyword",
- regex : "\\)",
- next : "blocktag"
- },
- {
- token : "string",
- regex : "[a-zA-Z0-9\\-_]+"
- },
- {
- token : "keyword",
- regex : "#"
- }
- ]
- };
-};
-
-oop.inherits(TextileHighlightRules, TextHighlightRules);
-
-exports.TextileHighlightRules = TextileHighlightRules;
-
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-xml.js b/vendor/assets/javascripts/ace-src-noconflict/mode-xml.js
deleted file mode 100644
index 07a154d6df0..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-xml.js
+++ /dev/null
@@ -1,822 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
-var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
-var XmlFoldMode = require("./folding/xml").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new XmlHighlightRules().getRules());
- this.$behaviour = new XmlBehaviour();
- this.foldingRules = new XmlFoldMode();
-};
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$getIndent(line);
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-
-ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var xmlUtil = require("./xml_util");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XmlHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
- this.$rules = {
- start : [{
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- merge : true,
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "xml_pe",
- regex : "<\\!.*?>"
- }, {
- token : "meta.tag", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "constant.character.entity",
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
- }, {
- token : "text",
- regex : "[^<]+"
- }],
-
- cdata : [{
- token : "text",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "text",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- }],
-
- comment : [{
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token : "comment",
- merge : true,
- regex : ".+"
- }]
- };
-
- xmlUtil.tag(this.$rules, "tag", "start");
-};
-
-oop.inherits(XmlHighlightRules, TextHighlightRules);
-
-exports.XmlHighlightRules = XmlHighlightRules;
-});
-
-ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-function string(state) {
- return [{
- token : "string",
- regex : '".*?"'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '["].*',
- next : state + "_qqstring"
- }, {
- token : "string",
- regex : "'.*?'"
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : "['].*",
- next : state + "_qstring"
- }];
-}
-
-function multiLineString(quote, state) {
- return [{
- token : "string",
- merge : true,
- regex : ".*?" + quote,
- next : state
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }];
-}
-
-exports.tag = function(states, name, nextState, tagMap) {
- states[name] = [{
- token : "text",
- regex : "\\s+"
- }, {
- //token : "meta.tag",
-
- token : !tagMap ? "meta.tag.tag-name" : function(value) {
- if (tagMap[value])
- return "meta.tag.tag-name." + tagMap[value];
- else
- return "meta.tag.tag-name";
- },
- merge : true,
- regex : "[-_a-zA-Z0-9:]+",
- next : name + "_embed_attribute_list"
- }, {
- token: "empty",
- regex: "",
- next : name + "_embed_attribute_list"
- }];
-
- states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list");
- states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list");
-
- states[name + "_embed_attribute_list"] = [{
- token : "meta.tag",
- merge : true,
- regex : "\/?>",
- next : nextState
- }, {
- token : "keyword.operator",
- regex : "="
- }, {
- token : "entity.other.attribute-name",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "text",
- regex : "\\s+"
- }].concat(string(name));
-};
-
-});
-
-ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-function hasType(token, type) {
- var hasType = true;
- var typeList = token.type.split('.');
- var needleList = type.split('.');
- needleList.forEach(function(needle){
- if (typeList.indexOf(needle) == -1) {
- hasType = false;
- return false;
- }
- });
- return hasType;
-}
-
-var XmlBehaviour = function () {
-
- this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour
-
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
- if (text == '>') {
- var position = editor.getCursorPosition();
- var iterator = new TokenIterator(session, position.row, position.column);
- var token = iterator.getCurrentToken();
- var atCursor = false;
- if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){
- do {
- token = iterator.stepBackward();
- } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text')));
- } else {
- atCursor = true;
- }
- if (!token || !hasType(token, 'meta.tag-name') || iterator.stepBackward().value.match('/')) {
- return
- }
- var tag = token.value;
- if (atCursor){
- var tag = tag.substring(0, position.column - token.start);
- }
-
- return {
- text: '>' + '</' + tag + '>',
- selection: [1, 1]
- }
- }
- });
-
- this.add('autoindent', 'insertion', function (state, action, editor, session, text) {
- if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChars = line.substring(cursor.column, cursor.column + 2);
- if (rightChars == '</') {
- var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
- var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- }
- }
- }
- });
-
-}
-oop.inherits(XmlBehaviour, Behaviour);
-
-exports.XmlBehaviour = XmlBehaviour;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
-
-ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var lang = require("../../lib/lang");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var TokenIterator = require("../../token_iterator").TokenIterator;
-
-var FoldMode = exports.FoldMode = function(voidElements) {
- BaseFoldMode.call(this);
- this.voidElements = voidElements || {};
-};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidget = function(session, foldStyle, row) {
- var tag = this._getFirstTagInLine(session, row);
-
- if (tag.closing)
- return foldStyle == "markbeginend" ? "end" : "";
-
- if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()])
- return "";
-
- if (tag.selfClosing)
- return "";
-
- if (tag.value.indexOf("/" + tag.tagName) !== -1)
- return "";
-
- return "start";
- };
-
- this._getFirstTagInLine = function(session, row) {
- var tokens = session.getTokens(row);
- var value = "";
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (token.type.indexOf("meta.tag") === 0)
- value += token.value;
- else
- value += lang.stringRepeat(" ", token.value.length);
- }
-
- return this._parseTag(value);
- };
-
- this.tagRe = /^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/;
- this._parseTag = function(tag) {
-
- var match = this.tagRe.exec(tag);
- var column = this.tagRe.lastIndex || 0;
- this.tagRe.lastIndex = 0;
-
- return {
- value: tag,
- match: match ? match[2] : "",
- closing: match ? !!match[3] : false,
- selfClosing: match ? !!match[5] || match[2] == "/>" : false,
- tagName: match ? match[4] : "",
- column: match[1] ? column + match[1].length : column
- };
- };
- this._readTagForward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var start;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!start) {
- var start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- }
- value += token.value;
- if (value.indexOf(">") !== -1) {
- var tag = this._parseTag(value);
- tag.start = start;
- tag.end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- iterator.stepForward();
- return tag;
- }
- }
- } while(token = iterator.stepForward());
-
- return null;
- };
-
- this._readTagBackward = function(iterator) {
- var token = iterator.getCurrentToken();
- if (!token)
- return null;
-
- var value = "";
- var end;
-
- do {
- if (token.type.indexOf("meta.tag") === 0) {
- if (!end) {
- end = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn() + token.value.length
- };
- }
- value = token.value + value;
- if (value.indexOf("<") !== -1) {
- var tag = this._parseTag(value);
- tag.end = end;
- tag.start = {
- row: iterator.getCurrentTokenRow(),
- column: iterator.getCurrentTokenColumn()
- };
- iterator.stepBackward();
- return tag;
- }
- }
- } while(token = iterator.stepBackward());
-
- return null;
- };
-
- this._pop = function(stack, tag) {
- while (stack.length) {
-
- var top = stack[stack.length-1];
- if (!tag || top.tagName == tag.tagName) {
- return stack.pop();
- }
- else if (this.voidElements[tag.tagName]) {
- return;
- }
- else if (this.voidElements[top.tagName]) {
- stack.pop();
- continue;
- } else {
- return null;
- }
- }
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var firstTag = this._getFirstTagInLine(session, row);
-
- if (!firstTag.match)
- return null;
-
- var isBackward = firstTag.closing || firstTag.selfClosing;
- var stack = [];
- var tag;
-
- if (!isBackward) {
- var iterator = new TokenIterator(session, row, firstTag.column);
- var start = {
- row: row,
- column: firstTag.column + firstTag.tagName.length + 2
- };
- while (tag = this._readTagForward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0)
- return Range.fromPoints(start, tag.start);
- }
- else {
- stack.push(tag)
- }
- }
- }
- else {
- var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length);
- var end = {
- row: row,
- column: firstTag.column
- };
-
- while (tag = this._readTagBackward(iterator)) {
- if (tag.selfClosing) {
- if (!stack.length) {
- tag.start.column += tag.tagName.length + 2;
- tag.end.column -= 2;
- return Range.fromPoints(tag.start, tag.end);
- } else
- continue;
- }
-
- if (!tag.closing) {
- this._pop(stack, tag);
- if (stack.length == 0) {
- tag.start.column += tag.tagName.length + 2;
- return Range.fromPoints(tag.start, end);
- }
- }
- else {
- stack.push(tag)
- }
- }
- }
-
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-xquery.js b/vendor/assets/javascripts/ace-src-noconflict/mode-xquery.js
deleted file mode 100644
index b42730f900b..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-xquery.js
+++ /dev/null
@@ -1,591 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-ace.define('ace/mode/xquery', ['require', 'exports', 'module' , 'ace/worker/worker_client', 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xquery_highlight_rules', 'ace/mode/behaviour/xquery', 'ace/range'], function(require, exports, module) {
-
-
-var WorkerClient = require("../worker/worker_client").WorkerClient;
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XQueryHighlightRules = require("./xquery_highlight_rules").XQueryHighlightRules;
-var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour;
-//var XQueryBackgroundHighlighter = require("./xquery_background_highlighter").XQueryBackgroundHighlighter;
-var Range = require("../range").Range;
-
-var Mode = function(parent) {
- this.$tokenizer = new Tokenizer(new XQueryHighlightRules().getRules());
- this.$behaviour = new XQueryBehaviour(parent);
-};
-
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
- var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);
- if (match)
- indent += tab;
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*[\}\)]/.test(input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*[\}\)])/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
- var i, line;
- var outdent = true;
- var re = /^\s*\(:(.*):\)/;
-
- for (i=startRow; i<= endRow; i++) {
- if (!re.test(doc.getLine(i))) {
- outdent = false;
- break;
- }
- }
-
- var range = new Range(0, 0, 0, 0);
- for (i=startRow; i<= endRow; i++) {
- line = doc.getLine(i);
- range.start.row = i;
- range.end.row = i;
- range.end.column = line.length;
-
- doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)");
- }
- };
-
- this.createWorker = function(session) {
- this.$deltas = [];
- var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker");
- var that = this;
-
- session.getDocument().on('change', function(evt){
- that.$deltas.push(evt.data);
- });
-
- worker.attachToDocument(session.getDocument());
-
- worker.on("start", function(e) {
- //console.log("start");
- that.$deltas = [];
- });
-
- worker.on("error", function(e) {
- session.setAnnotations([e.data]);
- });
-
- worker.on("ok", function(e) {
- session.clearAnnotations();
- });
-
- worker.on("highlight", function(tokens) {
- var firstRow = 0;
- var lastRow = session.getLength() - 1;
-
- var lines = tokens.data.lines;
- var states = tokens.data.states;
-
- for(var i=0; i < that.$deltas.length; i++)
- {
- var delta = that.$deltas[i];
-
- if (delta.action === "insertLines")
- {
- var newLineCount = delta.lines.length;
- for (var i = 0; i < newLineCount; i++) {
- lines.splice(delta.range.start.row + i, 0, undefined);
- states.splice(delta.range.start.row + i, 0, undefined);
- }
- }
- else if (delta.action === "insertText")
- {
- if (session.getDocument().isNewLine(delta.text))
- {
- lines.splice(delta.range.end.row, 0, undefined);
- states.splice(delta.range.end.row, 0, undefined);
- } else {
- lines[delta.range.start.row] = undefined;
- states[delta.range.start.row] = undefined;
- }
- } else if (delta.action === "removeLines") {
- var oldLineCount = delta.lines.length;
- lines.splice(delta.range.start.row, oldLineCount);
- states.splice(delta.range.start.row, oldLineCount);
- } else if (delta.action === "removeText") {
- if (session.getDocument().isNewLine(delta.text))
- {
- lines[delta.range.start.row] = undefined;
- lines.splice(delta.range.end.row, 1);
- states[delta.range.start.row] = undefined;
- states.splice(delta.range.end.row, 1);
- } else {
- lines[delta.range.start.row] = undefined;
- states[delta.range.start.row] = undefined;
- }
- }
- }
- session.bgTokenizer.lines = lines;
- session.bgTokenizer.states = states;
- session.bgTokenizer.fireUpdateEvent(firstRow, lastRow);
- });
-
- return worker;
- };
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
-ace.define('ace/mode/xquery_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XQueryHighlightRules = function() {
-
- var keywordMapper = this.createKeywordMapper({
- keyword: "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position"
- }, "identifier");
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- start : [ {
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "comment",
- regex : "\\(:",
- next : "comment"
- }, {
- token : "text", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "constant", // number
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "variable", // variable
- regex : "\\$[a-zA-Z_][a-zA-Z0-9_\\-:]*\\b"
- }, {
- token: "string",
- regex : '".*?"'
- }, {
- token: "string",
- regex : "'.*?'"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token: "support.function",
- regex: "\\w[\\w+_\\-:]+(?=\\()"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token: "keyword.operator",
- regex: "\\*|=|<|>|\\-|\\+"
- }, {
- token: "lparen",
- regex: "[[({]"
- }, {
- token: "rparen",
- regex: "[\\])}]"
- } ],
-
- tag : [ {
- token : "text",
- regex : ">",
- next : "start"
- }, {
- token : "meta.tag",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "string",
- regex : '".*?"'
- }, {
- token : "string",
- regex : "'.*?'"
- } ],
-
- cdata : [ {
- token : "comment",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "comment",
- regex : "\\s+"
- }, {
- token : "comment",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token: "comment",
- regex : ".*:\\)",
- next : "start"
- }, {
- token : "comment",
- regex : ".+"
- } ]
- };
-};
-
-oop.inherits(XQueryHighlightRules, TextHighlightRules);
-
-exports.XQueryHighlightRules = XQueryHighlightRules;
-});
-ace.define('ace/mode/behaviour/xquery', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle'], function(require, exports, module) {
-
-
- var oop = require("../../lib/oop");
- var Behaviour = require('../behaviour').Behaviour;
- var CstyleBehaviour = require('./cstyle').CstyleBehaviour;
-
- var XQueryBehaviour = function (parent) {
-
- this.inherit(CstyleBehaviour, ["braces", "parens", "string_dquotes"]); // Get string behaviour
- this.parent = parent;
-
-// this.add("brackets", "insertion", function (state, action, editor, session, text) {
-// if (text == "\n") {
-// var cursor = editor.getCursorPosition();
-// var line = session.doc.getLine(cursor.row);
-// var rightChars = line.substring(cursor.column, cursor.column + 2);
-// if (rightChars == '</') {
-// var indent = this.$getIndent(session.doc.getLine(cursor.row)) + session.getTabString();
-// var next_indent = this.$getIndent(session.doc.getLine(cursor.row));
-//
-// return {
-// text: '\n' + indent + '\n' + next_indent,
-// selection: [1, indent.length, 1, indent.length]
-// }
-// }
-// }
-// return false;
-// });
-
- // Check for open tag if user enters / and auto-close it.
-// this.add("slash", "insertion", function (state, action, editor, session, text) {
-// if (text == "/") {
-// var cursor = editor.getCursorPosition();
-// var line = session.doc.getLine(cursor.row);
-// if (cursor.column > 0 && line.charAt(cursor.column - 1) == "<") {
-// line = line.substring(0, cursor.column) + "/" + line.substring(cursor.column);
-// var lines = session.doc.getAllLines();
-// lines[cursor.row] = line;
-// // call mode helper to close the tag if possible
-// parent.exec("closeTag", lines.join(session.doc.getNewLineCharacter()), cursor.row);
-// }
-// }
-// return false;
-// });
- }
- oop.inherits(XQueryBehaviour, Behaviour);
-
- exports.XQueryBehaviour = XQueryBehaviour;
-});
-
-ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var Behaviour = require("../behaviour").Behaviour;
-
-var CstyleBehaviour = function () {
-
- this.add("braces", "insertion", function (state, action, editor, session, text) {
- if (text == '{') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '{' + selected + '}',
- selection: false
- };
- } else {
- return {
- text: '{}',
- selection: [1, 1]
- };
- }
- } else if (text == '}') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- } else if (text == "\n") {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == '}') {
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
- if (!openBracePos)
- return null;
-
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
-
- return {
- text: '\n' + indent + '\n' + next_indent,
- selection: [1, indent.length, 1, indent.length]
- };
- }
- }
- });
-
- this.add("braces", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '{') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.end.column, range.end.column + 1);
- if (rightChar == '}') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("parens", "insertion", function (state, action, editor, session, text) {
- if (text == '(') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '(' + selected + ')',
- selection: false
- };
- } else {
- return {
- text: '()',
- selection: [1, 1]
- };
- }
- } else if (text == ')') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ')') {
- var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("parens", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '(') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ')') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("brackets", "insertion", function (state, action, editor, session, text) {
- if (text == '[') {
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: '[' + selected + ']',
- selection: false
- };
- } else {
- return {
- text: '[]',
- selection: [1, 1]
- };
- }
- } else if (text == ']') {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == ']') {
- var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
- if (matching !== null) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- });
-
- this.add("brackets", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && selected == '[') {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == ']') {
- range.end.column++;
- return range;
- }
- }
- });
-
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
- if (text == '"' || text == "'") {
- var quote = text;
- var selection = editor.getSelectionRange();
- var selected = session.doc.getTextRange(selection);
- if (selected !== "") {
- return {
- text: quote + selected + quote,
- selection: false
- };
- } else {
- var cursor = editor.getCursorPosition();
- var line = session.doc.getLine(cursor.row);
- var leftChar = line.substring(cursor.column-1, cursor.column);
-
- // We're escaped.
- if (leftChar == '\\') {
- return null;
- }
-
- // Find what token we're inside.
- var tokens = session.getTokens(selection.start.row);
- var col = 0, token;
- var quotepos = -1; // Track whether we're inside an open quote.
-
- for (var x = 0; x < tokens.length; x++) {
- token = tokens[x];
- if (token.type == "string") {
- quotepos = -1;
- } else if (quotepos < 0) {
- quotepos = token.value.indexOf(quote);
- }
- if ((token.value.length + col) > selection.start.column) {
- break;
- }
- col += tokens[x].value.length;
- }
-
- // Try and be smart about when we auto insert.
- if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
- return {
- text: quote + quote,
- selection: [1,1]
- };
- } else if (token && token.type === "string") {
- // Ignore input and move right one if we're typing over the closing quote.
- var rightChar = line.substring(cursor.column, cursor.column + 1);
- if (rightChar == quote) {
- return {
- text: '',
- selection: [1, 1]
- };
- }
- }
- }
- }
- });
-
- this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
- var selected = session.doc.getTextRange(range);
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
- var line = session.doc.getLine(range.start.row);
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
- if (rightChar == '"') {
- range.end.column++;
- return range;
- }
- }
- });
-
-};
-
-oop.inherits(CstyleBehaviour, Behaviour);
-
-exports.CstyleBehaviour = CstyleBehaviour;
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/mode-yaml.js b/vendor/assets/javascripts/ace-src-noconflict/mode-yaml.js
deleted file mode 100644
index 87a059fa6b8..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/mode-yaml.js
+++ /dev/null
@@ -1,371 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/mode/yaml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/yaml_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/coffee'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var Tokenizer = require("../tokenizer").Tokenizer;
-var YamlHighlightRules = require("./yaml_highlight_rules").YamlHighlightRules;
-var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
-var FoldMode = require("./folding/coffee").FoldMode;
-
-var Mode = function() {
- this.$tokenizer = new Tokenizer(new YamlHighlightRules().getRules());
- this.$outdent = new MatchingBraceOutdent();
- this.foldingRules = new FoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- if (state == "start") {
- var match = line.match(/^.*[\{\(\[]\s*$/);
- if (match) {
- indent += tab;
- }
- }
-
- return indent;
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
-
-
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
-
-ace.define('ace/mode/yaml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var YamlHighlightRules = function() {
-
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
- this.$rules = {
- "start" : [
- {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "comment",
- regex : "^---"
- }, {
- token: "variable",
- regex: "[&\\*][a-zA-Z0-9-_]+"
- }, {
- token: ["identifier", "text"],
- regex: "(\\w+\\s*:)(\\w*)"
- }, {
- token : "keyword.operator",
- regex : "<<\\w*:\\w*"
- }, {
- token : "keyword.operator",
- regex : "-\\s*(?=[{])"
- }, {
- token : "string", // single line
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
- }, {
- token : "string", // multi line string start
- merge : true,
- regex : '[\\|>]\\w*',
- next : "qqstring"
- }, {
- token : "string", // single quoted string
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
- }, {
- token : "constant.numeric", // float
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "constant.language.boolean",
- regex : "(?:true|false|yes|no)\\b"
- }, {
- token : "invalid.illegal", // comments are not allowed
- regex : "\\/\\/.*$"
- }, {
- token : "paren.lparen",
- regex : "[[({]"
- }, {
- token : "paren.rparen",
- regex : "[\\])}]"
- }, {
- token : "text",
- regex : "\\s+"
- }
- ],
- "qqstring" : [
- {
- token : "string",
- regex : '(?=(?:(?:\\\\.)|(?:[^:]))*?:)',
- next : "start"
- }, {
- token : "string",
- merge : true,
- regex : '.+'
- }
- ]}
-
-};
-
-oop.inherits(YamlHighlightRules, TextHighlightRules);
-
-exports.YamlHighlightRules = YamlHighlightRules;
-});
-
-ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../range").Range;
-
-var MatchingBraceOutdent = function() {};
-
-(function() {
-
- this.checkOutdent = function(line, input) {
- if (! /^\s+$/.test(line))
- return false;
-
- return /^\s*\}/.test(input);
- };
-
- this.autoOutdent = function(doc, row) {
- var line = doc.getLine(row);
- var match = line.match(/^(\s*\})/);
-
- if (!match) return 0;
-
- var column = match[1].length;
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
-
- if (!openBracePos || openBracePos.row == row) return 0;
-
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
- doc.replace(new Range(row, 0, row, column-1), indent);
- };
-
- this.$getIndent = function(line) {
- var match = line.match(/^(\s+)/);
- if (match) {
- return match[1];
- }
-
- return "";
- };
-
-}).call(MatchingBraceOutdent.prototype);
-
-exports.MatchingBraceOutdent = MatchingBraceOutdent;
-});
-
-ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) {
-
-
-var oop = require("../../lib/oop");
-var BaseFoldMode = require("./fold_mode").FoldMode;
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- var range = this.indentationBlock(session, row);
- if (range)
- return range;
-
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1 || line[startLevel] != "#")
- return;
-
- var startColumn = line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- line = session.getLine(row);
- var level = line.search(re);
-
- if (level == -1)
- continue;
-
- if (line[level] != "#")
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- var indent = line.search(/\S/);
- var next = session.getLine(row + 1);
- var prev = session.getLine(row - 1);
- var prevIndent = prev.search(/\S/);
- var nextIndent = next.search(/\S/);
-
- if (indent == -1) {
- session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
- return "";
- }
-
- // documentation comments
- if (prevIndent == -1) {
- if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
- session.foldWidgets[row - 1] = "";
- session.foldWidgets[row + 1] = "";
- return "start";
- }
- } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
- if (session.getLine(row - 2).search(/\S/) == -1) {
- session.foldWidgets[row - 1] = "start";
- session.foldWidgets[row + 1] = "";
- return "";
- }
- }
-
- if (prevIndent!= -1 && prevIndent < indent)
- session.foldWidgets[row - 1] = "start";
- else
- session.foldWidgets[row - 1] = "";
-
- if (indent < nextIndent)
- return "start";
- else
- return "";
- };
-
-}).call(FoldMode.prototype);
-
-});
-
-ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
-
-
-var Range = require("../../range").Range;
-
-var FoldMode = exports.FoldMode = function() {};
-
-(function() {
-
- this.foldingStartMarker = null;
- this.foldingStopMarker = null;
-
- // must return "" if there's no fold, to enable caching
- this.getFoldWidget = function(session, foldStyle, row) {
- var line = session.getLine(row);
- if (this.foldingStartMarker.test(line))
- return "start";
- if (foldStyle == "markbeginend"
- && this.foldingStopMarker
- && this.foldingStopMarker.test(line))
- return "end";
- return "";
- };
-
- this.getFoldWidgetRange = function(session, foldStyle, row) {
- return null;
- };
-
- this.indentationBlock = function(session, row, column) {
- var re = /\S/;
- var line = session.getLine(row);
- var startLevel = line.search(re);
- if (startLevel == -1)
- return;
-
- var startColumn = column || line.length;
- var maxRow = session.getLength();
- var startRow = row;
- var endRow = row;
-
- while (++row < maxRow) {
- var level = session.getLine(row).search(re);
-
- if (level == -1)
- continue;
-
- if (level <= startLevel)
- break;
-
- endRow = row;
- }
-
- if (endRow > startRow) {
- var endColumn = session.getLine(endRow).length;
- return new Range(startRow, startColumn, endRow, endColumn);
- }
- };
-
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
- var start = {row: row, column: column + 1};
- var end = session.$findClosingBracket(bracket, start, typeRe);
- if (!end)
- return;
-
- var fw = session.foldWidgets[end.row];
- if (fw == null)
- fw = this.getFoldWidget(session, end.row);
-
- if (fw == "start" && end.row > start.row) {
- end.row --;
- end.column = session.getLine(end.row).length;
- }
- return Range.fromPoints(start, end);
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-ambiance.js b/vendor/assets/javascripts/ace-src-noconflict/theme-ambiance.js
deleted file mode 100644
index fb4e15707ef..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-ambiance.js
+++ /dev/null
@@ -1,269 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright 2011 Irakli Gozalishvili. All rights reserved.
- * 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.
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/ambiance', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-ambiance";
-exports.cssText = ".ace-ambiance {\
- background-color: #202020;\
-}\
-\
-.ace-ambiance .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-ambiance .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-ambiance .ace_gutter {\
- background-image: -moz-linear-gradient(left, #3D3D3D, #333);\
- background-image: -ms-linear-gradient(left, #3D3D3D, #333);\
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));\
- background-image: -webkit-linear-gradient(left, #3D3D3D, #333);\
- background-image: -o-linear-gradient(left, #3D3D3D, #333);\
- background-image: linear-gradient(left, #3D3D3D, #333);\
- background-repeat: repeat-x;\
-\
- text-shadow: 0px 1px 1px #4d4d4d;\
- color: #222;\
- border-right: 1px solid #4d4d4d;\
- overflow : hidden;\
-}\
-\
-.ace-ambiance .ace_gutter-layer {\
- background: repeat left top;\
- width: 100%;\
- text-align: right;\
-}\
-\
-.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget {\
- position: absolute;\
- right: 2px;\
- margin: 0;\
- vertical-align: middle;\
- height: inherit;\
- width: auto;\
- background: none;\
- border: none;\
- box-shadow: none;\
- outline: none;\
-}\
-\
-.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget:hover {\
- color: #777;\
-}\
-\
-.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget:hover {\
- color: #777;\
-}\
-\
-.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget.open:after {\
- content: 'â–¾'\
-}\
-\
-.ace-ambiance .ace_gutter-layer .ace_gutter-cell .ace_fold-widget.closed:after {\
- content: '‣'\
-}\
-\
-.ace-ambiance .ace_print_margin {\
- border-left: 1px dotted #2D2D2D;\
- width: 100%;\
- background: #262626;\
-}\
-\
-.ace-ambiance .ace_scroller {\
- background-color: #202020;\
- -webkit-box-shadow: inset 0 0 10px black;\
- -moz-box-shadow: inset 0 0 10px black;\
- -o-box-shadow: inset 0 0 10px black;\
- box-shadow: inset 0 0 10px black;\
-}\
-\
-.ace-ambiance .ace_text-layer {\
- cursor: text;\
- color: #E6E1DC;\
- background: url(\"noise.png\") repeat left top;\
-}\
-\
-.ace-ambiance .ace_cursor {\
- border-left: 1px solid #7991E8;\
-}\
-\
-.ace-ambiance .ace_cursor.ace_overwrite {\
- border: 1px solid #FFE300;\
- background: #766B13;\
-}\
-\
-.ace-ambiance.normal-mode .ace_cursor-layer {\
- z-index: 0;\
-}\
- \
-.ace-ambiance .ace_marker-layer .ace_selection {\
- background: rgba(221, 240, 255, 0.20);\
-}\
-\
-.ace-ambiance .ace_marker-layer .ace_selected_word {\
- border-radius: 4px;\
- border: 8px solid #3f475d;\
- box-shadow: 0 0 4px black;\
-}\
-\
-.ace-ambiance .ace_marker-layer .ace_step {\
- background: rgb(198, 219, 174);\
-}\
-\
-.ace-ambiance .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(255, 255, 255, 0.25);\
-}\
-\
-.ace-ambiance .ace_marker-layer .ace_active_line {\
- background: rgba(255, 255, 255, 0.031);\
-}\
-\
-\
-\
-.ace-ambiance .ace_invisible {\
- color: #333;\
-}\
-\
-.ace-ambiance .ace_paren {\
- color: #24C2C7;\
-}\
-\
-.ace-ambiance .ace_keyword {\
- color: #cda869;\
-}\
-\
-.ace-ambiance .ace_keyword.ace_operator {\
- color: #fa8d6a;\
-}\
-\
-.ace-ambiance .ace_punctuation.ace_operator {\
- color: #fa8d6a;\
-}\
-\
-.ace-ambiance .ace_identifier {\
-}\
-\
-.ace-ambiance .ace-statement {\
- color: #cda869;\
-}\
-\
-.ace-ambiance .ace_constant {\
- color: #CF7EA9;\
-}\
-\
-.ace-ambiance .ace_constant.ace_language {\
- color: #CF7EA9;\
-}\
-\
-.ace-ambiance .ace_constant.ace_library {\
- \
-}\
-\
-.ace-ambiance .ace_constant.ace_numeric {\
- color: #78CF8A;\
-}\
-\
-.ace-ambiance .ace_invalid {\
- text-decoration: underline;\
-}\
-\
-.ace-ambiance .ace_invalid.ace_illegal {\
- color:#F8F8F8;\
- background-color: rgba(86, 45, 86, 0.75);\
-}\
-\
-.ace-ambiance .ace_invalid,\
-.ace-ambiance .ace_deprecated {\
- text-decoration: underline;\
- font-style: italic;\
- color: #D2A8A1;\
-}\
-\
-.ace-ambiance .ace_support {\
- color: #9B859D;\
-}\
-\
-.ace-ambiance .ace_support.ace_function {\
- color: #DAD085;\
-}\
-\
-.ace-ambiance .ace_function.ace_buildin {\
- color: #9b859d;\
-}\
-\
-.ace-ambiance .ace_string {\
- color: #8f9d6a;\
-}\
-\
-.ace-ambiance .ace_string.ace_regexp {\
- color: #DAD085;\
-}\
-\
-.ace-ambiance .ace_comment {\
- font-style: italic;\
- color: #555;\
-}\
-\
-.ace-ambiance .ace_comment.ace_doc {\
-}\
-\
-.ace-ambiance .ace_comment.ace_doc.ace_tag {\
- color: #666;\
- font-style: normal;\
-}\
-\
-.ace-ambiance .ace_definition,\
-.ace-ambiance .ace_type {\
- color: #aac6e3;\
-}\
-\
-.ace-ambiance .ace_variable {\
- color: #9999cc;\
-}\
-\
-.ace-ambiance .ace_variable.ace_language {\
- color: #9b859d;\
-}\
-\
-.ace-ambiance .ace_xml_pe {\
- color: #494949;\
-}\
-\
-.ace-ambiance .ace_gutter-layer,\
-.ace-ambiance .ace_text-layer {\
- background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\
-}\
-\
-.ace-ambiance .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-chrome.js b/vendor/assets/javascripts/ace-src-noconflict/theme-chrome.js
deleted file mode 100644
index dbbe865f78e..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-chrome.js
+++ /dev/null
@@ -1,205 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/chrome', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-chrome";
-exports.cssText = ".ace-chrome .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-chrome .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-chrome .ace_gutter {\
- background: #ebebeb;\
- color: #333;\
- overflow : hidden;\
-}\
-\
-.ace-chrome .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8;\
-}\
-\
-.ace-chrome .ace_scroller {\
- background-color: #FFFFFF;\
-}\
-\
-.ace-chrome .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-chrome .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid black;\
-}\
-\
-.ace-chrome .ace_line .ace_invisible {\
- color: rgb(191, 191, 191);\
-}\
-\
-.ace-chrome .ace_line .ace_constant.ace_buildin {\
- color: rgb(88, 72, 246);\
-}\
-\
-.ace-chrome .ace_line .ace_constant.ace_language {\
- color: rgb(88, 92, 246);\
-}\
-\
-.ace-chrome .ace_line .ace_constant.ace_library {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-chrome .ace_line .ace_invalid {\
- background-color: rgb(153, 0, 0);\
- color: white;\
-}\
-\
-.ace-chrome .ace_line .ace_fold {\
-}\
-\
-.ace-chrome .ace_line .ace_support.ace_function {\
- color: rgb(60, 76, 114);\
-}\
-\
-.ace-chrome .ace_line .ace_support.ace_constant {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-chrome .ace_line .ace_support.ace_type,\
-.ace-chrome .ace_line .ace_support.ace_class\
-.ace-chrome .ace_line .ace_support.ace_other, {\
- color: rgb(109, 121, 222);\
-}\
-\
-.ace-chrome .ace_variable.ace_parameter {\
- font-style:italic;\
- color:#FD971F;\
-}\
-.ace-chrome .ace_line .ace_keyword.ace_operator {\
- color: rgb(104, 118, 135);\
-}\
-\
-.ace-chrome .ace_line .ace_comment {\
- color: #236e24;\
-}\
-\
-.ace-chrome .ace_line .ace_comment.ace_doc {\
- color: #236e24;\
-}\
-\
-.ace-chrome .ace_line .ace_comment.ace_doc.ace_tag {\
- color: #236e24;\
-}\
-\
-.ace-chrome .ace_line .ace_constant.ace_numeric {\
- color: rgb(0, 0, 205);\
-}\
-\
-.ace-chrome .ace_line .ace_variable {\
- color: rgb(49, 132, 149);\
-}\
-\
-.ace-chrome .ace_line .ace_xml_pe {\
- color: rgb(104, 104, 91);\
-}\
-\
-.ace-chrome .ace_entity.ace_name.ace_function {\
- color: #0000A2;\
-}\
-\
-\
-.ace-chrome .ace_markup.ace_heading {\
- color: rgb(12, 7, 255);\
-}\
-\
-.ace-chrome .ace_markup.ace_list {\
- color:rgb(185, 6, 144);\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_step {\
- background: rgb(252, 255, 0);\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_stack {\
- background: rgb(164, 229, 101);\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_active_line {\
- background: rgba(0, 0, 0, 0.07);\
-}\
-\
-.ace-chrome .ace_gutter_active_line {\
- background-color : #dcdcdc;\
-}\
-\
-.ace-chrome .ace_marker-layer .ace_selected_word {\
- background: rgb(250, 250, 255);\
- border: 1px solid rgb(200, 200, 250);\
-}\
-\
-.ace-chrome .ace_storage,\
-.ace-chrome .ace_line .ace_keyword,\
-.ace-chrome .ace_meta.ace_tag {\
- color: rgb(147, 15, 128);\
-}\
-\
-.ace-chrome .ace_string.ace_regex {\
- color: rgb(255, 0, 0)\
-}\
-\
-.ace-chrome .ace_line .ace_string {\
- color: #1A1AA6;\
-}\
-\
-.ace-chrome .ace_entity.ace_other.ace_attribute-name {\
- color: #994409;\
-}\
-\
-.ace-chrome .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}\
-";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-clouds.js b/vendor/assets/javascripts/ace-src-noconflict/theme-clouds.js
deleted file mode 100644
index b6d474907da..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-clouds.js
+++ /dev/null
@@ -1,170 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/clouds', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-clouds";
-exports.cssText = ".ace-clouds .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-clouds .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-clouds .ace_gutter {\
- background: #ebebeb;\
- color: #333\
-}\
-\
-.ace-clouds .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8\
-}\
-\
-.ace-clouds .ace_scroller {\
- background-color: #FFFFFF\
-}\
-\
-.ace-clouds .ace_text-layer {\
- color: #000000\
-}\
-\
-.ace-clouds .ace_cursor {\
- border-left: 2px solid #000000\
-}\
-\
-.ace-clouds .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #000000\
-}\
-\
-.ace-clouds .ace_marker-layer .ace_selection {\
- background: #BDD5FC\
-}\
-\
-.ace-clouds.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #FFFFFF;\
- border-radius: 2px\
-}\
-\
-.ace-clouds .ace_marker-layer .ace_step {\
- background: rgb(255, 255, 0)\
-}\
-\
-.ace-clouds .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #BFBFBF\
-}\
-\
-.ace-clouds .ace_marker-layer .ace_active_line {\
- background: #FFFBD1\
-}\
-\
-.ace-clouds .ace_gutter_active_line {\
- background-color : #dcdcdc\
-}\
-\
-.ace-clouds .ace_marker-layer .ace_selected_word {\
- border: 1px solid #BDD5FC\
-}\
-\
-.ace-clouds .ace_invisible {\
- color: #BFBFBF\
-}\
-\
-.ace-clouds .ace_keyword,\
-.ace-clouds .ace_meta,\
-.ace-clouds .ace_support.ace_constant.ace_property-value {\
- color: #AF956F\
-}\
-\
-.ace-clouds .ace_keyword.ace_operator {\
- color: #484848\
-}\
-\
-.ace-clouds .ace_keyword.ace_other.ace_unit {\
- color: #96DC5F\
-}\
-\
-.ace-clouds .ace_constant.ace_language {\
- color: #39946A\
-}\
-\
-.ace-clouds .ace_constant.ace_numeric {\
- color: #46A609\
-}\
-\
-.ace-clouds .ace_constant.ace_character.ace_entity {\
- color: #BF78CC\
-}\
-\
-.ace-clouds .ace_invalid {\
- background-color: #FF002A\
-}\
-\
-.ace-clouds .ace_fold {\
- background-color: #AF956F;\
- border-color: #000000\
-}\
-\
-.ace-clouds .ace_storage,\
-.ace-clouds .ace_support.ace_class,\
-.ace-clouds .ace_support.ace_function,\
-.ace-clouds .ace_support.ace_other,\
-.ace-clouds .ace_support.ace_type {\
- color: #C52727\
-}\
-\
-.ace-clouds .ace_string {\
- color: #5D90CD\
-}\
-\
-.ace-clouds .ace_comment {\
- color: #BCC8BA\
-}\
-\
-.ace-clouds .ace_entity.ace_name.ace_tag,\
-.ace-clouds .ace_entity.ace_other.ace_attribute-name {\
- color: #606060\
-}\
-\
-.ace-clouds .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-clouds .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-clouds_midnight.js b/vendor/assets/javascripts/ace-src-noconflict/theme-clouds_midnight.js
deleted file mode 100644
index 57501d91d02..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-clouds_midnight.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/clouds_midnight', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-clouds-midnight";
-exports.cssText = ".ace-clouds-midnight .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-clouds-midnight .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-clouds-midnight .ace_gutter {\
- background: #232323;\
- color: #929292\
-}\
-\
-.ace-clouds-midnight .ace_print_margin {\
- width: 1px;\
- background: #232323\
-}\
-\
-.ace-clouds-midnight .ace_scroller {\
- background-color: #191919\
-}\
-\
-.ace-clouds-midnight .ace_text-layer {\
- color: #929292\
-}\
-\
-.ace-clouds-midnight .ace_cursor {\
- border-left: 2px solid #7DA5DC\
-}\
-\
-.ace-clouds-midnight .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #7DA5DC\
-}\
-\
-.ace-clouds-midnight .ace_marker-layer .ace_selection {\
- background: #000000\
-}\
-\
-.ace-clouds-midnight.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #191919;\
- border-radius: 2px\
-}\
-\
-.ace-clouds-midnight .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-clouds-midnight .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #BFBFBF\
-}\
-\
-.ace-clouds-midnight .ace_marker-layer .ace_active_line {\
- background: rgba(215, 215, 215, 0.031)\
-}\
-\
-.ace-clouds-midnight .ace_gutter_active_line {\
- background-color: rgba(215, 215, 215, 0.031)\
-}\
-\
-.ace-clouds-midnight .ace_marker-layer .ace_selected_word {\
- border: 1px solid #000000\
-}\
-\
-.ace-clouds-midnight .ace_invisible {\
- color: #BFBFBF\
-}\
-\
-.ace-clouds-midnight .ace_keyword,\
-.ace-clouds-midnight .ace_meta,\
-.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\
- color: #927C5D\
-}\
-\
-.ace-clouds-midnight .ace_keyword.ace_operator {\
- color: #4B4B4B\
-}\
-\
-.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\
- color: #366F1A\
-}\
-\
-.ace-clouds-midnight .ace_constant.ace_language {\
- color: #39946A\
-}\
-\
-.ace-clouds-midnight .ace_constant.ace_numeric {\
- color: #46A609\
-}\
-\
-.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\
- color: #A165AC\
-}\
-\
-.ace-clouds-midnight .ace_invalid {\
- color: #FFFFFF;\
- background-color: #E92E2E\
-}\
-\
-.ace-clouds-midnight .ace_fold {\
- background-color: #927C5D;\
- border-color: #929292\
-}\
-\
-.ace-clouds-midnight .ace_storage,\
-.ace-clouds-midnight .ace_support.ace_class,\
-.ace-clouds-midnight .ace_support.ace_function,\
-.ace-clouds-midnight .ace_support.ace_other,\
-.ace-clouds-midnight .ace_support.ace_type {\
- color: #E92E2E\
-}\
-\
-.ace-clouds-midnight .ace_string {\
- color: #5D90CD\
-}\
-\
-.ace-clouds-midnight .ace_comment {\
- color: #3C403B\
-}\
-\
-.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\
-.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\
- color: #606060\
-}\
-\
-.ace-clouds-midnight .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-clouds-midnight .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlJT8z1BeXv4fAA2KA6+h9Z+2AAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-cobalt.js b/vendor/assets/javascripts/ace-src-noconflict/theme-cobalt.js
deleted file mode 100644
index d0c8d24ece3..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-cobalt.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/cobalt', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-cobalt";
-exports.cssText = ".ace-cobalt .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-cobalt .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-cobalt .ace_gutter {\
- background: #011e3a;\
- color: #fff\
-}\
-\
-.ace-cobalt .ace_print_margin {\
- width: 1px;\
- background: #011e3a\
-}\
-\
-.ace-cobalt .ace_scroller {\
- background-color: #002240\
-}\
-\
-.ace-cobalt .ace_text-layer {\
- color: #FFFFFF\
-}\
-\
-.ace-cobalt .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-cobalt .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-cobalt .ace_marker-layer .ace_selection {\
- background: rgba(179, 101, 57, 0.75)\
-}\
-\
-.ace-cobalt.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #002240;\
- border-radius: 2px\
-}\
-\
-.ace-cobalt .ace_marker-layer .ace_step {\
- background: rgb(127, 111, 19)\
-}\
-\
-.ace-cobalt .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(255, 255, 255, 0.15)\
-}\
-\
-.ace-cobalt .ace_marker-layer .ace_active_line {\
- background: rgba(0, 0, 0, 0.35)\
-}\
-\
-.ace-cobalt .ace_gutter_active_line {\
- background-color: rgba(0, 0, 0, 0.35)\
-}\
-\
-.ace-cobalt .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(179, 101, 57, 0.75)\
-}\
-\
-.ace-cobalt .ace_invisible {\
- color: rgba(255, 255, 255, 0.15)\
-}\
-\
-.ace-cobalt .ace_keyword,\
-.ace-cobalt .ace_meta {\
- color: #FF9D00\
-}\
-\
-.ace-cobalt .ace_constant,\
-.ace-cobalt .ace_constant.ace_character,\
-.ace-cobalt .ace_constant.ace_character.ace_escape,\
-.ace-cobalt .ace_constant.ace_other {\
- color: #FF628C\
-}\
-\
-.ace-cobalt .ace_invalid {\
- color: #F8F8F8;\
- background-color: #800F00\
-}\
-\
-.ace-cobalt .ace_support {\
- color: #80FFBB\
-}\
-\
-.ace-cobalt .ace_support.ace_constant {\
- color: #EB939A\
-}\
-\
-.ace-cobalt .ace_fold {\
- background-color: #FF9D00;\
- border-color: #FFFFFF\
-}\
-\
-.ace-cobalt .ace_support.ace_function {\
- color: #FFB054\
-}\
-\
-.ace-cobalt .ace_storage {\
- color: #FFEE80\
-}\
-\
-.ace-cobalt .ace_string.ace_regexp {\
- color: #80FFC2\
-}\
-\
-.ace-cobalt .ace_comment {\
- font-style: italic;\
- color: #0088FF\
-}\
-\
-.ace-cobalt .ace_variable {\
- color: #CCCCCC\
-}\
-\
-.ace-cobalt .ace_variable.ace_language {\
- color: #FF80E1\
-}\
-\
-.ace-cobalt .ace_meta.ace_tag {\
- color: #9EFFFF\
-}\
-\
-.ace-cobalt .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-cobalt .ace_markup.ace_heading {\
- color: #C8E4FD;\
- background-color: #001221\
-}\
-\
-.ace-cobalt .ace_markup.ace_list {\
- background-color: #130D26\
-}\
-\
-.ace-cobalt .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUHL4zzBz5sz/AA80BCzv+WXhAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-crimson_editor.js b/vendor/assets/javascripts/ace-src-noconflict/theme-crimson_editor.js
deleted file mode 100644
index 38230ae8cce..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-crimson_editor.js
+++ /dev/null
@@ -1,197 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/crimson_editor', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-exports.isDark = false;
-exports.cssText = ".ace-crimson-editor .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-crimson-editor .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-crimson-editor .ace_gutter {\
- background: #ebebeb;\
- color: #333;\
- overflow : hidden;\
-}\
-\
-.ace-crimson-editor .ace_gutter-layer {\
- width: 100%;\
- text-align: right;\
-}\
-\
-.ace-crimson-editor .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8;\
-}\
-\
-.ace-crimson-editor .ace_scroller {\
- background-color: #FFFFFF;\
-}\
-\
-.ace-crimson-editor .ace_text-layer {\
- color: rgb(64, 64, 64);\
-}\
-\
-.ace-crimson-editor .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-crimson-editor .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid black;\
-}\
-\
-.ace-crimson-editor .ace_line .ace_invisible {\
- color: rgb(191, 191, 191);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_identifier {\
- color: black;\
-}\
-\
-.ace-crimson-editor .ace_line .ace_keyword {\
- color: blue;\
-}\
-\
-.ace-crimson-editor .ace_line .ace_constant.ace_buildin {\
- color: rgb(88, 72, 246);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_constant.ace_language {\
- color: rgb(255, 156, 0);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_constant.ace_library {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_invalid {\
- text-decoration: line-through;\
- color: rgb(224, 0, 0);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_fold {\
-}\
-\
-.ace-crimson-editor .ace_line .ace_support.ace_function {\
- color: rgb(192, 0, 0);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_support.ace_constant {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_support.ace_type,\
-.ace-crimson-editor .ace_line .ace_support.ace_class {\
- color: rgb(109, 121, 222);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_keyword.ace_operator {\
- color: rgb(49, 132, 149);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_string {\
- color: rgb(128, 0, 128);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_comment {\
- color: rgb(76, 136, 107);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_comment.ace_doc {\
- color: rgb(0, 102, 255);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_comment.ace_doc.ace_tag {\
- color: rgb(128, 159, 191);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_constant.ace_numeric {\
- color: rgb(0, 0, 64);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_variable {\
- color: rgb(0, 64, 128);\
-}\
-\
-.ace-crimson-editor .ace_line .ace_xml_pe {\
- color: rgb(104, 104, 91);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_step {\
- background: rgb(252, 255, 0);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_stack {\
- background: rgb(164, 229, 101);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_active_line {\
- background: rgb(232, 242, 254);\
-}\
-\
-.ace-crimson-editor .ace_gutter_active_line {\
- background-color : #dcdcdc;\
-}\
-\
-.ace-crimson-editor .ace_meta.ace_tag {\
- color:rgb(28, 2, 255);\
-}\
-\
-.ace-crimson-editor .ace_marker-layer .ace_selected_word {\
- background: rgb(250, 250, 255);\
- border: 1px solid rgb(200, 200, 250);\
-}\
-\
-.ace-crimson-editor .ace_string.ace_regex {\
- color: rgb(192, 0, 192);\
-}\
-\
-.ace-crimson-editor .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}";
-
-exports.cssClass = "ace-crimson-editor";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-dawn.js b/vendor/assets/javascripts/ace-src-noconflict/theme-dawn.js
deleted file mode 100644
index 8ac1239a584..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-dawn.js
+++ /dev/null
@@ -1,183 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/dawn', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-dawn";
-exports.cssText = ".ace-dawn .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-dawn .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-dawn .ace_gutter {\
- background: #ebebeb;\
- color: #333\
-}\
-\
-.ace-dawn .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8\
-}\
-\
-.ace-dawn .ace_scroller {\
- background-color: #F9F9F9\
-}\
-\
-.ace-dawn .ace_text-layer {\
- color: #080808\
-}\
-\
-.ace-dawn .ace_cursor {\
- border-left: 2px solid #000000\
-}\
-\
-.ace-dawn .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #000000\
-}\
-\
-.ace-dawn .ace_marker-layer .ace_selection {\
- background: rgba(39, 95, 255, 0.30)\
-}\
-\
-.ace-dawn.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #F9F9F9;\
- border-radius: 2px\
-}\
-\
-.ace-dawn .ace_marker-layer .ace_step {\
- background: rgb(255, 255, 0)\
-}\
-\
-.ace-dawn .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(75, 75, 126, 0.50)\
-}\
-\
-.ace-dawn .ace_marker-layer .ace_active_line {\
- background: rgba(36, 99, 180, 0.12)\
-}\
-\
-.ace-dawn .ace_gutter_active_line {\
- background-color : #dcdcdc\
-}\
-\
-.ace-dawn .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(39, 95, 255, 0.30)\
-}\
-\
-.ace-dawn .ace_invisible {\
- color: rgba(75, 75, 126, 0.50)\
-}\
-\
-.ace-dawn .ace_keyword,\
-.ace-dawn .ace_meta {\
- color: #794938\
-}\
-\
-.ace-dawn .ace_constant,\
-.ace-dawn .ace_constant.ace_character,\
-.ace-dawn .ace_constant.ace_character.ace_escape,\
-.ace-dawn .ace_constant.ace_other {\
- color: #811F24\
-}\
-\
-.ace-dawn .ace_invalid.ace_illegal {\
- text-decoration: underline;\
- font-style: italic;\
- color: #F8F8F8;\
- background-color: #B52A1D\
-}\
-\
-.ace-dawn .ace_invalid.ace_deprecated {\
- text-decoration: underline;\
- font-style: italic;\
- color: #B52A1D\
-}\
-\
-.ace-dawn .ace_support {\
- color: #691C97\
-}\
-\
-.ace-dawn .ace_support.ace_constant {\
- color: #B4371F\
-}\
-\
-.ace-dawn .ace_fold {\
- background-color: #794938;\
- border-color: #080808\
-}\
-\
-.ace-dawn .ace_markup.ace_list,\
-.ace-dawn .ace_support.ace_function {\
- color: #693A17\
-}\
-\
-.ace-dawn .ace_storage {\
- font-style: italic;\
- color: #A71D5D\
-}\
-\
-.ace-dawn .ace_string {\
- color: #0B6125\
-}\
-\
-.ace-dawn .ace_string.ace_regexp {\
- color: #CF5628\
-}\
-\
-.ace-dawn .ace_comment {\
- font-style: italic;\
- color: #5A525F\
-}\
-\
-.ace-dawn .ace_variable {\
- color: #234A97\
-}\
-\
-.ace-dawn .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-dawn .ace_markup.ace_heading {\
- color: #19356D\
-}\
-\
-.ace-dawn .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-dreamweaver.js b/vendor/assets/javascripts/ace-src-noconflict/theme-dreamweaver.js
deleted file mode 100644
index 315df6b30af..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-dreamweaver.js
+++ /dev/null
@@ -1,224 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/dreamweaver', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-exports.isDark = false;
-exports.cssClass = "ace-dreamweaver";
-exports.cssText = ".ace-dreamweaver .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-dreamweaver .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-dreamweaver .ace_gutter {\
- background: #e8e8e8;\
- color: #333;\
-}\
-\
-.ace-dreamweaver .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8;\
-}\
-\
-.ace-dreamweaver .ace_scroller {\
- background-color: #FFFFFF;\
-}\
-\
-.ace-dreamweaver .ace_fold {\
- background-color: #757AD8;\
-}\
-\
-.ace-dreamweaver .ace_text-layer {\
-}\
-\
-.ace-dreamweaver .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-dreamweaver .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid black;\
-}\
- \
-.ace-dreamweaver .ace_line .ace_invisible {\
- color: rgb(191, 191, 191);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_storage,\
-.ace-dreamweaver .ace_line .ace_keyword {\
- color: blue;\
-}\
-\
-.ace-dreamweaver .ace_line .ace_constant.ace_buildin {\
- color: rgb(88, 72, 246);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_constant.ace_language {\
- color: rgb(88, 92, 246);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_constant.ace_library {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_invalid {\
- background-color: rgb(153, 0, 0);\
- color: white;\
-}\
-\
-.ace-dreamweaver .ace_line .ace_support.ace_function {\
- color: rgb(60, 76, 114);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_support.ace_constant {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_support.ace_type,\
-.ace-dreamweaver .ace_line .ace_support.ace_class {\
- color: #009;\
-}\
-\
-.ace-dreamweaver .ace_line .ace_support.ace_php_tag {\
- color: #f00;\
-}\
-\
-.ace-dreamweaver .ace_line .ace_keyword.ace_operator {\
- color: rgb(104, 118, 135);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_string {\
- color: #00F;\
-}\
-\
-.ace-dreamweaver .ace_line .ace_comment {\
- color: rgb(76, 136, 107);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_comment.ace_doc {\
- color: rgb(0, 102, 255);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_comment.ace_doc.ace_tag {\
- color: rgb(128, 159, 191);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_constant.ace_numeric {\
- color: rgb(0, 0, 205);\
-}\
-\
-.ace-dreamweaver .ace_line .ace_variable {\
- color: #06F\
-}\
-\
-.ace-dreamweaver .ace_line .ace_xml_pe {\
- color: rgb(104, 104, 91);\
-}\
-\
-.ace-dreamweaver .ace_entity.ace_name.ace_function {\
- color: #00F;\
-}\
-\
-\
-.ace-dreamweaver .ace_markup.ace_heading {\
- color: rgb(12, 7, 255);\
-}\
-\
-.ace-dreamweaver .ace_markup.ace_list {\
- color:rgb(185, 6, 144);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_step {\
- background: rgb(252, 255, 0);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_stack {\
- background: rgb(164, 229, 101);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_active_line {\
- background: rgba(0, 0, 0, 0.07);\
-}\
-\
-.ace-dreamweaver .ace_marker-layer .ace_selected_word {\
- background: rgb(250, 250, 255);\
- border: 1px solid rgb(200, 200, 250);\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag {\
- color:#009;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\
- color:#060;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_form {\
- color:#F90;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_image {\
- color:#909;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_script {\
- color:#900;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_style {\
- color:#909;\
-}\
-\
-.ace-dreamweaver .ace_meta.ace_tag.ace_table {\
- color:#099;\
-}\
-\
-.ace-dreamweaver .ace_string.ace_regex {\
- color: rgb(255, 0, 0)\
-}\
-\
-.ace-dreamweaver .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-eclipse.js b/vendor/assets/javascripts/ace-src-noconflict/theme-eclipse.js
deleted file mode 100644
index a26af55ee84..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-eclipse.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/eclipse', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-
-exports.isDark = false;
-exports.cssText = ".ace-eclipse .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-eclipse .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-eclipse .ace_gutter {\
- background: #ebebeb;\
- border-right: 1px solid rgb(159, 159, 159);\
- color: rgb(136, 136, 136);\
-}\
-\
-.ace-eclipse .ace_print_margin {\
- width: 1px;\
- background: #ebebeb;\
-}\
-\
-.ace-eclipse .ace_scroller {\
- background-color: #FFFFFF;\
-}\
-\
-.ace-eclipse .ace_fold {\
- background-color: rgb(60, 76, 114);\
-}\
-\
-.ace-eclipse .ace_text-layer {\
-}\
-\
-.ace-eclipse .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-eclipse .ace_line .ace_storage,\
-.ace-eclipse .ace_line .ace_keyword,\
-.ace-eclipse .ace_line .ace_variable {\
- color: rgb(127, 0, 85);\
-}\
-\
-.ace-eclipse .ace_line .ace_constant.ace_buildin {\
- color: rgb(88, 72, 246);\
-}\
-\
-.ace-eclipse .ace_line .ace_constant.ace_library {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-eclipse .ace_line .ace_function {\
- color: rgb(60, 76, 114);\
-}\
-\
-.ace-eclipse .ace_line .ace_string {\
- color: rgb(42, 0, 255);\
-}\
-\
-.ace-eclipse .ace_line .ace_comment {\
- color: rgb(63, 127, 95);\
-}\
-\
-.ace-eclipse .ace_line .ace_comment.ace_doc {\
- color: rgb(63, 95, 191);\
-}\
-\
-.ace-eclipse .ace_line .ace_comment.ace_doc.ace_tag {\
- color: rgb(127, 159, 191);\
-}\
-\
-.ace-eclipse .ace_line .ace_constant.ace_numeric {\
-}\
-\
-.ace-eclipse .ace_line .ace_tag {\
- color: rgb(63, 127, 127);\
-}\
-\
-.ace-eclipse .ace_line .ace_type {\
- color: rgb(127, 0, 127);\
-}\
-\
-.ace-eclipse .ace_line .ace_xml_pe {\
- color: rgb(104, 104, 91);\
-}\
-\
-.ace-eclipse .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-\
-.ace-eclipse .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-eclipse .ace_line .ace_meta.ace_tag {\
- color:rgb(63, 127, 127);\
-}\
-\
-.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\
- color:rgb(127, 0, 127);\
-}\
-.ace-eclipse .ace_marker-layer .ace_step {\
- background: rgb(255, 255, 0);\
-}\
-\
-.ace-eclipse .ace_marker-layer .ace_active_line {\
- background: rgb(232, 242, 254);\
-}\
-\
-.ace-eclipse .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgb(181, 213, 255);\
-}\
-\
-.ace-eclipse .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}";
-
-exports.cssClass = "ace-eclipse";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-github.js b/vendor/assets/javascripts/ace-src-noconflict/theme-github.js
deleted file mode 100644
index 7aacdf1a696..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-github.js
+++ /dev/null
@@ -1,175 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/github', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-github";
-exports.cssText = "/* CSS style content from github's default pygments highlighter template.\
- Cursor and selection styles from textmate.css. */\
-.ace-github .ace_editor {\
- color: #333;\
- background-color: #F8F8F8;\
- border: 1px solid #CCC;\
- font: 13px 'Bitstream Vera Sans Mono', Courier, monospace !important;\
- line-height: 19px !important;\
- overflow: auto;\
- padding: 6px 10px;\
- border-radius: 3px;\
- position: relative;\
- margin-bottom: 15px;\
-}\
-\
-.ace-github .ace_gutter {\
- background: #e8e8e8;\
- color: #AAA;\
-}\
-\
-.ace-github .ace_scroller {\
- background: #fff;\
-}\
-\
-.ace-github .ace_keyword {\
- font-weight: bold;\
-}\
-\
-.ace-github .ace_string {\
- color: #D14;\
-}\
-\
-.ace-github .ace_variable.ace_class {\
- color: teal;\
-}\
-\
-.ace-github .ace_constant.ace_numeric {\
- color: #099;\
-}\
-\
-.ace-github .ace_constant.ace_buildin {\
- color: #0086B3;\
-}\
-\
-.ace-github .ace_support.ace_function {\
- color: #0086B3;\
-}\
-\
-.ace-github .ace_comment {\
- color: #998;\
- font-style: italic;\
-}\
-\
-.ace-github .ace_variable.ace_language {\
- color: #0086B3;\
-}\
-\
-.ace-github .ace_paren {\
- font-weight: bold;\
-}\
-\
-.ace-github .ace_boolean {\
- font-weight: bold;\
-}\
-\
-.ace-github .ace_string.ace_regexp {\
- color: #009926;\
- font-weight: normal;\
-}\
-\
-.ace-github .ace_variable.ace_instancce {\
- color: teal;\
-}\
-\
-.ace-github .ace_constant.ace_language {\
- font-weight: bold;\
-}\
-\
-.ace-github .ace_text-layer {\
-}\
-\
-.ace-github .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-github .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid black;\
-}\
-\
-.ace-github .ace_marker-layer .ace_active_line {\
- background: rgb(255, 255, 204);\
-}\
-.ace-github .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-.ace-github.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px white;\
- border-radius: 2px;\
-}\
-/* bold keywords cause cursor issues for some fonts */\
-/* this disables bold style for editor and keeps for static highlighter */\
-.ace-github.ace_editor .ace_line > span {\
- font-weight: normal !important;\
-}\
-\
-.ace-github .ace_marker-layer .ace_step {\
- background: rgb(252, 255, 0);\
-}\
-\
-.ace-github .ace_marker-layer .ace_stack {\
- background: rgb(164, 229, 101);\
-}\
-\
-.ace-github .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-github .ace_gutter_active_line {\
- background-color : rgba(0, 0, 0, 0.07);\
-}\
-\
-.ace-github .ace_marker-layer .ace_selected_word {\
- background: rgb(250, 250, 255);\
- border: 1px solid rgb(200, 200, 250);\
-\
-}\
-\
-.ace-github .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8;\
-}\
-\
-.ace-github .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}";
-
- var dom = require("../lib/dom");
- dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-idle_fingers.js b/vendor/assets/javascripts/ace-src-noconflict/theme-idle_fingers.js
deleted file mode 100644
index 79c12990187..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-idle_fingers.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/idle_fingers', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-idle-fingers";
-exports.cssText = ".ace-idle-fingers .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-idle-fingers .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-idle-fingers .ace_gutter {\
- background: #3b3b3b;\
- color: #fff\
-}\
-\
-.ace-idle-fingers .ace_print_margin {\
- width: 1px;\
- background: #3b3b3b\
-}\
-\
-.ace-idle-fingers .ace_scroller {\
- background-color: #323232\
-}\
-\
-.ace-idle-fingers .ace_text-layer {\
- color: #FFFFFF\
-}\
-\
-.ace-idle-fingers .ace_cursor {\
- border-left: 2px solid #91FF00\
-}\
-\
-.ace-idle-fingers .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #91FF00\
-}\
-\
-.ace-idle-fingers .ace_marker-layer .ace_selection {\
- background: rgba(90, 100, 126, 0.88)\
-}\
-\
-.ace-idle-fingers.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #323232;\
- border-radius: 2px\
-}\
-\
-.ace-idle-fingers .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-idle-fingers .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #404040\
-}\
-\
-.ace-idle-fingers .ace_marker-layer .ace_active_line {\
- background: #353637\
-}\
-\
-.ace-idle-fingers .ace_gutter_active_line {\
- background-color: #353637\
-}\
-\
-.ace-idle-fingers .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(90, 100, 126, 0.88)\
-}\
-\
-.ace-idle-fingers .ace_invisible {\
- color: #404040\
-}\
-\
-.ace-idle-fingers .ace_keyword,\
-.ace-idle-fingers .ace_meta {\
- color: #CC7833\
-}\
-\
-.ace-idle-fingers .ace_constant,\
-.ace-idle-fingers .ace_constant.ace_character,\
-.ace-idle-fingers .ace_constant.ace_character.ace_escape,\
-.ace-idle-fingers .ace_constant.ace_other,\
-.ace-idle-fingers .ace_support.ace_constant {\
- color: #6C99BB\
-}\
-\
-.ace-idle-fingers .ace_invalid {\
- color: #FFFFFF;\
- background-color: #FF0000\
-}\
-\
-.ace-idle-fingers .ace_fold {\
- background-color: #CC7833;\
- border-color: #FFFFFF\
-}\
-\
-.ace-idle-fingers .ace_support.ace_function {\
- color: #B83426\
-}\
-\
-.ace-idle-fingers .ace_variable.ace_parameter {\
- font-style: italic\
-}\
-\
-.ace-idle-fingers .ace_string {\
- color: #A5C261\
-}\
-\
-.ace-idle-fingers .ace_string.ace_regexp {\
- color: #CCCC33\
-}\
-\
-.ace-idle-fingers .ace_comment {\
- font-style: italic;\
- color: #BC9458\
-}\
-\
-.ace-idle-fingers .ace_meta.ace_tag {\
- color: #FFE5BB\
-}\
-\
-.ace-idle-fingers .ace_entity.ace_name {\
- color: #FFC66D\
-}\
-\
-.ace-idle-fingers .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-idle-fingers .ace_collab.ace_user1 {\
- color: #323232;\
- background-color: #FFF980\
-}\
-\
-.ace-idle-fingers .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjL6zzBz5sz/ABEUBGCqhK6UAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-kr_theme.js b/vendor/assets/javascripts/ace-src-noconflict/theme-kr_theme.js
deleted file mode 100644
index 12f5d5b38e1..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-kr_theme.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/kr_theme', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-kr-theme";
-exports.cssText = ".ace-kr-theme .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-kr-theme .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-kr-theme .ace_gutter {\
- background: #1c1917;\
- color: #FCFFE0\
-}\
-\
-.ace-kr-theme .ace_print_margin {\
- width: 1px;\
- background: #1c1917\
-}\
-\
-.ace-kr-theme .ace_scroller {\
- background-color: #0B0A09\
-}\
-\
-.ace-kr-theme .ace_text-layer {\
- color: #FCFFE0\
-}\
-\
-.ace-kr-theme .ace_cursor {\
- border-left: 2px solid #FF9900\
-}\
-\
-.ace-kr-theme .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FF9900\
-}\
-\
-.ace-kr-theme .ace_marker-layer .ace_selection {\
- background: rgba(170, 0, 255, 0.45)\
-}\
-\
-.ace-kr-theme.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #0B0A09;\
- border-radius: 2px\
-}\
-\
-.ace-kr-theme .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-kr-theme .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(255, 177, 111, 0.32)\
-}\
-\
-.ace-kr-theme .ace_marker-layer .ace_active_line {\
- background: #38403D\
-}\
-\
-.ace-kr-theme .ace_gutter_active_line {\
- background-color : #38403D\
-}\
-\
-.ace-kr-theme .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(170, 0, 255, 0.45)\
-}\
-\
-.ace-kr-theme .ace_invisible {\
- color: rgba(255, 177, 111, 0.32)\
-}\
-\
-.ace-kr-theme .ace_keyword,\
-.ace-kr-theme .ace_meta {\
- color: #949C8B\
-}\
-\
-.ace-kr-theme .ace_constant,\
-.ace-kr-theme .ace_constant.ace_character,\
-.ace-kr-theme .ace_constant.ace_character.ace_escape,\
-.ace-kr-theme .ace_constant.ace_other {\
- color: rgba(210, 117, 24, 0.76)\
-}\
-\
-.ace-kr-theme .ace_invalid {\
- color: #F8F8F8;\
- background-color: #A41300\
-}\
-\
-.ace-kr-theme .ace_support {\
- color: #9FC28A\
-}\
-\
-.ace-kr-theme .ace_support.ace_constant {\
- color: #C27E66\
-}\
-\
-.ace-kr-theme .ace_fold {\
- background-color: #949C8B;\
- border-color: #FCFFE0\
-}\
-\
-.ace-kr-theme .ace_support.ace_function {\
- color: #85873A\
-}\
-\
-.ace-kr-theme .ace_storage {\
- color: #FFEE80\
-}\
-\
-.ace-kr-theme .ace_string.ace_regexp {\
- color: rgba(125, 255, 192, 0.65)\
-}\
-\
-.ace-kr-theme .ace_comment {\
- font-style: italic;\
- color: #706D5B\
-}\
-\
-.ace-kr-theme .ace_variable {\
- color: #D1A796\
-}\
-\
-.ace-kr-theme .ace_variable.ace_language {\
- color: #FF80E1\
-}\
-\
-.ace-kr-theme .ace_meta.ace_tag {\
- color: #BABD9C\
-}\
-\
-.ace-kr-theme .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-kr-theme .ace_markup.ace_list {\
- background-color: #0F0040\
-}\
-\
-.ace-kr-theme .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5uL8zzBz5sz/AA1WA+hUYIqjAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore.js b/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore.js
deleted file mode 100644
index 2e2926d5321..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore.js
+++ /dev/null
@@ -1,168 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/merbivore', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-merbivore";
-exports.cssText = ".ace-merbivore .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-merbivore .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-merbivore .ace_gutter {\
- background: #202020;\
- color: #E6E1DC\
-}\
-\
-.ace-merbivore .ace_print_margin {\
- width: 1px;\
- background: #555651\
-}\
-\
-.ace-merbivore .ace_scroller {\
- background-color: #161616\
-}\
-\
-.ace-merbivore .ace_text-layer {\
- color: #E6E1DC\
-}\
-\
-.ace-merbivore .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-merbivore .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-merbivore .ace_marker-layer .ace_selection {\
- background: #454545\
-}\
-\
-.ace-merbivore.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #161616;\
- border-radius: 2px\
-}\
-\
-.ace-merbivore .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-merbivore .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #404040\
-}\
-\
-.ace-merbivore .ace_marker-layer .ace_active_line {\
- background: #333435\
-}\
-\
-.ace-merbivore .ace_gutter_active_line {\
- background-color: #333435\
-}\
-\
-.ace-merbivore .ace_marker-layer .ace_selected_word {\
- border: 1px solid #454545\
-}\
-\
-.ace-merbivore .ace_invisible {\
- color: #404040\
-}\
-\
-.ace-merbivore .ace_entity.ace_name.ace_tag,\
-.ace-merbivore .ace_keyword,\
-.ace-merbivore .ace_meta,\
-.ace-merbivore .ace_meta.ace_tag,\
-.ace-merbivore .ace_storage,\
-.ace-merbivore .ace_support.ace_function {\
- color: #FC6F09\
-}\
-\
-.ace-merbivore .ace_constant,\
-.ace-merbivore .ace_constant.ace_character,\
-.ace-merbivore .ace_constant.ace_character.ace_escape,\
-.ace-merbivore .ace_constant.ace_other,\
-.ace-merbivore .ace_support.ace_type {\
- color: #1EDAFB\
-}\
-\
-.ace-merbivore .ace_constant.ace_character.ace_escape {\
- color: #519F50\
-}\
-\
-.ace-merbivore .ace_constant.ace_language {\
- color: #FDC251\
-}\
-\
-.ace-merbivore .ace_constant.ace_library,\
-.ace-merbivore .ace_string,\
-.ace-merbivore .ace_support.ace_constant {\
- color: #8DFF0A\
-}\
-\
-.ace-merbivore .ace_constant.ace_numeric {\
- color: #58C554\
-}\
-\
-.ace-merbivore .ace_invalid {\
- color: #FFFFFF;\
- background-color: #990000\
-}\
-\
-.ace-merbivore .ace_fold {\
- background-color: #FC6F09;\
- border-color: #E6E1DC\
-}\
-\
-.ace-merbivore .ace_comment {\
- font-style: italic;\
- color: #AD2EA4\
-}\
-\
-.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\
- color: #FFFF89\
-}\
-\
-.ace-merbivore .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-merbivore .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQExP7zzBz5sz/AA50BAyDznYhAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore_soft.js b/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore_soft.js
deleted file mode 100644
index 9e41cb7cdf3..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-merbivore_soft.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/merbivore_soft', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-merbivore-soft";
-exports.cssText = ".ace-merbivore-soft .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-merbivore-soft .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-merbivore-soft .ace_gutter {\
- background: #262424;\
- color: #E6E1DC\
-}\
-\
-.ace-merbivore-soft .ace_print_margin {\
- width: 1px;\
- background: #262424\
-}\
-\
-.ace-merbivore-soft .ace_scroller {\
- background-color: #1C1C1C\
-}\
-\
-.ace-merbivore-soft .ace_text-layer {\
- color: #E6E1DC\
-}\
-\
-.ace-merbivore-soft .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-merbivore-soft .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-merbivore-soft .ace_marker-layer .ace_selection {\
- background: #494949\
-}\
-\
-.ace-merbivore-soft.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #1C1C1C;\
- border-radius: 2px\
-}\
-\
-.ace-merbivore-soft .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-merbivore-soft .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #404040\
-}\
-\
-.ace-merbivore-soft .ace_marker-layer .ace_active_line {\
- background: #333435\
-}\
-\
-.ace-merbivore-soft .ace_gutter_active_line {\
- background-color: #333435\
-}\
-\
-.ace-merbivore-soft .ace_marker-layer .ace_selected_word {\
- border: 1px solid #494949\
-}\
-\
-.ace-merbivore-soft .ace_invisible {\
- color: #404040\
-}\
-\
-.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\
-.ace-merbivore-soft .ace_keyword,\
-.ace-merbivore-soft .ace_meta,\
-.ace-merbivore-soft .ace_meta.ace_tag,\
-.ace-merbivore-soft .ace_storage {\
- color: #FC803A\
-}\
-\
-.ace-merbivore-soft .ace_constant,\
-.ace-merbivore-soft .ace_constant.ace_character,\
-.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\
-.ace-merbivore-soft .ace_constant.ace_other,\
-.ace-merbivore-soft .ace_support.ace_type {\
- color: #68C1D8\
-}\
-\
-.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\
- color: #B3E5B4\
-}\
-\
-.ace-merbivore-soft .ace_constant.ace_language {\
- color: #E1C582\
-}\
-\
-.ace-merbivore-soft .ace_constant.ace_library,\
-.ace-merbivore-soft .ace_string,\
-.ace-merbivore-soft .ace_support.ace_constant {\
- color: #8EC65F\
-}\
-\
-.ace-merbivore-soft .ace_constant.ace_numeric {\
- color: #7FC578\
-}\
-\
-.ace-merbivore-soft .ace_invalid,\
-.ace-merbivore-soft .ace_invalid.ace_deprecated {\
- color: #FFFFFF;\
- background-color: #FE3838\
-}\
-\
-.ace-merbivore-soft .ace_fold {\
- background-color: #FC803A;\
- border-color: #E6E1DC\
-}\
-\
-.ace-merbivore-soft .ace_comment,\
-.ace-merbivore-soft .ace_meta {\
- font-style: italic;\
- color: #AC4BB8\
-}\
-\
-.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\
- color: #EAF1A3\
-}\
-\
-.ace-merbivore-soft .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-merbivore-soft .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkZH5zzBz5sz/AA8EBB6crd1rAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-mono_industrial.js b/vendor/assets/javascripts/ace-src-noconflict/theme-mono_industrial.js
deleted file mode 100644
index 7f9c355d1ae..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-mono_industrial.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/mono_industrial', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-mono-industrial";
-exports.cssText = ".ace-mono-industrial .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-mono-industrial .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-mono-industrial .ace_gutter {\
- background: #1d2521;\
- color: #C5C9C9\
-}\
-\
-.ace-mono-industrial .ace_print_margin {\
- width: 1px;\
- background: #555651\
-}\
-\
-.ace-mono-industrial .ace_scroller {\
- background-color: #222C28\
-}\
-\
-.ace-mono-industrial .ace_text-layer {\
- color: #FFFFFF\
-}\
-\
-.ace-mono-industrial .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-mono-industrial .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-mono-industrial .ace_marker-layer .ace_selection {\
- background: rgba(145, 153, 148, 0.40)\
-}\
-\
-.ace-mono-industrial.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #222C28;\
- border-radius: 2px\
-}\
-\
-.ace-mono-industrial .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-mono-industrial .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(102, 108, 104, 0.50)\
-}\
-\
-.ace-mono-industrial .ace_marker-layer .ace_active_line {\
- background: rgba(12, 13, 12, 0.25)\
-}\
-\
-.ace-mono-industrial .ace_gutter_active_line {\
- background-color: rgba(12, 13, 12, 0.25)\
-}\
-\
-.ace-mono-industrial .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(145, 153, 148, 0.40)\
-}\
-\
-.ace-mono-industrial .ace_invisible {\
- color: rgba(102, 108, 104, 0.50)\
-}\
-\
-.ace-mono-industrial .ace_keyword,\
-.ace-mono-industrial .ace_meta {\
- color: #A39E64\
-}\
-\
-.ace-mono-industrial .ace_constant,\
-.ace-mono-industrial .ace_constant.ace_character,\
-.ace-mono-industrial .ace_constant.ace_character.ace_escape,\
-.ace-mono-industrial .ace_constant.ace_numeric,\
-.ace-mono-industrial .ace_constant.ace_other {\
- color: #E98800\
-}\
-\
-.ace-mono-industrial .ace_entity.ace_name.ace_function,\
-.ace-mono-industrial .ace_keyword.ace_operator,\
-.ace-mono-industrial .ace_variable {\
- color: #A8B3AB\
-}\
-\
-.ace-mono-industrial .ace_invalid {\
- color: #FFFFFF;\
- background-color: rgba(153, 0, 0, 0.68)\
-}\
-\
-.ace-mono-industrial .ace_support.ace_constant {\
- color: #C87500\
-}\
-\
-.ace-mono-industrial .ace_fold {\
- background-color: #A8B3AB;\
- border-color: #FFFFFF\
-}\
-\
-.ace-mono-industrial .ace_support.ace_function {\
- color: #588E60\
-}\
-\
-.ace-mono-industrial .ace_entity.ace_name,\
-.ace-mono-industrial .ace_support.ace_class,\
-.ace-mono-industrial .ace_support.ace_type {\
- color: #5778B6\
-}\
-\
-.ace-mono-industrial .ace_storage {\
- color: #C23B00\
-}\
-\
-.ace-mono-industrial .ace_variable.ace_language,\
-.ace-mono-industrial .ace_variable.ace_parameter {\
- color: #648BD2\
-}\
-\
-.ace-mono-industrial .ace_comment {\
- color: #666C68;\
- background-color: #151C19\
-}\
-\
-.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\
- color: #909993\
-}\
-\
-.ace-mono-industrial .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-mono-industrial .ace_entity.ace_name.ace_tag {\
- color: #A65EFF\
-}\
-\
-.ace-mono-industrial .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y\
-}\
-";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-monokai.js b/vendor/assets/javascripts/ace-src-noconflict/theme-monokai.js
deleted file mode 100644
index e1f832aad92..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-monokai.js
+++ /dev/null
@@ -1,174 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/monokai', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-monokai";
-exports.cssText = ".ace-monokai .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-monokai .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-monokai .ace_gutter {\
- background: #2f3129;\
- color: #f1f1f1\
-}\
-\
-.ace-monokai .ace_print_margin {\
- width: 1px;\
- background: #555651\
-}\
-\
-.ace-monokai .ace_scroller {\
- background-color: #272822\
-}\
-\
-.ace-monokai .ace_text-layer {\
- color: #F8F8F2\
-}\
-\
-.ace-monokai .ace_cursor {\
- border-left: 2px solid #F8F8F0\
-}\
-\
-.ace-monokai .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #F8F8F0\
-}\
-\
-.ace-monokai .ace_marker-layer .ace_selection {\
- background: #49483E\
-}\
-\
-.ace-monokai.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #272822;\
- border-radius: 2px\
-}\
-\
-.ace-monokai .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-monokai .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #49483E\
-}\
-\
-.ace-monokai .ace_marker-layer .ace_active_line {\
- background: #202020\
-}\
-\
-.ace-monokai .ace_gutter_active_line {\
- background-color: #272727\
-}\
-\
-.ace-monokai .ace_marker-layer .ace_selected_word {\
- border: 1px solid #49483E\
-}\
-\
-.ace-monokai .ace_invisible {\
- color: #49483E\
-}\
-\
-.ace-monokai .ace_entity.ace_name.ace_tag,\
-.ace-monokai .ace_keyword,\
-.ace-monokai .ace_meta,\
-.ace-monokai .ace_storage {\
- color: #F92672\
-}\
-\
-.ace-monokai .ace_constant.ace_character,\
-.ace-monokai .ace_constant.ace_language,\
-.ace-monokai .ace_constant.ace_numeric,\
-.ace-monokai .ace_constant.ace_other {\
- color: #AE81FF\
-}\
-\
-.ace-monokai .ace_invalid {\
- color: #F8F8F0;\
- background-color: #F92672\
-}\
-\
-.ace-monokai .ace_invalid.ace_deprecated {\
- color: #F8F8F0;\
- background-color: #AE81FF\
-}\
-\
-.ace-monokai .ace_support.ace_constant,\
-.ace-monokai .ace_support.ace_function {\
- color: #66D9EF\
-}\
-\
-.ace-monokai .ace_fold {\
- background-color: #A6E22E;\
- border-color: #F8F8F2\
-}\
-\
-.ace-monokai .ace_storage.ace_type,\
-.ace-monokai .ace_support.ace_class,\
-.ace-monokai .ace_support.ace_type {\
- font-style: italic;\
- color: #66D9EF\
-}\
-\
-.ace-monokai .ace_entity.ace_name.ace_function,\
-.ace-monokai .ace_entity.ace_other.ace_attribute-name,\
-.ace-monokai .ace_variable {\
- color: #A6E22E\
-}\
-\
-.ace-monokai .ace_variable.ace_parameter {\
- font-style: italic;\
- color: #FD971F\
-}\
-\
-.ace-monokai .ace_string {\
- color: #E6DB74\
-}\
-\
-.ace-monokai .ace_comment {\
- color: #75715E\
-}\
-\
-.ace-monokai .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-monokai .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-pastel_on_dark.js b/vendor/assets/javascripts/ace-src-noconflict/theme-pastel_on_dark.js
deleted file mode 100644
index df29686a6b4..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-pastel_on_dark.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/pastel_on_dark', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-pastel-on-dark";
-exports.cssText = ".ace-pastel-on-dark .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-pastel-on-dark .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-pastel-on-dark .ace_gutter {\
- background: #353030;\
- color: #8F938F\
-}\
-\
-.ace-pastel-on-dark .ace_print_margin {\
- width: 1px;\
- background: #353030\
-}\
-\
-.ace-pastel-on-dark .ace_scroller {\
- background-color: #2C2828\
-}\
-\
-.ace-pastel-on-dark .ace_text-layer {\
- color: #8F938F\
-}\
-\
-.ace-pastel-on-dark .ace_cursor {\
- border-left: 2px solid #A7A7A7\
-}\
-\
-.ace-pastel-on-dark .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #A7A7A7\
-}\
-\
-.ace-pastel-on-dark .ace_marker-layer .ace_selection {\
- background: rgba(221, 240, 255, 0.20)\
-}\
-\
-.ace-pastel-on-dark.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #2C2828;\
- border-radius: 2px\
-}\
-\
-.ace-pastel-on-dark .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(255, 255, 255, 0.25)\
-}\
-\
-.ace-pastel-on-dark .ace_marker-layer .ace_active_line {\
- background: rgba(255, 255, 255, 0.031)\
-}\
-\
-.ace-pastel-on-dark .ace_gutter_active_line {\
- background-color: rgba(255, 255, 255, 0.031)\
-}\
-\
-.ace-pastel-on-dark .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(221, 240, 255, 0.20)\
-}\
-\
-.ace-pastel-on-dark .ace_invisible {\
- color: rgba(255, 255, 255, 0.25)\
-}\
-\
-.ace-pastel-on-dark .ace_keyword,\
-.ace-pastel-on-dark .ace_meta {\
- color: #757aD8\
-}\
-\
-.ace-pastel-on-dark .ace_constant,\
-.ace-pastel-on-dark .ace_constant.ace_character,\
-.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\
-.ace-pastel-on-dark .ace_constant.ace_other {\
- color: #4FB7C5\
-}\
-\
-.ace-pastel-on-dark .ace_keyword.ace_operator {\
- color: #797878\
-}\
-\
-.ace-pastel-on-dark .ace_constant.ace_character {\
- color: #AFA472\
-}\
-\
-.ace-pastel-on-dark .ace_constant.ace_language {\
- color: #DE8E30\
-}\
-\
-.ace-pastel-on-dark .ace_constant.ace_numeric {\
- color: #CCCCCC\
-}\
-\
-.ace-pastel-on-dark .ace_invalid,\
-.ace-pastel-on-dark .ace_invalid.ace_illegal {\
- color: #F8F8F8;\
- background-color: rgba(86, 45, 86, 0.75)\
-}\
-\
-.ace-pastel-on-dark .ace_invalid.ace_deprecated {\
- text-decoration: underline;\
- font-style: italic;\
- color: #D2A8A1\
-}\
-\
-.ace-pastel-on-dark .ace_fold {\
- background-color: #757aD8;\
- border-color: #8F938F\
-}\
-\
-.ace-pastel-on-dark .ace_support.ace_function {\
- color: #AEB2F8\
-}\
-\
-.ace-pastel-on-dark .ace_string {\
- color: #66A968\
-}\
-\
-.ace-pastel-on-dark .ace_string.ace_regexp {\
- color: #E9C062\
-}\
-\
-.ace-pastel-on-dark .ace_comment {\
- color: #A6C6FF\
-}\
-\
-.ace-pastel-on-dark .ace_variable {\
- color: #BEBF55\
-}\
-\
-.ace-pastel-on-dark .ace_variable.ace_language {\
- color: #C1C144\
-}\
-\
-.ace-pastel-on-dark .ace_xml_pe {\
- color: #494949\
-}\
-\
-.ace-pastel-on-dark .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-pastel-on-dark .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0dD4z9DR0fEfAA+vBBPqhbn1AAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_dark.js b/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_dark.js
deleted file mode 100644
index 7894bdef012..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_dark.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/solarized_dark', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-solarized-dark";
-exports.cssText = ".ace-solarized-dark .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-solarized-dark .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-solarized-dark .ace_gutter {\
- background: #01313f;\
- color: #d0edf7\
-}\
-\
-.ace-solarized-dark .ace_print_margin {\
- width: 1px;\
- background: #33555E\
-}\
-\
-.ace-solarized-dark .ace_scroller {\
- background-color: #002B36\
-}\
-\
-.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\
-.ace-solarized-dark .ace_storage,\
-.ace-solarized-dark .ace_text-layer {\
- color: #93A1A1\
-}\
-\
-.ace-solarized-dark .ace_cursor {\
- border-left: 2px solid #D30102\
-}\
-\
-.ace-solarized-dark .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #D30102\
-}\
-\
-.ace-solarized-dark .ace_marker-layer .ace_active_line,\
-.ace-solarized-dark .ace_marker-layer .ace_selection {\
- background: rgba(255, 255, 255, 0.1)\
-}\
-\
-.ace-solarized-dark.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #002B36;\
- border-radius: 2px\
-}\
-\
-.ace-solarized-dark .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-solarized-dark .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(147, 161, 161, 0.50)\
-}\
-\
-.ace-solarized-dark .ace_gutter_active_line {\
- background-color: #0d3440\
-}\
-\
-.ace-solarized-dark .ace_marker-layer .ace_selected_word {\
- border: 1px solid #073642\
-}\
-\
-.ace-solarized-dark .ace_invisible {\
- color: rgba(147, 161, 161, 0.50)\
-}\
-\
-.ace-solarized-dark .ace_keyword,\
-.ace-solarized-dark .ace_meta,\
-.ace-solarized-dark .ace_support.ace_class,\
-.ace-solarized-dark .ace_support.ace_type {\
- color: #859900\
-}\
-\
-.ace-solarized-dark .ace_constant.ace_character,\
-.ace-solarized-dark .ace_constant.ace_other {\
- color: #CB4B16\
-}\
-\
-.ace-solarized-dark .ace_constant.ace_language {\
- color: #B58900\
-}\
-\
-.ace-solarized-dark .ace_constant.ace_numeric {\
- color: #D33682\
-}\
-\
-.ace-solarized-dark .ace_fold {\
- background-color: #268BD2;\
- border-color: #93A1A1\
-}\
-\
-.ace-solarized-dark .ace_entity.ace_name.ace_function,\
-.ace-solarized-dark .ace_entity.ace_name.ace_tag,\
-.ace-solarized-dark .ace_support.ace_function,\
-.ace-solarized-dark .ace_variable,\
-.ace-solarized-dark .ace_variable.ace_language {\
- color: #268BD2\
-}\
-\
-.ace-solarized-dark .ace_string {\
- color: #2AA198\
-}\
-\
-.ace-solarized-dark .ace_string.ace_regexp {\
- color: #D30102\
-}\
-\
-.ace-solarized-dark .ace_comment {\
- font-style: italic;\
- color: #657B83\
-}\
-\
-.ace-solarized-dark .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-solarized-dark .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db7zzBz5sz/AA82BCv7wOIDAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_light.js b/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_light.js
deleted file mode 100644
index 35f880c26ae..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-solarized_light.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/solarized_light', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-solarized-light";
-exports.cssText = ".ace-solarized-light .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-solarized-light .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-solarized-light .ace_gutter {\
- background: #fbf1d3;\
- color: #333\
-}\
-\
-.ace-solarized-light .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8\
-}\
-\
-.ace-solarized-light .ace_scroller {\
- background-color: #FDF6E3\
-}\
-\
-.ace-solarized-light .ace_text-layer {\
- color: #586E75\
-}\
-\
-.ace-solarized-light .ace_cursor {\
- border-left: 2px solid #000000\
-}\
-\
-.ace-solarized-light .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #000000\
-}\
-\
-.ace-solarized-light .ace_marker-layer .ace_selection {\
- background: #073642\
-}\
-\
-.ace-solarized-light.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #FDF6E3;\
- border-radius: 2px\
-}\
-\
-.ace-solarized-light .ace_marker-layer .ace_step {\
- background: rgb(255, 255, 0)\
-}\
-\
-.ace-solarized-light .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(147, 161, 161, 0.50)\
-}\
-\
-.ace-solarized-light .ace_marker-layer .ace_active_line {\
- background: #EEE8D5\
-}\
-\
-.ace-solarized-light .ace_gutter_active_line {\
- background-color : #dcdcdc\
-}\
-\
-.ace-solarized-light .ace_marker-layer .ace_selected_word {\
- border: 1px solid #073642\
-}\
-\
-.ace-solarized-light .ace_invisible {\
- color: rgba(147, 161, 161, 0.50)\
-}\
-\
-.ace-solarized-light .ace_keyword,\
-.ace-solarized-light .ace_meta,\
-.ace-solarized-light .ace_support.ace_class,\
-.ace-solarized-light .ace_support.ace_type {\
- color: #859900\
-}\
-\
-.ace-solarized-light .ace_constant.ace_character,\
-.ace-solarized-light .ace_constant.ace_other {\
- color: #CB4B16\
-}\
-\
-.ace-solarized-light .ace_constant.ace_language {\
- color: #B58900\
-}\
-\
-.ace-solarized-light .ace_constant.ace_numeric {\
- color: #D33682\
-}\
-\
-.ace-solarized-light .ace_fold {\
- background-color: #268BD2;\
- border-color: #586E75\
-}\
-\
-.ace-solarized-light .ace_entity.ace_name.ace_function,\
-.ace-solarized-light .ace_entity.ace_name.ace_tag,\
-.ace-solarized-light .ace_support.ace_function,\
-.ace-solarized-light .ace_variable,\
-.ace-solarized-light .ace_variable.ace_language {\
- color: #268BD2\
-}\
-\
-.ace-solarized-light .ace_storage {\
- color: #073642\
-}\
-\
-.ace-solarized-light .ace_string {\
- color: #2AA198\
-}\
-\
-.ace-solarized-light .ace_string.ace_regexp {\
- color: #D30102\
-}\
-\
-.ace-solarized-light .ace_comment,\
-.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\
- color: #93A1A1\
-}\
-\
-.ace-solarized-light .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-solarized-light .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4++3xf4ZVq1b9BwAjxwbT1g3hiwAAAABJRU5ErkJggg==) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-textmate.js b/vendor/assets/javascripts/ace-src-noconflict/theme-textmate.js
deleted file mode 100644
index 97c0b183174..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-textmate.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/textmate', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-
-exports.isDark = false;
-exports.cssClass = "ace-tm";
-exports.cssText = ".ace-tm .ace_editor {\
- border: 2px solid rgb(159, 159, 159);\
-}\
-\
-.ace-tm .ace_editor.ace_focus {\
- border: 2px solid #327fbd;\
-}\
-\
-.ace-tm .ace_gutter {\
- background: #f0f0f0;\
- color: #333;\
-}\
-\
-.ace-tm .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8;\
-}\
-\
-.ace-tm .ace_fold {\
- background-color: #6B72E6;\
-}\
-\
-.ace-tm .ace_scroller {\
- background-color: #FFFFFF;\
-}\
-\
-.ace-tm .ace_cursor {\
- border-left: 2px solid black;\
-}\
-\
-.ace-tm .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid black;\
-}\
- \
-.ace-tm .ace_line .ace_invisible {\
- color: rgb(191, 191, 191);\
-}\
-\
-.ace-tm .ace_line .ace_storage,\
-.ace-tm .ace_line .ace_keyword {\
- color: blue;\
-}\
-\
-.ace-tm .ace_line .ace_constant {\
- color: rgb(197, 6, 11);\
-}\
-\
-.ace-tm .ace_line .ace_constant.ace_buildin {\
- color: rgb(88, 72, 246);\
-}\
-\
-.ace-tm .ace_line .ace_constant.ace_language {\
- color: rgb(88, 92, 246);\
-}\
-\
-.ace-tm .ace_line .ace_constant.ace_library {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-tm .ace_line .ace_invalid {\
- background-color: rgba(255, 0, 0, 0.1);\
- color: red;\
-}\
-\
-.ace-tm .ace_line .ace_support.ace_function {\
- color: rgb(60, 76, 114);\
-}\
-\
-.ace-tm .ace_line .ace_support.ace_constant {\
- color: rgb(6, 150, 14);\
-}\
-\
-.ace-tm .ace_line .ace_support.ace_type,\
-.ace-tm .ace_line .ace_support.ace_class {\
- color: rgb(109, 121, 222);\
-}\
-\
-.ace-tm .ace_line .ace_keyword.ace_operator {\
- color: rgb(104, 118, 135);\
-}\
-\
-.ace-tm .ace_line .ace_string {\
- color: rgb(3, 106, 7);\
-}\
-\
-.ace-tm .ace_line .ace_comment {\
- color: rgb(76, 136, 107);\
-}\
-\
-.ace-tm .ace_line .ace_comment.ace_doc {\
- color: rgb(0, 102, 255);\
-}\
-\
-.ace-tm .ace_line .ace_comment.ace_doc.ace_tag {\
- color: rgb(128, 159, 191);\
-}\
-\
-.ace-tm .ace_line .ace_constant.ace_numeric {\
- color: rgb(0, 0, 205);\
-}\
-\
-.ace-tm .ace_line .ace_variable {\
- color: rgb(49, 132, 149);\
-}\
-\
-.ace-tm .ace_line .ace_xml_pe {\
- color: rgb(104, 104, 91);\
-}\
-\
-.ace-tm .ace_entity.ace_name.ace_function {\
- color: #0000A2;\
-}\
-\
-\
-.ace-tm .ace_markup.ace_heading {\
- color: rgb(12, 7, 255);\
-}\
-\
-.ace-tm .ace_markup.ace_list {\
- color:rgb(185, 6, 144);\
-}\
-\
-.ace-tm .ace_meta.ace_tag {\
- color:rgb(0, 22, 142);\
-}\
-\
-.ace-tm .ace_string.ace_regex {\
- color: rgb(255, 0, 0)\
-}\
-\
-.ace-tm .ace_marker-layer .ace_selection {\
- background: rgb(181, 213, 255);\
-}\
-.ace-tm.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px white;\
- border-radius: 2px;\
-}\
-.ace-tm .ace_marker-layer .ace_step {\
- background: rgb(252, 255, 0);\
-}\
-\
-.ace-tm .ace_marker-layer .ace_stack {\
- background: rgb(164, 229, 101);\
-}\
-\
-.ace-tm .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgb(192, 192, 192);\
-}\
-\
-.ace-tm .ace_marker-layer .ace_active_line {\
- background: rgba(0, 0, 0, 0.07);\
-}\
-\
-.ace-tm .ace_gutter_active_line {\
- background-color : #dcdcdc;\
-}\
-\
-.ace-tm .ace_marker-layer .ace_selected_word {\
- background: rgb(250, 250, 255);\
- border: 1px solid rgb(200, 200, 250);\
-}\
-\
-.ace-tm .ace_indent-guide {\
- background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
-}\
-";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow.js b/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow.js
deleted file mode 100644
index f7e24444cf2..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/tomorrow', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-tomorrow";
-exports.cssText = ".ace-tomorrow .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-tomorrow .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-tomorrow .ace_gutter {\
- background: #f6f6f6;\
- color: #4D4D4C\
-}\
-\
-.ace-tomorrow .ace_print_margin {\
- width: 1px;\
- background: #f6f6f6\
-}\
-\
-.ace-tomorrow .ace_scroller {\
- background-color: #FFFFFF\
-}\
-\
-.ace-tomorrow .ace_text-layer {\
- color: #4D4D4C\
-}\
-\
-.ace-tomorrow .ace_cursor {\
- border-left: 2px solid #AEAFAD\
-}\
-\
-.ace-tomorrow .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #AEAFAD\
-}\
-\
-.ace-tomorrow .ace_marker-layer .ace_selection {\
- background: #D6D6D6\
-}\
-\
-.ace-tomorrow.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #FFFFFF;\
- border-radius: 2px\
-}\
-\
-.ace-tomorrow .ace_marker-layer .ace_step {\
- background: rgb(255, 255, 0)\
-}\
-\
-.ace-tomorrow .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #D1D1D1\
-}\
-\
-.ace-tomorrow .ace_marker-layer .ace_active_line {\
- background: #EFEFEF\
-}\
-\
-.ace-tomorrow .ace_gutter_active_line {\
- background-color : #dcdcdc\
-}\
-\
-.ace-tomorrow .ace_marker-layer .ace_selected_word {\
- border: 1px solid #D6D6D6\
-}\
-\
-.ace-tomorrow .ace_invisible {\
- color: #D1D1D1\
-}\
-\
-.ace-tomorrow .ace_keyword,\
-.ace-tomorrow .ace_meta,\
-.ace-tomorrow .ace_storage,\
-.ace-tomorrow .ace_storage.ace_type,\
-.ace-tomorrow .ace_support.ace_type {\
- color: #8959A8\
-}\
-\
-.ace-tomorrow .ace_keyword.ace_operator {\
- color: #3E999F\
-}\
-\
-.ace-tomorrow .ace_constant.ace_character,\
-.ace-tomorrow .ace_constant.ace_language,\
-.ace-tomorrow .ace_constant.ace_numeric,\
-.ace-tomorrow .ace_keyword.ace_other.ace_unit,\
-.ace-tomorrow .ace_support.ace_constant,\
-.ace-tomorrow .ace_variable.ace_parameter {\
- color: #F5871F\
-}\
-\
-.ace-tomorrow .ace_constant.ace_other {\
- color: #666969\
-}\
-\
-.ace-tomorrow .ace_invalid {\
- color: #FFFFFF;\
- background-color: #C82829\
-}\
-\
-.ace-tomorrow .ace_invalid.ace_deprecated {\
- color: #FFFFFF;\
- background-color: #8959A8\
-}\
-\
-.ace-tomorrow .ace_fold {\
- background-color: #4271AE;\
- border-color: #4D4D4C\
-}\
-\
-.ace-tomorrow .ace_entity.ace_name.ace_function,\
-.ace-tomorrow .ace_support.ace_function,\
-.ace-tomorrow .ace_variable {\
- color: #4271AE\
-}\
-\
-.ace-tomorrow .ace_support.ace_class,\
-.ace-tomorrow .ace_support.ace_type {\
- color: #C99E00\
-}\
-\
-.ace-tomorrow .ace_markup.ace_heading,\
-.ace-tomorrow .ace_string {\
- color: #718C00\
-}\
-\
-.ace-tomorrow .ace_entity.ace_name.ace_tag,\
-.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\
-.ace-tomorrow .ace_meta.ace_tag,\
-.ace-tomorrow .ace_string.ace_regexp,\
-.ace-tomorrow .ace_variable {\
- color: #C82829\
-}\
-\
-.ace-tomorrow .ace_comment {\
- color: #8E908C\
-}\
-\
-.ace-tomorrow .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-tomorrow .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night.js b/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night.js
deleted file mode 100644
index 9e65098d9ea..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/tomorrow_night', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-tomorrow-night";
-exports.cssText = ".ace-tomorrow-night .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-tomorrow-night .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-tomorrow-night .ace_gutter {\
- background: #25282c;\
- color: #C5C8C6\
-}\
-\
-.ace-tomorrow-night .ace_print_margin {\
- width: 1px;\
- background: #25282c\
-}\
-\
-.ace-tomorrow-night .ace_scroller {\
- background-color: #1D1F21\
-}\
-\
-.ace-tomorrow-night .ace_text-layer {\
- color: #C5C8C6\
-}\
-\
-.ace-tomorrow-night .ace_cursor {\
- border-left: 2px solid #AEAFAD\
-}\
-\
-.ace-tomorrow-night .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #AEAFAD\
-}\
-\
-.ace-tomorrow-night .ace_marker-layer .ace_selection {\
- background: #373B41\
-}\
-\
-.ace-tomorrow-night.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #1D1F21;\
- border-radius: 2px\
-}\
-\
-.ace-tomorrow-night .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-tomorrow-night .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #4B4E55\
-}\
-\
-.ace-tomorrow-night .ace_marker-layer .ace_active_line {\
- background: #282A2E\
-}\
-\
-.ace-tomorrow-night .ace_gutter_active_line {\
- background-color: #282A2E\
-}\
-\
-.ace-tomorrow-night .ace_marker-layer .ace_selected_word {\
- border: 1px solid #373B41\
-}\
-\
-.ace-tomorrow-night .ace_invisible {\
- color: #4B4E55\
-}\
-\
-.ace-tomorrow-night .ace_keyword,\
-.ace-tomorrow-night .ace_meta,\
-.ace-tomorrow-night .ace_storage,\
-.ace-tomorrow-night .ace_storage.ace_type,\
-.ace-tomorrow-night .ace_support.ace_type {\
- color: #B294BB\
-}\
-\
-.ace-tomorrow-night .ace_keyword.ace_operator {\
- color: #8ABEB7\
-}\
-\
-.ace-tomorrow-night .ace_constant.ace_character,\
-.ace-tomorrow-night .ace_constant.ace_language,\
-.ace-tomorrow-night .ace_constant.ace_numeric,\
-.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\
-.ace-tomorrow-night .ace_support.ace_constant,\
-.ace-tomorrow-night .ace_variable.ace_parameter {\
- color: #DE935F\
-}\
-\
-.ace-tomorrow-night .ace_constant.ace_other {\
- color: #CED1CF\
-}\
-\
-.ace-tomorrow-night .ace_invalid {\
- color: #CED2CF;\
- background-color: #DF5F5F\
-}\
-\
-.ace-tomorrow-night .ace_invalid.ace_deprecated {\
- color: #CED2CF;\
- background-color: #B798BF\
-}\
-\
-.ace-tomorrow-night .ace_fold {\
- background-color: #81A2BE;\
- border-color: #C5C8C6\
-}\
-\
-.ace-tomorrow-night .ace_entity.ace_name.ace_function,\
-.ace-tomorrow-night .ace_support.ace_function,\
-.ace-tomorrow-night .ace_variable {\
- color: #81A2BE\
-}\
-\
-.ace-tomorrow-night .ace_support.ace_class,\
-.ace-tomorrow-night .ace_support.ace_type {\
- color: #F0C674\
-}\
-\
-.ace-tomorrow-night .ace_markup.ace_heading,\
-.ace-tomorrow-night .ace_string {\
- color: #B5BD68\
-}\
-\
-.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\
-.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\
-.ace-tomorrow-night .ace_meta.ace_tag,\
-.ace-tomorrow-night .ace_string.ace_regexp,\
-.ace-tomorrow-night .ace_variable {\
- color: #CC6666\
-}\
-\
-.ace-tomorrow-night .ace_comment {\
- color: #969896\
-}\
-\
-.ace-tomorrow-night .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-tomorrow-night .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlVf8z7Bq1ar/AA/hBFp7egmpAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_blue.js b/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_blue.js
deleted file mode 100644
index 19d8c3b5ddf..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_blue.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/tomorrow_night_blue', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-tomorrow-night-blue";
-exports.cssText = ".ace-tomorrow-night-blue .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-tomorrow-night-blue .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-tomorrow-night-blue .ace_gutter {\
- background: #00204b;\
- color: #7388b5\
-}\
-\
-.ace-tomorrow-night-blue .ace_print_margin {\
- width: 1px;\
- background: #00204b\
-}\
-\
-.ace-tomorrow-night-blue .ace_scroller {\
- background-color: #002451\
-}\
-\
-.ace-tomorrow-night-blue .ace_constant.ace_other,\
-.ace-tomorrow-night-blue .ace_text-layer {\
- color: #FFFFFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\
- background: #003F8E\
-}\
-\
-.ace-tomorrow-night-blue.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #002451;\
- border-radius: 2px\
-}\
-\
-.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\
- background: rgb(127, 111, 19)\
-}\
-\
-.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #404F7D\
-}\
-\
-.ace-tomorrow-night-blue .ace_marker-layer .ace_active_line {\
- background: #00346E\
-}\
-\
-.ace-tomorrow-night-blue .ace_gutter_active_line {\
- background-color: #022040\
-}\
-\
-.ace-tomorrow-night-blue .ace_marker-layer .ace_selected_word {\
- border: 1px solid #003F8E\
-}\
-\
-.ace-tomorrow-night-blue .ace_invisible {\
- color: #404F7D\
-}\
-\
-.ace-tomorrow-night-blue .ace_keyword,\
-.ace-tomorrow-night-blue .ace_meta,\
-.ace-tomorrow-night-blue .ace_storage,\
-.ace-tomorrow-night-blue .ace_storage.ace_type,\
-.ace-tomorrow-night-blue .ace_support.ace_type {\
- color: #EBBBFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_keyword.ace_operator {\
- color: #99FFFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_constant.ace_character,\
-.ace-tomorrow-night-blue .ace_constant.ace_language,\
-.ace-tomorrow-night-blue .ace_constant.ace_numeric,\
-.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\
-.ace-tomorrow-night-blue .ace_support.ace_constant,\
-.ace-tomorrow-night-blue .ace_variable.ace_parameter {\
- color: #FFC58F\
-}\
-\
-.ace-tomorrow-night-blue .ace_invalid {\
- color: #FFFFFF;\
- background-color: #F99DA5\
-}\
-\
-.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\
- color: #FFFFFF;\
- background-color: #EBBBFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_fold {\
- background-color: #BBDAFF;\
- border-color: #FFFFFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\
-.ace-tomorrow-night-blue .ace_support.ace_function,\
-.ace-tomorrow-night-blue .ace_variable {\
- color: #BBDAFF\
-}\
-\
-.ace-tomorrow-night-blue .ace_support.ace_class,\
-.ace-tomorrow-night-blue .ace_support.ace_type {\
- color: #FFEEAD\
-}\
-\
-.ace-tomorrow-night-blue .ace_markup.ace_heading,\
-.ace-tomorrow-night-blue .ace_string {\
- color: #D1F1A9\
-}\
-\
-.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\
-.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\
-.ace-tomorrow-night-blue .ace_meta.ace_tag,\
-.ace-tomorrow-night-blue .ace_string.ace_regexp,\
-.ace-tomorrow-night-blue .ace_variable {\
- color: #FF9DA4\
-}\
-\
-.ace-tomorrow-night-blue .ace_comment {\
- color: #7285B7\
-}\
-\
-.ace-tomorrow-night-blue .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-tomorrow-night-blue .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUAn8z7Bq1ar/ABBUBHJ4/r3JAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_bright.js b/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_bright.js
deleted file mode 100644
index c5009ba7790..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_bright.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/tomorrow_night_bright', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-tomorrow-night-bright";
-exports.cssText = ".ace-tomorrow-night-bright .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-tomorrow-night-bright .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-tomorrow-night-bright .ace_gutter {\
- background: #1a1a1a;\
- color: #DEDEDE\
-}\
-\
-.ace-tomorrow-night-bright .ace_print_margin {\
- width: 1px;\
- background: #1a1a1a\
-}\
-\
-.ace-tomorrow-night-bright .ace_scroller {\
- background-color: #000000\
-}\
-\
-.ace-tomorrow-night-bright .ace_text-layer {\
- color: #DEDEDE\
-}\
-\
-.ace-tomorrow-night-bright .ace_cursor {\
- border-left: 2px solid #9F9F9F\
-}\
-\
-.ace-tomorrow-night-bright .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #9F9F9F\
-}\
-\
-.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\
- background: #424242\
-}\
-\
-.ace-tomorrow-night-bright.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #000000;\
- border-radius: 2px\
-}\
-\
-.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #343434\
-}\
-\
-.ace-tomorrow-night-bright .ace_marker-layer .ace_active_line {\
- background: #2A2A2A\
-}\
-\
-.ace-tomorrow-night-bright .ace_gutter_active_line {\
- background-color: #2A2A2A\
-}\
-\
-.ace-tomorrow-night-bright .ace_marker-layer .ace_selected_word {\
- border: 1px solid #424242\
-}\
-\
-.ace-tomorrow-night-bright .ace_invisible {\
- color: #343434\
-}\
-\
-.ace-tomorrow-night-bright .ace_keyword,\
-.ace-tomorrow-night-bright .ace_meta,\
-.ace-tomorrow-night-bright .ace_storage,\
-.ace-tomorrow-night-bright .ace_storage.ace_type,\
-.ace-tomorrow-night-bright .ace_support.ace_type {\
- color: #C397D8\
-}\
-\
-.ace-tomorrow-night-bright .ace_keyword.ace_operator {\
- color: #70C0B1\
-}\
-\
-.ace-tomorrow-night-bright .ace_constant.ace_character,\
-.ace-tomorrow-night-bright .ace_constant.ace_language,\
-.ace-tomorrow-night-bright .ace_constant.ace_numeric,\
-.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\
-.ace-tomorrow-night-bright .ace_support.ace_constant,\
-.ace-tomorrow-night-bright .ace_variable.ace_parameter {\
- color: #E78C45\
-}\
-\
-.ace-tomorrow-night-bright .ace_constant.ace_other {\
- color: #EEEEEE\
-}\
-\
-.ace-tomorrow-night-bright .ace_invalid {\
- color: #CED2CF;\
- background-color: #DF5F5F\
-}\
-\
-.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\
- color: #CED2CF;\
- background-color: #B798BF\
-}\
-\
-.ace-tomorrow-night-bright .ace_fold {\
- background-color: #7AA6DA;\
- border-color: #DEDEDE\
-}\
-\
-.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\
-.ace-tomorrow-night-bright .ace_support.ace_function,\
-.ace-tomorrow-night-bright .ace_variable {\
- color: #7AA6DA\
-}\
-\
-.ace-tomorrow-night-bright .ace_support.ace_class,\
-.ace-tomorrow-night-bright .ace_support.ace_type {\
- color: #E7C547\
-}\
-\
-.ace-tomorrow-night-bright .ace_markup.ace_heading,\
-.ace-tomorrow-night-bright .ace_string {\
- color: #B9CA4A\
-}\
-\
-.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\
-.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\
-.ace-tomorrow-night-bright .ace_meta.ace_tag,\
-.ace-tomorrow-night-bright .ace_string.ace_regexp,\
-.ace-tomorrow-night-bright .ace_variable {\
- color: #D54E53\
-}\
-\
-.ace-tomorrow-night-bright .ace_comment {\
- color: #969896\
-}\
-\
-.ace-tomorrow-night-bright .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-tomorrow-night-bright .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGD4z7Bq1ar/AAz9A/2naJQKAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_eighties.js b/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_eighties.js
deleted file mode 100644
index e68e3279d4d..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-tomorrow_night_eighties.js
+++ /dev/null
@@ -1,178 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/tomorrow_night_eighties', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-tomorrow-night-eighties";
-exports.cssText = ".ace-tomorrow-night-eighties .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-tomorrow-night-eighties .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-tomorrow-night-eighties .ace_gutter {\
- background: #272727;\
- color: #CCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_print_margin {\
- width: 1px;\
- background: #272727\
-}\
-\
-.ace-tomorrow-night-eighties .ace_scroller {\
- background-color: #2D2D2D\
-}\
-\
-.ace-tomorrow-night-eighties .ace_constant.ace_other,\
-.ace-tomorrow-night-eighties .ace_text-layer {\
- color: #CCCCCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_cursor {\
- border-left: 2px solid #CCCCCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #CCCCCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\
- background: #515151\
-}\
-\
-.ace-tomorrow-night-eighties.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #2D2D2D;\
- border-radius: 2px\
-}\
-\
-.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #6A6A6A\
-}\
-\
-.ace-tomorrow-night-eighties .ace_marker-layer .ace_active_line {\
- background: #393939\
-}\
-\
-.ace-tomorrow-night-eighties .ace_gutter_active_line {\
- background-color: #393939\
-}\
-\
-.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected_word {\
- border: 1px solid #515151\
-}\
-\
-.ace-tomorrow-night-eighties .ace_invisible {\
- color: #6A6A6A\
-}\
-\
-.ace-tomorrow-night-eighties .ace_keyword,\
-.ace-tomorrow-night-eighties .ace_meta,\
-.ace-tomorrow-night-eighties .ace_storage,\
-.ace-tomorrow-night-eighties .ace_storage.ace_type,\
-.ace-tomorrow-night-eighties .ace_support.ace_type {\
- color: #CC99CC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\
- color: #66CCCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_constant.ace_character,\
-.ace-tomorrow-night-eighties .ace_constant.ace_language,\
-.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\
-.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\
-.ace-tomorrow-night-eighties .ace_support.ace_constant,\
-.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\
- color: #F99157\
-}\
-\
-.ace-tomorrow-night-eighties .ace_invalid {\
- color: #CDCDCD;\
- background-color: #F2777A\
-}\
-\
-.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\
- color: #CDCDCD;\
- background-color: #CC99CC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_fold {\
- background-color: #6699CC;\
- border-color: #CCCCCC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\
-.ace-tomorrow-night-eighties .ace_support.ace_function,\
-.ace-tomorrow-night-eighties .ace_variable {\
- color: #6699CC\
-}\
-\
-.ace-tomorrow-night-eighties .ace_support.ace_class,\
-.ace-tomorrow-night-eighties .ace_support.ace_type {\
- color: #FFCC66\
-}\
-\
-.ace-tomorrow-night-eighties .ace_markup.ace_heading,\
-.ace-tomorrow-night-eighties .ace_string {\
- color: #99CC99\
-}\
-\
-.ace-tomorrow-night-eighties .ace_comment {\
- color: #999999\
-}\
-\
-.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\
-.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\
-.ace-tomorrow-night-eighties .ace_meta.ace_tag,\
-.ace-tomorrow-night-eighties .ace_variable {\
- color: #F2777A\
-}\
-\
-.ace-tomorrow-night-eighties .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-tomorrow-night-eighties .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ1dX9z7Bq1ar/ABE1BITwhhuFAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-twilight.js b/vendor/assets/javascripts/ace-src-noconflict/theme-twilight.js
deleted file mode 100644
index 925093bbc26..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-twilight.js
+++ /dev/null
@@ -1,184 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/twilight', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-twilight";
-exports.cssText = ".ace-twilight .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-twilight .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-twilight .ace_gutter {\
- background: #232323;\
- color: #E2E2E2\
-}\
-\
-.ace-twilight .ace_print_margin {\
- width: 1px;\
- background: #232323\
-}\
-\
-.ace-twilight .ace_scroller {\
- background-color: #141414\
-}\
-\
-.ace-twilight .ace_text-layer {\
- color: #F8F8F8\
-}\
-\
-.ace-twilight .ace_cursor {\
- border-left: 2px solid #A7A7A7\
-}\
-\
-.ace-twilight .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #A7A7A7\
-}\
-\
-.ace-twilight .ace_marker-layer .ace_selection {\
- background: rgba(221, 240, 255, 0.20)\
-}\
-\
-.ace-twilight.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #141414;\
- border-radius: 2px\
-}\
-\
-.ace-twilight .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-twilight .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid rgba(255, 255, 255, 0.25)\
-}\
-\
-.ace-twilight .ace_marker-layer .ace_active_line {\
- background: rgba(255, 255, 255, 0.031)\
-}\
-\
-.ace-twilight .ace_gutter_active_line {\
- background-color: rgba(255, 255, 255, 0.031)\
-}\
-\
-.ace-twilight .ace_marker-layer .ace_selected_word {\
- border: 1px solid rgba(221, 240, 255, 0.20)\
-}\
-\
-.ace-twilight .ace_invisible {\
- color: rgba(255, 255, 255, 0.25)\
-}\
-\
-.ace-twilight .ace_keyword,\
-.ace-twilight .ace_meta {\
- color: #CDA869\
-}\
-\
-.ace-twilight .ace_constant,\
-.ace-twilight .ace_constant.ace_character,\
-.ace-twilight .ace_constant.ace_character.ace_escape,\
-.ace-twilight .ace_constant.ace_other,\
-.ace-twilight .ace_markup.ace_heading,\
-.ace-twilight .ace_support.ace_constant {\
- color: #CF6A4C\
-}\
-\
-.ace-twilight .ace_invalid.ace_illegal {\
- color: #F8F8F8;\
- background-color: rgba(86, 45, 86, 0.75)\
-}\
-\
-.ace-twilight .ace_invalid.ace_deprecated {\
- text-decoration: underline;\
- font-style: italic;\
- color: #D2A8A1\
-}\
-\
-.ace-twilight .ace_support {\
- color: #9B859D\
-}\
-\
-.ace-twilight .ace_fold {\
- background-color: #AC885B;\
- border-color: #F8F8F8\
-}\
-\
-.ace-twilight .ace_support.ace_function {\
- color: #DAD085\
-}\
-\
-.ace-twilight .ace_markup.ace_list,\
-.ace-twilight .ace_storage {\
- color: #F9EE98\
-}\
-\
-.ace-twilight .ace_entity.ace_name.ace_function,\
-.ace-twilight .ace_meta.ace_tag,\
-.ace-twilight .ace_variable {\
- color: #AC885B\
-}\
-\
-.ace-twilight .ace_string {\
- color: #8F9D6A\
-}\
-\
-.ace-twilight .ace_string.ace_regexp {\
- color: #E9C062\
-}\
-\
-.ace-twilight .ace_comment {\
- font-style: italic;\
- color: #5F5A60\
-}\
-\
-.ace-twilight .ace_variable {\
- color: #7587A6\
-}\
-\
-.ace-twilight .ace_xml_pe {\
- color: #494949\
-}\
-\
-.ace-twilight .ace_markup.ace_underline {\
- text-decoration: underline\
-}\
-\
-.ace-twilight .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-vibrant_ink.js b/vendor/assets/javascripts/ace-src-noconflict/theme-vibrant_ink.js
deleted file mode 100644
index 097810cd389..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-vibrant_ink.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/vibrant_ink', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-vibrant-ink";
-exports.cssText = ".ace-vibrant-ink .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-vibrant-ink .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-vibrant-ink .ace_gutter {\
- background: #1a1a1a;\
- color: #BEBEBE\
-}\
-\
-.ace-vibrant-ink .ace_print_margin {\
- width: 1px;\
- background: #1a1a1a\
-}\
-\
-.ace-vibrant-ink .ace_scroller {\
- background-color: #0F0F0F\
-}\
-\
-.ace-vibrant-ink .ace_text-layer {\
- color: #FFFFFF\
-}\
-\
-.ace-vibrant-ink .ace_cursor {\
- border-left: 2px solid #FFFFFF\
-}\
-\
-.ace-vibrant-ink .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #FFFFFF\
-}\
-\
-.ace-vibrant-ink .ace_marker-layer .ace_selection {\
- background: #6699CC\
-}\
-\
-.ace-vibrant-ink.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #0F0F0F;\
- border-radius: 2px\
-}\
-\
-.ace-vibrant-ink .ace_marker-layer .ace_step {\
- background: rgb(102, 82, 0)\
-}\
-\
-.ace-vibrant-ink .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #404040\
-}\
-\
-.ace-vibrant-ink .ace_marker-layer .ace_active_line {\
- background: #333333\
-}\
-\
-.ace-vibrant-ink .ace_gutter_active_line {\
- background-color: #333333\
-}\
-\
-.ace-vibrant-ink .ace_marker-layer .ace_selected_word {\
- border: 1px solid #6699CC\
-}\
-\
-.ace-vibrant-ink .ace_invisible {\
- color: #404040\
-}\
-\
-.ace-vibrant-ink .ace_keyword,\
-.ace-vibrant-ink .ace_meta {\
- color: #FF6600\
-}\
-\
-.ace-vibrant-ink .ace_constant,\
-.ace-vibrant-ink .ace_constant.ace_character,\
-.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\
-.ace-vibrant-ink .ace_constant.ace_other {\
- color: #339999\
-}\
-\
-.ace-vibrant-ink .ace_constant.ace_numeric {\
- color: #99CC99\
-}\
-\
-.ace-vibrant-ink .ace_invalid,\
-.ace-vibrant-ink .ace_invalid.ace_deprecated {\
- color: #CCFF33;\
- background-color: #000000\
-}\
-\
-.ace-vibrant-ink .ace_fold {\
- background-color: #FFCC00;\
- border-color: #FFFFFF\
-}\
-\
-.ace-vibrant-ink .ace_entity.ace_name.ace_function,\
-.ace-vibrant-ink .ace_support.ace_function,\
-.ace-vibrant-ink .ace_variable {\
- color: #FFCC00\
-}\
-\
-.ace-vibrant-ink .ace_variable.ace_parameter {\
- font-style: italic\
-}\
-\
-.ace-vibrant-ink .ace_string {\
- color: #66FF00\
-}\
-\
-.ace-vibrant-ink .ace_string.ace_regexp {\
- color: #44B4CC\
-}\
-\
-.ace-vibrant-ink .ace_comment {\
- color: #9933CC\
-}\
-\
-.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\
- font-style: italic;\
- color: #99CC99\
-}\
-\
-.ace-vibrant-ink .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5+f/z7Bq1ar/AA5lBCqoLxsgAAAAAElFTkSuQmCC) right repeat-y\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/theme-xcode.js b/vendor/assets/javascripts/ace-src-noconflict/theme-xcode.js
deleted file mode 100644
index 7c040fa2810..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/theme-xcode.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-
-ace.define('ace/theme/xcode', ['require', 'exports', 'module', 'ace/lib/dom'], function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-xcode";
-exports.cssText = "/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */\
-.ace-xcode .ace_editor {\
- border: 2px solid rgb(159, 159, 159)\
-}\
-\
-.ace-xcode .ace_editor.ace_focus {\
- border: 2px solid #327fbd\
-}\
-\
-.ace-xcode .ace_gutter {\
- background: #e8e8e8;\
- color: #333\
-}\
-\
-.ace-xcode .ace_print_margin {\
- width: 1px;\
- background: #e8e8e8\
-}\
-\
-.ace-xcode .ace_scroller {\
- background-color: #FFFFFF\
-}\
-\
-.ace-xcode .ace_text-layer {\
- color: #000000\
-}\
-\
-.ace-xcode .ace_cursor {\
- border-left: 2px solid #000000\
-}\
-\
-.ace-xcode .ace_cursor.ace_overwrite {\
- border-left: 0px;\
- border-bottom: 1px solid #000000\
-}\
-\
-.ace-xcode .ace_marker-layer .ace_selection {\
- background: #B5D5FF\
-}\
-\
-.ace-xcode.multiselect .ace_selection.start {\
- box-shadow: 0 0 3px 0px #FFFFFF;\
- border-radius: 2px\
-}\
-\
-.ace-xcode .ace_marker-layer .ace_step {\
- background: rgb(198, 219, 174)\
-}\
-\
-.ace-xcode .ace_marker-layer .ace_bracket {\
- margin: -1px 0 0 -1px;\
- border: 1px solid #BFBFBF\
-}\
-\
-.ace-xcode .ace_marker-layer .ace_active_line {\
- background: rgba(0, 0, 0, 0.071)\
-}\
-\
-.ace-xcode .ace_gutter_active_line {\
- background-color: rgba(0, 0, 0, 0.071)\
-}\
-\
-.ace-xcode .ace_marker-layer .ace_selected_word {\
- border: 1px solid #B5D5FF\
-}\
-\
-.ace-xcode .ace_constant.ace_language,\
-.ace-xcode .ace_keyword,\
-.ace-xcode .ace_meta,\
-.ace-xcode .ace_variable.ace_language {\
- color: #C800A4\
-}\
-\
-.ace-xcode .ace_invisible {\
- color: #BFBFBF\
-}\
-\
-.ace-xcode .ace_constant.ace_character,\
-.ace-xcode .ace_constant.ace_other {\
- color: #275A5E\
-}\
-\
-.ace-xcode .ace_constant.ace_numeric {\
- color: #3A00DC\
-}\
-\
-.ace-xcode .ace_entity.ace_other.ace_attribute-name,\
-.ace-xcode .ace_support.ace_constant,\
-.ace-xcode .ace_support.ace_function {\
- color: #450084\
-}\
-\
-.ace-xcode .ace_fold {\
- background-color: #C800A4;\
- border-color: #000000\
-}\
-\
-.ace-xcode .ace_entity.ace_name.ace_tag,\
-.ace-xcode .ace_support.ace_class,\
-.ace-xcode .ace_support.ace_type {\
- color: #790EAD\
-}\
-\
-.ace-xcode .ace_storage {\
- color: #C900A4\
-}\
-\
-.ace-xcode .ace_string {\
- color: #DF0002\
-}\
-\
-.ace-xcode .ace_comment {\
- color: #008E00\
-}\
-\
-.ace-xcode .ace_indent-guide {\
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y;\
-}";
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/worker-coffee.js b/vendor/assets/javascripts/ace-src-noconflict/worker-coffee.js
deleted file mode 100644
index 3a7bf80fcec..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/worker-coffee.js
+++ /dev/null
@@ -1,7213 +0,0 @@
-"no use strict";
-
-var console = {
- log: function(msgs) {
- postMessage({type: "log", data: arguments.join(" ")});
- }
-};
-var window = {
- console: console
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- var moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-
-var require = function(parentId, id) {
- if (!id.charAt)
- throw new Error("worker.js require() accepts only (parentId, id) as arguments");
-
- var id = normalizeModule(parentId, id);
-
- var module = require.modules[id];
- if (module) {
- if (!module.initialized) {
- module.initialized = true;
- module.exports = module.factory().exports;
- }
- return module.exports;
- }
-
- var chunks = id.split("/");
- chunks[0] = require.tlns[chunks[0]] || chunks[0];
- var path = chunks.join("/") + ".js";
-
- require.id = id;
- importScripts(path);
- return require(parentId, id);
-};
-
-require.modules = {};
-require.tlns = {};
-
-var define = function(id, deps, factory) {
- if (arguments.length == 2) {
- factory = deps;
- if (typeof id != "string") {
- deps = id;
- id = require.id;
- }
- } else if (arguments.length == 1) {
- factory = id;
- id = require.id;
- }
-
- if (id.indexOf("text!") === 0)
- return;
-
- var req = function(deps, factory) {
- return require(id, deps, factory);
- };
-
- require.modules[id] = {
- factory: function() {
- var module = {
- exports: {}
- };
- var returnExports = factory(req, module.exports, module);
- if (returnExports)
- module.exports = returnExports;
- return module;
- }
- };
-};
-
-function initBaseUrls(topLevelNamespaces) {
- require.tlns = topLevelNamespaces;
-}
-
-function initSender() {
-
- var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
- var oop = require(null, "ace/lib/oop");
-
- var Sender = function() {};
-
- (function() {
-
- oop.implement(this, EventEmitter);
-
- this.callback = function(data, callbackId) {
- postMessage({
- type: "call",
- id: callbackId,
- data: data
- });
- };
-
- this.emit = function(name, data) {
- postMessage({
- type: "event",
- name: name,
- data: data
- });
- };
-
- }).call(Sender.prototype);
-
- return new Sender();
-}
-
-var main;
-var sender;
-
-onmessage = function(e) {
- var msg = e.data;
- if (msg.command) {
- main[msg.command].apply(main, msg.args);
- }
- else if (msg.init) {
- initBaseUrls(msg.tlns);
- require(null, "ace/lib/fixoldbrowsers");
- sender = initSender();
- var clazz = require(null, msg.module)[msg.classname];
- main = new clazz(sender);
- }
- else if (msg.event && sender) {
- sender._emit(msg.event, msg.data);
- }
-};
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var Mirror = require("../worker/mirror").Mirror;
-var coffee = require("../mode/coffee/coffee-script");
-
-window.addEventListener = function() {};
-
-
-var Worker = exports.Worker = function(sender) {
- Mirror.call(this, sender);
- this.setTimeout(200);
-};
-
-oop.inherits(Worker, Mirror);
-
-(function() {
-
- this.onUpdate = function() {
- var value = this.doc.getValue();
-
- try {
- coffee.parse(value);
- } catch(e) {
- var m = e.message.match(/Parse error on line (\d+): (.*)/);
- if (m) {
- this.sender.emit("error", {
- row: parseInt(m[1], 10) - 1,
- column: null,
- text: m[2],
- type: "error"
- });
- return;
- }
-
- if (e instanceof SyntaxError) {
- var m = e.message.match(/ on line (\d+)/);
- if (m) {
- this.sender.emit("error", {
- row: parseInt(m[1], 10) - 1,
- column: null,
- text: e.message.replace(m[0], ""),
- type: "error"
- });
- }
- }
- return;
- }
- this.sender.emit("ok");
- };
-
-}).call(Worker.prototype);
-
-});
-define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
-
-
-var Document = require("../document").Document;
-var lang = require("../lib/lang");
-
-var Mirror = exports.Mirror = function(sender) {
- this.sender = sender;
- var doc = this.doc = new Document("");
-
- var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
-
- var _self = this;
- sender.on("change", function(e) {
- doc.applyDeltas([e.data]);
- deferredUpdate.schedule(_self.$timeout);
- });
-};
-
-(function() {
-
- this.$timeout = 500;
-
- this.setTimeout = function(timeout) {
- this.$timeout = timeout;
- };
-
- this.setValue = function(value) {
- this.doc.setValue(value);
- this.deferredUpdate.schedule(this.$timeout);
- };
-
- this.getValue = function(callbackId) {
- this.sender.callback(this.doc.getValue(), callbackId);
- };
-
- this.onUpdate = function() {
- // abstract method
- };
-
-}).call(Mirror.prototype);
-
-});
-
-define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-
-define('ace/mode/coffee/coffee-script', ['require', 'exports', 'module' , 'ace/mode/coffee/lexer', 'ace/mode/coffee/parser', 'ace/mode/coffee/nodes'], function(require, exports, module) {
-
- var Lexer = require("./lexer").Lexer;
- var parser = require("./parser");
-
- var lexer = new Lexer();
- parser.lexer = {
- lex: function() {
- var tag, _ref2;
- _ref2 = this.tokens[this.pos++] || [''], tag = _ref2[0], this.yytext = _ref2[1], this.yylineno = _ref2[2];
- return tag;
- },
- setInput: function(tokens) {
- this.tokens = tokens;
- return this.pos = 0;
- },
- upcomingInput: function() {
- return "";
- }
- };
- parser.yy = require('./nodes');
-
- exports.parse = function(code) {
- return parser.parse(lexer.tokenize(code));
- };
-});
-
-define('ace/mode/coffee/lexer', ['require', 'exports', 'module' , 'ace/mode/coffee/rewriter', 'ace/mode/coffee/helpers'], function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
-
- var BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, WHITESPACE, compact, count, key, last, starts, _ref, _ref1,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
- _ref = require('./rewriter'), Rewriter = _ref.Rewriter, INVERSES = _ref.INVERSES;
-
- _ref1 = require('./helpers'), count = _ref1.count, starts = _ref1.starts, compact = _ref1.compact, last = _ref1.last;
-
- exports.Lexer = Lexer = (function() {
-
- Lexer.name = 'Lexer';
-
- function Lexer() {}
-
- Lexer.prototype.tokenize = function(code, opts) {
- var i, tag;
- if (opts == null) opts = {};
- if (WHITESPACE.test(code)) code = "\n" + code;
- code = code.replace(/\r/g, '').replace(TRAILING_SPACES, '');
- this.code = code;
- this.line = opts.line || 0;
- this.indent = 0;
- this.indebt = 0;
- this.outdebt = 0;
- this.indents = [];
- this.ends = [];
- this.tokens = [];
- i = 0;
- while (this.chunk = code.slice(i)) {
- i += this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.heredocToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();
- }
- this.closeIndentation();
- if (tag = this.ends.pop()) this.error("missing " + tag);
- if (opts.rewrite === false) return this.tokens;
- return (new Rewriter).rewrite(this.tokens);
- };
-
- Lexer.prototype.identifierToken = function() {
- var colon, forcedIdentifier, id, input, match, prev, tag, _ref2, _ref3;
- if (!(match = IDENTIFIER.exec(this.chunk))) return 0;
- input = match[0], id = match[1], colon = match[2];
- if (id === 'own' && this.tag() === 'FOR') {
- this.token('OWN', id);
- return id.length;
- }
- forcedIdentifier = colon || (prev = last(this.tokens)) && (((_ref2 = prev[0]) === '.' || _ref2 === '?.' || _ref2 === '::') || !prev.spaced && prev[0] === '@');
- tag = 'IDENTIFIER';
- if (!forcedIdentifier && (__indexOf.call(JS_KEYWORDS, id) >= 0 || __indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
- tag = id.toUpperCase();
- if (tag === 'WHEN' && (_ref3 = this.tag(), __indexOf.call(LINE_BREAK, _ref3) >= 0)) {
- tag = 'LEADING_WHEN';
- } else if (tag === 'FOR') {
- this.seenFor = true;
- } else if (tag === 'UNLESS') {
- tag = 'IF';
- } else if (__indexOf.call(UNARY, tag) >= 0) {
- tag = 'UNARY';
- } else if (__indexOf.call(RELATION, tag) >= 0) {
- if (tag !== 'INSTANCEOF' && this.seenFor) {
- tag = 'FOR' + tag;
- this.seenFor = false;
- } else {
- tag = 'RELATION';
- if (this.value() === '!') {
- this.tokens.pop();
- id = '!' + id;
- }
- }
- }
- }
- if (__indexOf.call(JS_FORBIDDEN, id) >= 0) {
- if (forcedIdentifier) {
- tag = 'IDENTIFIER';
- id = new String(id);
- id.reserved = true;
- } else if (__indexOf.call(RESERVED, id) >= 0) {
- this.error("reserved word \"" + id + "\"");
- }
- }
- if (!forcedIdentifier) {
- if (__indexOf.call(COFFEE_ALIASES, id) >= 0) id = COFFEE_ALIAS_MAP[id];
- tag = (function() {
- switch (id) {
- case '!':
- return 'UNARY';
- case '==':
- case '!=':
- return 'COMPARE';
- case '&&':
- case '||':
- return 'LOGIC';
- case 'true':
- case 'false':
- case 'null':
- case 'undefined':
- return 'BOOL';
- case 'break':
- case 'continue':
- return 'STATEMENT';
- default:
- return tag;
- }
- })();
- }
- this.token(tag, id);
- if (colon) this.token(':', ':');
- return input.length;
- };
-
- Lexer.prototype.numberToken = function() {
- var binaryLiteral, lexedLength, match, number, octalLiteral;
- if (!(match = NUMBER.exec(this.chunk))) return 0;
- number = match[0];
- if (/E/.test(number)) {
- this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'");
- } else if (/[BOX]/.test(number)) {
- this.error("radix prefix '" + number + "' must be lowercase");
- } else if (/^0[89]/.test(number)) {
- this.error("decimal literal '" + number + "' must not be prefixed with '0'");
- } else if (/^0[0-7]/.test(number)) {
- this.error("octal literal '" + number + "' must be prefixed with '0o'");
- }
- lexedLength = number.length;
- if (octalLiteral = /0o([0-7]+)/.exec(number)) {
- number = (parseInt(octalLiteral[1], 8)).toString();
- }
- if (binaryLiteral = /0b([01]+)/.exec(number)) {
- number = (parseInt(binaryLiteral[1], 2)).toString();
- }
- this.token('NUMBER', number);
- return lexedLength;
- };
-
- Lexer.prototype.stringToken = function() {
- var match, octalEsc, string;
- switch (this.chunk.charAt(0)) {
- case "'":
- if (!(match = SIMPLESTR.exec(this.chunk))) return 0;
- this.token('STRING', (string = match[0]).replace(MULTILINER, '\\\n'));
- break;
- case '"':
- if (!(string = this.balancedString(this.chunk, '"'))) return 0;
- if (0 < string.indexOf('#{', 1)) {
- this.interpolateString(string.slice(1, -1));
- } else {
- this.token('STRING', this.escapeLines(string));
- }
- break;
- default:
- return 0;
- }
- if (octalEsc = /^(?:\\.|[^\\])*\\[0-7]/.test(string)) {
- this.error("octal escape sequences " + string + " are not allowed");
- }
- this.line += count(string, '\n');
- return string.length;
- };
-
- Lexer.prototype.heredocToken = function() {
- var doc, heredoc, match, quote;
- if (!(match = HEREDOC.exec(this.chunk))) return 0;
- heredoc = match[0];
- quote = heredoc.charAt(0);
- doc = this.sanitizeHeredoc(match[2], {
- quote: quote,
- indent: null
- });
- if (quote === '"' && 0 <= doc.indexOf('#{')) {
- this.interpolateString(doc, {
- heredoc: true
- });
- } else {
- this.token('STRING', this.makeString(doc, quote, true));
- }
- this.line += count(heredoc, '\n');
- return heredoc.length;
- };
-
- Lexer.prototype.commentToken = function() {
- var comment, here, match;
- if (!(match = this.chunk.match(COMMENT))) return 0;
- comment = match[0], here = match[1];
- if (here) {
- this.token('HERECOMMENT', this.sanitizeHeredoc(here, {
- herecomment: true,
- indent: Array(this.indent + 1).join(' ')
- }));
- }
- this.line += count(comment, '\n');
- return comment.length;
- };
-
- Lexer.prototype.jsToken = function() {
- var match, script;
- if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) {
- return 0;
- }
- this.token('JS', (script = match[0]).slice(1, -1));
- return script.length;
- };
-
- Lexer.prototype.regexToken = function() {
- var flags, length, match, prev, regex, _ref2, _ref3;
- if (this.chunk.charAt(0) !== '/') return 0;
- if (match = HEREGEX.exec(this.chunk)) {
- length = this.heregexToken(match);
- this.line += count(match[0], '\n');
- return length;
- }
- prev = last(this.tokens);
- if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) {
- return 0;
- }
- if (!(match = REGEX.exec(this.chunk))) return 0;
- _ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2];
- if (regex.slice(0, 2) === '/*') {
- this.error('regular expressions cannot begin with `*`');
- }
- if (regex === '//') regex = '/(?:)/';
- this.token('REGEX', "" + regex + flags);
- return match.length;
- };
-
- Lexer.prototype.heregexToken = function(match) {
- var body, flags, heregex, re, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4, _ref5;
- heregex = match[0], body = match[1], flags = match[2];
- if (0 > body.indexOf('#{')) {
- re = body.replace(HEREGEX_OMIT, '').replace(/\//g, '\\/');
- if (re.match(/^\*/)) {
- this.error('regular expressions cannot begin with `*`');
- }
- this.token('REGEX', "/" + (re || '(?:)') + "/" + flags);
- return heregex.length;
- }
- this.token('IDENTIFIER', 'RegExp');
- this.tokens.push(['CALL_START', '(']);
- tokens = [];
- _ref2 = this.interpolateString(body, {
- regex: true
- });
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- _ref3 = _ref2[_i], tag = _ref3[0], value = _ref3[1];
- if (tag === 'TOKENS') {
- tokens.push.apply(tokens, value);
- } else {
- if (!(value = value.replace(HEREGEX_OMIT, ''))) continue;
- value = value.replace(/\\/g, '\\\\');
- tokens.push(['STRING', this.makeString(value, '"', true)]);
- }
- tokens.push(['+', '+']);
- }
- tokens.pop();
- if (((_ref4 = tokens[0]) != null ? _ref4[0] : void 0) !== 'STRING') {
- this.tokens.push(['STRING', '""'], ['+', '+']);
- }
- (_ref5 = this.tokens).push.apply(_ref5, tokens);
- if (flags) this.tokens.push([',', ','], ['STRING', '"' + flags + '"']);
- this.token(')', ')');
- return heregex.length;
- };
-
- Lexer.prototype.lineToken = function() {
- var diff, indent, match, noNewlines, prev, size;
- if (!(match = MULTI_DENT.exec(this.chunk))) return 0;
- indent = match[0];
- this.line += count(indent, '\n');
- this.seenFor = false;
- prev = last(this.tokens, 1);
- size = indent.length - 1 - indent.lastIndexOf('\n');
- noNewlines = this.unfinished();
- if (size - this.indebt === this.indent) {
- if (noNewlines) {
- this.suppressNewlines();
- } else {
- this.newlineToken();
- }
- return indent.length;
- }
- if (size > this.indent) {
- if (noNewlines) {
- this.indebt = size - this.indent;
- this.suppressNewlines();
- return indent.length;
- }
- diff = size - this.indent + this.outdebt;
- this.token('INDENT', diff);
- this.indents.push(diff);
- this.ends.push('OUTDENT');
- this.outdebt = this.indebt = 0;
- } else {
- this.indebt = 0;
- this.outdentToken(this.indent - size, noNewlines);
- }
- this.indent = size;
- return indent.length;
- };
-
- Lexer.prototype.outdentToken = function(moveOut, noNewlines) {
- var dent, len;
- while (moveOut > 0) {
- len = this.indents.length - 1;
- if (this.indents[len] === void 0) {
- moveOut = 0;
- } else if (this.indents[len] === this.outdebt) {
- moveOut -= this.outdebt;
- this.outdebt = 0;
- } else if (this.indents[len] < this.outdebt) {
- this.outdebt -= this.indents[len];
- moveOut -= this.indents[len];
- } else {
- dent = this.indents.pop() - this.outdebt;
- moveOut -= dent;
- this.outdebt = 0;
- this.pair('OUTDENT');
- this.token('OUTDENT', dent);
- }
- }
- if (dent) this.outdebt -= moveOut;
- while (this.value() === ';') {
- this.tokens.pop();
- }
- if (!(this.tag() === 'TERMINATOR' || noNewlines)) {
- this.token('TERMINATOR', '\n');
- }
- return this;
- };
-
- Lexer.prototype.whitespaceToken = function() {
- var match, nline, prev;
- if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) {
- return 0;
- }
- prev = last(this.tokens);
- if (prev) prev[match ? 'spaced' : 'newLine'] = true;
- if (match) {
- return match[0].length;
- } else {
- return 0;
- }
- };
-
- Lexer.prototype.newlineToken = function() {
- while (this.value() === ';') {
- this.tokens.pop();
- }
- if (this.tag() !== 'TERMINATOR') this.token('TERMINATOR', '\n');
- return this;
- };
-
- Lexer.prototype.suppressNewlines = function() {
- if (this.value() === '\\') this.tokens.pop();
- return this;
- };
-
- Lexer.prototype.literalToken = function() {
- var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5;
- if (match = OPERATOR.exec(this.chunk)) {
- value = match[0];
- if (CODE.test(value)) this.tagParameters();
- } else {
- value = this.chunk.charAt(0);
- }
- tag = value;
- prev = last(this.tokens);
- if (value === '=' && prev) {
- if (!prev[1].reserved && (_ref2 = prev[1], __indexOf.call(JS_FORBIDDEN, _ref2) >= 0)) {
- this.error("reserved word \"" + (this.value()) + "\" can't be assigned");
- }
- if ((_ref3 = prev[1]) === '||' || _ref3 === '&&') {
- prev[0] = 'COMPOUND_ASSIGN';
- prev[1] += '=';
- return value.length;
- }
- }
- if (value === ';') {
- this.seenFor = false;
- tag = 'TERMINATOR';
- } else if (__indexOf.call(MATH, value) >= 0) {
- tag = 'MATH';
- } else if (__indexOf.call(COMPARE, value) >= 0) {
- tag = 'COMPARE';
- } else if (__indexOf.call(COMPOUND_ASSIGN, value) >= 0) {
- tag = 'COMPOUND_ASSIGN';
- } else if (__indexOf.call(UNARY, value) >= 0) {
- tag = 'UNARY';
- } else if (__indexOf.call(SHIFT, value) >= 0) {
- tag = 'SHIFT';
- } else if (__indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) {
- tag = 'LOGIC';
- } else if (prev && !prev.spaced) {
- if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) {
- if (prev[0] === '?') prev[0] = 'FUNC_EXIST';
- tag = 'CALL_START';
- } else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) {
- tag = 'INDEX_START';
- switch (prev[0]) {
- case '?':
- prev[0] = 'INDEX_SOAK';
- }
- }
- }
- switch (value) {
- case '(':
- case '{':
- case '[':
- this.ends.push(INVERSES[value]);
- break;
- case ')':
- case '}':
- case ']':
- this.pair(value);
- }
- this.token(tag, value);
- return value.length;
- };
-
- Lexer.prototype.sanitizeHeredoc = function(doc, options) {
- var attempt, herecomment, indent, match, _ref2;
- indent = options.indent, herecomment = options.herecomment;
- if (herecomment) {
- if (HEREDOC_ILLEGAL.test(doc)) {
- this.error("block comment cannot contain \"*/\", starting");
- }
- if (doc.indexOf('\n') <= 0) return doc;
- } else {
- while (match = HEREDOC_INDENT.exec(doc)) {
- attempt = match[1];
- if (indent === null || (0 < (_ref2 = attempt.length) && _ref2 < indent.length)) {
- indent = attempt;
- }
- }
- }
- if (indent) doc = doc.replace(RegExp("\\n" + indent, "g"), '\n');
- if (!herecomment) doc = doc.replace(/^\n/, '');
- return doc;
- };
-
- Lexer.prototype.tagParameters = function() {
- var i, stack, tok, tokens;
- if (this.tag() !== ')') return this;
- stack = [];
- tokens = this.tokens;
- i = tokens.length;
- tokens[--i][0] = 'PARAM_END';
- while (tok = tokens[--i]) {
- switch (tok[0]) {
- case ')':
- stack.push(tok);
- break;
- case '(':
- case 'CALL_START':
- if (stack.length) {
- stack.pop();
- } else if (tok[0] === '(') {
- tok[0] = 'PARAM_START';
- return this;
- } else {
- return this;
- }
- }
- }
- return this;
- };
-
- Lexer.prototype.closeIndentation = function() {
- return this.outdentToken(this.indent);
- };
-
- Lexer.prototype.balancedString = function(str, end) {
- var continueCount, i, letter, match, prev, stack, _i, _ref2;
- continueCount = 0;
- stack = [end];
- for (i = _i = 1, _ref2 = str.length; 1 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 1 <= _ref2 ? ++_i : --_i) {
- if (continueCount) {
- --continueCount;
- continue;
- }
- switch (letter = str.charAt(i)) {
- case '\\':
- ++continueCount;
- continue;
- case end:
- stack.pop();
- if (!stack.length) return str.slice(0, i + 1 || 9e9);
- end = stack[stack.length - 1];
- continue;
- }
- if (end === '}' && (letter === '"' || letter === "'")) {
- stack.push(end = letter);
- } else if (end === '}' && letter === '/' && (match = HEREGEX.exec(str.slice(i)) || REGEX.exec(str.slice(i)))) {
- continueCount += match[0].length - 1;
- } else if (end === '}' && letter === '{') {
- stack.push(end = '}');
- } else if (end === '"' && prev === '#' && letter === '{') {
- stack.push(end = '}');
- }
- prev = letter;
- }
- return this.error("missing " + (stack.pop()) + ", starting");
- };
-
- Lexer.prototype.interpolateString = function(str, options) {
- var expr, heredoc, i, inner, interpolated, len, letter, nested, pi, regex, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4;
- if (options == null) options = {};
- heredoc = options.heredoc, regex = options.regex;
- tokens = [];
- pi = 0;
- i = -1;
- while (letter = str.charAt(i += 1)) {
- if (letter === '\\') {
- i += 1;
- continue;
- }
- if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) {
- continue;
- }
- if (pi < i) tokens.push(['NEOSTRING', str.slice(pi, i)]);
- inner = expr.slice(1, -1);
- if (inner.length) {
- nested = new Lexer().tokenize(inner, {
- line: this.line,
- rewrite: false
- });
- nested.pop();
- if (((_ref2 = nested[0]) != null ? _ref2[0] : void 0) === 'TERMINATOR') {
- nested.shift();
- }
- if (len = nested.length) {
- if (len > 1) {
- nested.unshift(['(', '(', this.line]);
- nested.push([')', ')', this.line]);
- }
- tokens.push(['TOKENS', nested]);
- }
- }
- i += expr.length;
- pi = i + 1;
- }
- if ((i > pi && pi < str.length)) tokens.push(['NEOSTRING', str.slice(pi)]);
- if (regex) return tokens;
- if (!tokens.length) return this.token('STRING', '""');
- if (tokens[0][0] !== 'NEOSTRING') tokens.unshift(['', '']);
- if (interpolated = tokens.length > 1) this.token('(', '(');
- for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) {
- _ref3 = tokens[i], tag = _ref3[0], value = _ref3[1];
- if (i) this.token('+', '+');
- if (tag === 'TOKENS') {
- (_ref4 = this.tokens).push.apply(_ref4, value);
- } else {
- this.token('STRING', this.makeString(value, '"', heredoc));
- }
- }
- if (interpolated) this.token(')', ')');
- return tokens;
- };
-
- Lexer.prototype.pair = function(tag) {
- var size, wanted;
- if (tag !== (wanted = last(this.ends))) {
- if ('OUTDENT' !== wanted) this.error("unmatched " + tag);
- this.indent -= size = last(this.indents);
- this.outdentToken(size, true);
- return this.pair(tag);
- }
- return this.ends.pop();
- };
-
- Lexer.prototype.token = function(tag, value) {
- return this.tokens.push([tag, value, this.line]);
- };
-
- Lexer.prototype.tag = function(index, tag) {
- var tok;
- return (tok = last(this.tokens, index)) && (tag ? tok[0] = tag : tok[0]);
- };
-
- Lexer.prototype.value = function(index, val) {
- var tok;
- return (tok = last(this.tokens, index)) && (val ? tok[1] = val : tok[1]);
- };
-
- Lexer.prototype.unfinished = function() {
- var _ref2;
- return LINE_CONTINUER.test(this.chunk) || ((_ref2 = this.tag()) === '\\' || _ref2 === '.' || _ref2 === '?.' || _ref2 === 'UNARY' || _ref2 === 'MATH' || _ref2 === '+' || _ref2 === '-' || _ref2 === 'SHIFT' || _ref2 === 'RELATION' || _ref2 === 'COMPARE' || _ref2 === 'LOGIC' || _ref2 === 'THROW' || _ref2 === 'EXTENDS');
- };
-
- Lexer.prototype.escapeLines = function(str, heredoc) {
- return str.replace(MULTILINER, heredoc ? '\\n' : '');
- };
-
- Lexer.prototype.makeString = function(body, quote, heredoc) {
- if (!body) return quote + quote;
- body = body.replace(/\\([\s\S])/g, function(match, contents) {
- if (contents === '\n' || contents === quote) {
- return contents;
- } else {
- return match;
- }
- });
- body = body.replace(RegExp("" + quote, "g"), '\\$&');
- return quote + this.escapeLines(body, heredoc) + quote;
- };
-
- Lexer.prototype.error = function(message) {
- throw SyntaxError("" + message + " on line " + (this.line + 1));
- };
-
- return Lexer;
-
- })();
-
- JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super'];
-
- COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];
-
- COFFEE_ALIAS_MAP = {
- and: '&&',
- or: '||',
- is: '==',
- isnt: '!=',
- not: '!',
- yes: 'true',
- no: 'false',
- on: 'true',
- off: 'false'
- };
-
- COFFEE_ALIASES = (function() {
- var _results;
- _results = [];
- for (key in COFFEE_ALIAS_MAP) {
- _results.push(key);
- }
- return _results;
- })();
-
- COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
-
- RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield'];
-
- STRICT_PROSCRIBED = ['arguments', 'eval'];
-
- JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);
-
- exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED);
-
- exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED;
-
- IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/;
-
- NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;
-
- HEREDOC = /^("""|''')([\s\S]*?)(?:\n[^\n\S]*)?\1/;
-
- OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})/;
-
- WHITESPACE = /^[^\n\S]+/;
-
- COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)?$)|^(?:\s*#(?!##[^#]).*)+/;
-
- CODE = /^[-=]>/;
-
- MULTI_DENT = /^(?:\n[^\n\S]*)+/;
-
- SIMPLESTR = /^'[^\\']*(?:\\.[^\\']*)*'/;
-
- JSTOKEN = /^`[^\\`]*(?:\\.[^\\`]*)*`/;
-
- REGEX = /^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/;
-
- HEREGEX = /^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?!\w)/;
-
- HEREGEX_OMIT = /\s+(?:#.*)?/g;
-
- MULTILINER = /\n/g;
-
- HEREDOC_INDENT = /\n+([^\n\S]*)/g;
-
- HEREDOC_ILLEGAL = /\*\//;
-
- LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/;
-
- TRAILING_SPACES = /\s+$/;
-
- COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|='];
-
- UNARY = ['!', '~', 'NEW', 'TYPEOF', 'DELETE', 'DO'];
-
- LOGIC = ['&&', '||', '&', '|', '^'];
-
- SHIFT = ['<<', '>>', '>>>'];
-
- COMPARE = ['==', '!=', '<', '>', '<=', '>='];
-
- MATH = ['*', '/', '%'];
-
- RELATION = ['IN', 'OF', 'INSTANCEOF'];
-
- BOOL = ['TRUE', 'FALSE', 'NULL', 'UNDEFINED'];
-
- NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', '++', '--', ']'];
-
- NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING');
-
- CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER'];
-
- INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL');
-
- LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
-
-
-});
-
-define('ace/mode/coffee/rewriter', ['require', 'exports', 'module' ], function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
-
- var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, left, rite, _i, _len, _ref,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
- __slice = [].slice;
-
- exports.Rewriter = (function() {
-
- Rewriter.name = 'Rewriter';
-
- function Rewriter() {}
-
- Rewriter.prototype.rewrite = function(tokens) {
- this.tokens = tokens;
- this.removeLeadingNewlines();
- this.removeMidExpressionNewlines();
- this.closeOpenCalls();
- this.closeOpenIndexes();
- this.addImplicitIndentation();
- this.tagPostfixConditionals();
- this.addImplicitBraces();
- this.addImplicitParentheses();
- return this.tokens;
- };
-
- Rewriter.prototype.scanTokens = function(block) {
- var i, token, tokens;
- tokens = this.tokens;
- i = 0;
- while (token = tokens[i]) {
- i += block.call(this, token, i, tokens);
- }
- return true;
- };
-
- Rewriter.prototype.detectEnd = function(i, condition, action) {
- var levels, token, tokens, _ref, _ref1;
- tokens = this.tokens;
- levels = 0;
- while (token = tokens[i]) {
- if (levels === 0 && condition.call(this, token, i)) {
- return action.call(this, token, i);
- }
- if (!token || levels < 0) return action.call(this, token, i - 1);
- if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) {
- levels += 1;
- } else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) {
- levels -= 1;
- }
- i += 1;
- }
- return i - 1;
- };
-
- Rewriter.prototype.removeLeadingNewlines = function() {
- var i, tag, _i, _len, _ref;
- _ref = this.tokens;
- for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
- tag = _ref[i][0];
- if (tag !== 'TERMINATOR') break;
- }
- if (i) return this.tokens.splice(0, i);
- };
-
- Rewriter.prototype.removeMidExpressionNewlines = function() {
- return this.scanTokens(function(token, i, tokens) {
- var _ref;
- if (!(token[0] === 'TERMINATOR' && (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0))) {
- return 1;
- }
- tokens.splice(i, 1);
- return 0;
- });
- };
-
- Rewriter.prototype.closeOpenCalls = function() {
- var action, condition;
- condition = function(token, i) {
- var _ref;
- return ((_ref = token[0]) === ')' || _ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')';
- };
- action = function(token, i) {
- return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';
- };
- return this.scanTokens(function(token, i) {
- if (token[0] === 'CALL_START') this.detectEnd(i + 1, condition, action);
- return 1;
- });
- };
-
- Rewriter.prototype.closeOpenIndexes = function() {
- var action, condition;
- condition = function(token, i) {
- var _ref;
- return (_ref = token[0]) === ']' || _ref === 'INDEX_END';
- };
- action = function(token, i) {
- return token[0] = 'INDEX_END';
- };
- return this.scanTokens(function(token, i) {
- if (token[0] === 'INDEX_START') this.detectEnd(i + 1, condition, action);
- return 1;
- });
- };
-
- Rewriter.prototype.addImplicitBraces = function() {
- var action, condition, sameLine, stack, start, startIndent, startsLine;
- stack = [];
- start = null;
- startsLine = null;
- sameLine = true;
- startIndent = 0;
- condition = function(token, i) {
- var one, tag, three, two, _ref, _ref1;
- _ref = this.tokens.slice(i + 1, (i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2];
- if ('HERECOMMENT' === (one != null ? one[0] : void 0)) return false;
- tag = token[0];
- if (__indexOf.call(LINEBREAKS, tag) >= 0) sameLine = false;
- return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine)) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT'));
- };
- action = function(token, i) {
- var tok;
- tok = this.generate('}', '}', token[2]);
- return this.tokens.splice(i, 0, tok);
- };
- return this.scanTokens(function(token, i, tokens) {
- var ago, idx, prevTag, tag, tok, value, _ref, _ref1;
- if (_ref = (tag = token[0]), __indexOf.call(EXPRESSION_START, _ref) >= 0) {
- stack.push([(tag === 'INDENT' && this.tag(i - 1) === '{' ? '{' : tag), i]);
- return 1;
- }
- if (__indexOf.call(EXPRESSION_END, tag) >= 0) {
- start = stack.pop();
- return 1;
- }
- if (!(tag === ':' && ((ago = this.tag(i - 2)) === ':' || ((_ref1 = stack[stack.length - 1]) != null ? _ref1[0] : void 0) !== '{'))) {
- return 1;
- }
- sameLine = true;
- stack.push(['{']);
- idx = ago === '@' ? i - 2 : i - 1;
- while (this.tag(idx - 2) === 'HERECOMMENT') {
- idx -= 2;
- }
- prevTag = this.tag(idx - 1);
- startsLine = !prevTag || (__indexOf.call(LINEBREAKS, prevTag) >= 0);
- value = new String('{');
- value.generated = true;
- tok = this.generate('{', value, token[2]);
- tokens.splice(idx, 0, tok);
- this.detectEnd(i + 2, condition, action);
- return 2;
- });
- };
-
- Rewriter.prototype.addImplicitParentheses = function() {
- var action, condition, noCall, seenControl, seenSingle;
- noCall = seenSingle = seenControl = false;
- condition = function(token, i) {
- var post, tag, _ref, _ref1;
- tag = token[0];
- if (!seenSingle && token.fromThen) return true;
- if (tag === 'IF' || tag === 'ELSE' || tag === 'CATCH' || tag === '->' || tag === '=>' || tag === 'CLASS') {
- seenSingle = true;
- }
- if (tag === 'IF' || tag === 'ELSE' || tag === 'SWITCH' || tag === 'TRY' || tag === '=') {
- seenControl = true;
- }
- if ((tag === '.' || tag === '?.' || tag === '::') && this.tag(i - 1) === 'OUTDENT') {
- return true;
- }
- return !token.generated && this.tag(i - 1) !== ',' && (__indexOf.call(IMPLICIT_END, tag) >= 0 || (tag === 'INDENT' && !seenControl)) && (tag !== 'INDENT' || (((_ref = this.tag(i - 2)) !== 'CLASS' && _ref !== 'EXTENDS') && (_ref1 = this.tag(i - 1), __indexOf.call(IMPLICIT_BLOCK, _ref1) < 0) && !((post = this.tokens[i + 1]) && post.generated && post[0] === '{')));
- };
- action = function(token, i) {
- return this.tokens.splice(i, 0, this.generate('CALL_END', ')', token[2]));
- };
- return this.scanTokens(function(token, i, tokens) {
- var callObject, current, next, prev, tag, _ref, _ref1, _ref2;
- tag = token[0];
- if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR' || tag === 'WHILE') {
- noCall = true;
- }
- _ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
- callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref1 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref1) >= 0);
- seenSingle = false;
- seenControl = false;
- if (__indexOf.call(LINEBREAKS, tag) >= 0) noCall = false;
- if (prev && !prev.spaced && tag === '?') token.call = true;
- if (token.fromThen) return 1;
- if (!(callObject || (prev != null ? prev.spaced : void 0) && (prev.call || (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0)) && (__indexOf.call(IMPLICIT_CALL, tag) >= 0 || !(token.spaced || token.newLine) && __indexOf.call(IMPLICIT_UNSPACED_CALL, tag) >= 0))) {
- return 1;
- }
- tokens.splice(i, 0, this.generate('CALL_START', '(', token[2]));
- this.detectEnd(i + 1, condition, action);
- if (prev[0] === '?') prev[0] = 'FUNC_EXIST';
- return 2;
- });
- };
-
- Rewriter.prototype.addImplicitIndentation = function() {
- var action, condition, indent, outdent, starter;
- starter = indent = outdent = null;
- condition = function(token, i) {
- var _ref;
- return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'ELSE' && (starter !== 'IF' && starter !== 'THEN'));
- };
- action = function(token, i) {
- return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
- };
- return this.scanTokens(function(token, i, tokens) {
- var tag, _ref, _ref1;
- tag = token[0];
- if (tag === 'TERMINATOR' && this.tag(i + 1) === 'THEN') {
- tokens.splice(i, 1);
- return 0;
- }
- if (tag === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
- tokens.splice.apply(tokens, [i, 0].concat(__slice.call(this.indentation(token))));
- return 2;
- }
- if (tag === 'CATCH' && ((_ref = this.tag(i + 2)) === 'OUTDENT' || _ref === 'TERMINATOR' || _ref === 'FINALLY')) {
- tokens.splice.apply(tokens, [i + 2, 0].concat(__slice.call(this.indentation(token))));
- return 4;
- }
- if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
- starter = tag;
- _ref1 = this.indentation(token, true), indent = _ref1[0], outdent = _ref1[1];
- if (starter === 'THEN') indent.fromThen = true;
- tokens.splice(i + 1, 0, indent);
- this.detectEnd(i + 2, condition, action);
- if (tag === 'THEN') tokens.splice(i, 1);
- return 1;
- }
- return 1;
- });
- };
-
- Rewriter.prototype.tagPostfixConditionals = function() {
- var action, condition, original;
- original = null;
- condition = function(token, i) {
- var _ref;
- return (_ref = token[0]) === 'TERMINATOR' || _ref === 'INDENT';
- };
- action = function(token, i) {
- if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
- return original[0] = 'POST_' + original[0];
- }
- };
- return this.scanTokens(function(token, i) {
- if (token[0] !== 'IF') return 1;
- original = token;
- this.detectEnd(i + 1, condition, action);
- return 1;
- });
- };
-
- Rewriter.prototype.indentation = function(token, implicit) {
- var indent, outdent;
- if (implicit == null) implicit = false;
- indent = ['INDENT', 2, token[2]];
- outdent = ['OUTDENT', 2, token[2]];
- if (implicit) indent.generated = outdent.generated = true;
- return [indent, outdent];
- };
-
- Rewriter.prototype.generate = function(tag, value, line) {
- var tok;
- tok = [tag, value, line];
- tok.generated = true;
- return tok;
- };
-
- Rewriter.prototype.tag = function(i) {
- var _ref;
- return (_ref = this.tokens[i]) != null ? _ref[0] : void 0;
- };
-
- return Rewriter;
-
- })();
-
- BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END']];
-
- exports.INVERSES = INVERSES = {};
-
- EXPRESSION_START = [];
-
- EXPRESSION_END = [];
-
- for (_i = 0, _len = BALANCED_PAIRS.length; _i < _len; _i++) {
- _ref = BALANCED_PAIRS[_i], left = _ref[0], rite = _ref[1];
- EXPRESSION_START.push(INVERSES[rite] = left);
- EXPRESSION_END.push(INVERSES[left] = rite);
- }
-
- EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
-
- IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
-
- IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++'];
-
- IMPLICIT_UNSPACED_CALL = ['+', '-'];
-
- IMPLICIT_BLOCK = ['->', '=>', '{', '[', ','];
-
- IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];
-
- SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];
-
- SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'];
-
- LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
-
-
-});
-
-define('ace/mode/coffee/helpers', ['require', 'exports', 'module' ], function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
-
- var extend, flatten;
-
- exports.starts = function(string, literal, start) {
- return literal === string.substr(start, literal.length);
- };
-
- exports.ends = function(string, literal, back) {
- var len;
- len = literal.length;
- return literal === string.substr(string.length - len - (back || 0), len);
- };
-
- exports.compact = function(array) {
- var item, _i, _len, _results;
- _results = [];
- for (_i = 0, _len = array.length; _i < _len; _i++) {
- item = array[_i];
- if (item) _results.push(item);
- }
- return _results;
- };
-
- exports.count = function(string, substr) {
- var num, pos;
- num = pos = 0;
- if (!substr.length) return 1 / 0;
- while (pos = 1 + string.indexOf(substr, pos)) {
- num++;
- }
- return num;
- };
-
- exports.merge = function(options, overrides) {
- return extend(extend({}, options), overrides);
- };
-
- extend = exports.extend = function(object, properties) {
- var key, val;
- for (key in properties) {
- val = properties[key];
- object[key] = val;
- }
- return object;
- };
-
- exports.flatten = flatten = function(array) {
- var element, flattened, _i, _len;
- flattened = [];
- for (_i = 0, _len = array.length; _i < _len; _i++) {
- element = array[_i];
- if (element instanceof Array) {
- flattened = flattened.concat(flatten(element));
- } else {
- flattened.push(element);
- }
- }
- return flattened;
- };
-
- exports.del = function(obj, key) {
- var val;
- val = obj[key];
- delete obj[key];
- return val;
- };
-
- exports.last = function(array, back) {
- return array[array.length - (back || 0) - 1];
- };
-
-
-});
-
-define('ace/mode/coffee/parser', ['require', 'exports', 'module' ], function(require, exports, module) {
-/* Jison generated parser */
-
-undefined
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Comment":11,"STATEMENT":12,"Value":13,"Invocation":14,"Code":15,"Operation":16,"Assign":17,"If":18,"Try":19,"While":20,"For":21,"Switch":22,"Class":23,"Throw":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"BOOL":36,"Assignable":37,"=":38,"AssignObj":39,"ObjAssignable":40,":":41,"ThisProperty":42,"RETURN":43,"HERECOMMENT":44,"PARAM_START":45,"ParamList":46,"PARAM_END":47,"FuncGlyph":48,"->":49,"=>":50,"OptComma":51,",":52,"Param":53,"ParamVar":54,"...":55,"Array":56,"Object":57,"Splat":58,"SimpleAssignable":59,"Accessor":60,"Parenthetical":61,"Range":62,"This":63,".":64,"?.":65,"::":66,"Index":67,"INDEX_START":68,"IndexValue":69,"INDEX_END":70,"INDEX_SOAK":71,"Slice":72,"{":73,"AssignList":74,"}":75,"CLASS":76,"EXTENDS":77,"OptFuncExist":78,"Arguments":79,"SUPER":80,"FUNC_EXIST":81,"CALL_START":82,"CALL_END":83,"ArgList":84,"THIS":85,"@":86,"[":87,"]":88,"RangeDots":89,"..":90,"Arg":91,"SimpleArgs":92,"TRY":93,"Catch":94,"FINALLY":95,"CATCH":96,"THROW":97,"(":98,")":99,"WhileSource":100,"WHILE":101,"WHEN":102,"UNTIL":103,"Loop":104,"LOOP":105,"ForBody":106,"FOR":107,"ForStart":108,"ForSource":109,"ForVariables":110,"OWN":111,"ForValue":112,"FORIN":113,"FOROF":114,"BY":115,"SWITCH":116,"Whens":117,"ELSE":118,"When":119,"LEADING_WHEN":120,"IfBlock":121,"IF":122,"POST_IF":123,"UNARY":124,"-":125,"+":126,"--":127,"++":128,"?":129,"MATH":130,"SHIFT":131,"COMPARE":132,"LOGIC":133,"RELATION":134,"COMPOUND_ASSIGN":135,"$accept":0,"$end":1},
-terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"BOOL",38:"=",41:":",43:"RETURN",44:"HERECOMMENT",45:"PARAM_START",47:"PARAM_END",49:"->",50:"=>",52:",",55:"...",64:".",65:"?.",66:"::",68:"INDEX_START",70:"INDEX_END",71:"INDEX_SOAK",73:"{",75:"}",76:"CLASS",77:"EXTENDS",80:"SUPER",81:"FUNC_EXIST",82:"CALL_START",83:"CALL_END",85:"THIS",86:"@",87:"[",88:"]",90:"..",93:"TRY",95:"FINALLY",96:"CATCH",97:"THROW",98:"(",99:")",101:"WHILE",102:"WHEN",103:"UNTIL",105:"LOOP",107:"FOR",111:"OWN",113:"FORIN",114:"FOROF",115:"BY",116:"SWITCH",118:"ELSE",120:"LEADING_WHEN",122:"IF",123:"POST_IF",124:"UNARY",125:"-",126:"+",127:"--",128:"++",129:"?",130:"MATH",131:"SHIFT",132:"COMPARE",133:"LOGIC",134:"RELATION",135:"COMPOUND_ASSIGN"},
-productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[39,1],[39,3],[39,5],[39,1],[40,1],[40,1],[40,1],[10,2],[10,1],[11,1],[15,5],[15,2],[48,1],[48,1],[51,0],[51,1],[46,0],[46,1],[46,3],[53,1],[53,2],[53,3],[54,1],[54,1],[54,1],[54,1],[58,2],[59,1],[59,2],[59,2],[59,1],[37,1],[37,1],[37,1],[13,1],[13,1],[13,1],[13,1],[13,1],[60,2],[60,2],[60,2],[60,1],[60,1],[67,3],[67,2],[69,1],[69,1],[57,4],[74,0],[74,1],[74,3],[74,4],[74,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[78,0],[78,1],[79,2],[79,4],[63,1],[63,1],[42,2],[56,2],[56,4],[89,1],[89,1],[62,5],[72,3],[72,2],[72,2],[72,1],[84,1],[84,3],[84,4],[84,4],[84,6],[91,1],[91,1],[92,1],[92,3],[19,2],[19,3],[19,4],[19,5],[94,3],[24,2],[61,3],[61,5],[100,2],[100,4],[100,2],[100,4],[20,2],[20,2],[20,2],[20,1],[104,2],[104,2],[21,2],[21,2],[21,2],[106,2],[106,2],[108,2],[108,3],[112,1],[112,1],[112,1],[110,1],[110,3],[109,2],[109,2],[109,4],[109,4],[109,4],[109,6],[109,6],[22,5],[22,7],[22,4],[22,6],[117,1],[117,2],[119,3],[119,4],[121,3],[121,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,3]],
-performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1:return this.$ = new yy.Block;
-break;
-case 2:return this.$ = $$[$0];
-break;
-case 3:return this.$ = $$[$0-1];
-break;
-case 4:this.$ = yy.Block.wrap([$$[$0]]);
-break;
-case 5:this.$ = $$[$0-2].push($$[$0]);
-break;
-case 6:this.$ = $$[$0-1];
-break;
-case 7:this.$ = $$[$0];
-break;
-case 8:this.$ = $$[$0];
-break;
-case 9:this.$ = $$[$0];
-break;
-case 10:this.$ = $$[$0];
-break;
-case 11:this.$ = new yy.Literal($$[$0]);
-break;
-case 12:this.$ = $$[$0];
-break;
-case 13:this.$ = $$[$0];
-break;
-case 14:this.$ = $$[$0];
-break;
-case 15:this.$ = $$[$0];
-break;
-case 16:this.$ = $$[$0];
-break;
-case 17:this.$ = $$[$0];
-break;
-case 18:this.$ = $$[$0];
-break;
-case 19:this.$ = $$[$0];
-break;
-case 20:this.$ = $$[$0];
-break;
-case 21:this.$ = $$[$0];
-break;
-case 22:this.$ = $$[$0];
-break;
-case 23:this.$ = $$[$0];
-break;
-case 24:this.$ = new yy.Block;
-break;
-case 25:this.$ = $$[$0-1];
-break;
-case 26:this.$ = new yy.Literal($$[$0]);
-break;
-case 27:this.$ = new yy.Literal($$[$0]);
-break;
-case 28:this.$ = new yy.Literal($$[$0]);
-break;
-case 29:this.$ = $$[$0];
-break;
-case 30:this.$ = new yy.Literal($$[$0]);
-break;
-case 31:this.$ = new yy.Literal($$[$0]);
-break;
-case 32:this.$ = new yy.Literal($$[$0]);
-break;
-case 33:this.$ = (function () {
- var val;
- val = new yy.Literal($$[$0]);
- if ($$[$0] === 'undefined') val.isUndefined = true;
- return val;
- }());
-break;
-case 34:this.$ = new yy.Assign($$[$0-2], $$[$0]);
-break;
-case 35:this.$ = new yy.Assign($$[$0-3], $$[$0]);
-break;
-case 36:this.$ = new yy.Assign($$[$0-4], $$[$0-1]);
-break;
-case 37:this.$ = new yy.Value($$[$0]);
-break;
-case 38:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object');
-break;
-case 39:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object');
-break;
-case 40:this.$ = $$[$0];
-break;
-case 41:this.$ = $$[$0];
-break;
-case 42:this.$ = $$[$0];
-break;
-case 43:this.$ = $$[$0];
-break;
-case 44:this.$ = new yy.Return($$[$0]);
-break;
-case 45:this.$ = new yy.Return;
-break;
-case 46:this.$ = new yy.Comment($$[$0]);
-break;
-case 47:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]);
-break;
-case 48:this.$ = new yy.Code([], $$[$0], $$[$0-1]);
-break;
-case 49:this.$ = 'func';
-break;
-case 50:this.$ = 'boundfunc';
-break;
-case 51:this.$ = $$[$0];
-break;
-case 52:this.$ = $$[$0];
-break;
-case 53:this.$ = [];
-break;
-case 54:this.$ = [$$[$0]];
-break;
-case 55:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 56:this.$ = new yy.Param($$[$0]);
-break;
-case 57:this.$ = new yy.Param($$[$0-1], null, true);
-break;
-case 58:this.$ = new yy.Param($$[$0-2], $$[$0]);
-break;
-case 59:this.$ = $$[$0];
-break;
-case 60:this.$ = $$[$0];
-break;
-case 61:this.$ = $$[$0];
-break;
-case 62:this.$ = $$[$0];
-break;
-case 63:this.$ = new yy.Splat($$[$0-1]);
-break;
-case 64:this.$ = new yy.Value($$[$0]);
-break;
-case 65:this.$ = $$[$0-1].add($$[$0]);
-break;
-case 66:this.$ = new yy.Value($$[$0-1], [].concat($$[$0]));
-break;
-case 67:this.$ = $$[$0];
-break;
-case 68:this.$ = $$[$0];
-break;
-case 69:this.$ = new yy.Value($$[$0]);
-break;
-case 70:this.$ = new yy.Value($$[$0]);
-break;
-case 71:this.$ = $$[$0];
-break;
-case 72:this.$ = new yy.Value($$[$0]);
-break;
-case 73:this.$ = new yy.Value($$[$0]);
-break;
-case 74:this.$ = new yy.Value($$[$0]);
-break;
-case 75:this.$ = $$[$0];
-break;
-case 76:this.$ = new yy.Access($$[$0]);
-break;
-case 77:this.$ = new yy.Access($$[$0], 'soak');
-break;
-case 78:this.$ = [new yy.Access(new yy.Literal('prototype')), new yy.Access($$[$0])];
-break;
-case 79:this.$ = new yy.Access(new yy.Literal('prototype'));
-break;
-case 80:this.$ = $$[$0];
-break;
-case 81:this.$ = $$[$0-1];
-break;
-case 82:this.$ = yy.extend($$[$0], {
- soak: true
- });
-break;
-case 83:this.$ = new yy.Index($$[$0]);
-break;
-case 84:this.$ = new yy.Slice($$[$0]);
-break;
-case 85:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated);
-break;
-case 86:this.$ = [];
-break;
-case 87:this.$ = [$$[$0]];
-break;
-case 88:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 89:this.$ = $$[$0-3].concat($$[$0]);
-break;
-case 90:this.$ = $$[$0-5].concat($$[$0-2]);
-break;
-case 91:this.$ = new yy.Class;
-break;
-case 92:this.$ = new yy.Class(null, null, $$[$0]);
-break;
-case 93:this.$ = new yy.Class(null, $$[$0]);
-break;
-case 94:this.$ = new yy.Class(null, $$[$0-1], $$[$0]);
-break;
-case 95:this.$ = new yy.Class($$[$0]);
-break;
-case 96:this.$ = new yy.Class($$[$0-1], null, $$[$0]);
-break;
-case 97:this.$ = new yy.Class($$[$0-2], $$[$0]);
-break;
-case 98:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]);
-break;
-case 99:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 100:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 101:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]);
-break;
-case 102:this.$ = new yy.Call('super', $$[$0]);
-break;
-case 103:this.$ = false;
-break;
-case 104:this.$ = true;
-break;
-case 105:this.$ = [];
-break;
-case 106:this.$ = $$[$0-2];
-break;
-case 107:this.$ = new yy.Value(new yy.Literal('this'));
-break;
-case 108:this.$ = new yy.Value(new yy.Literal('this'));
-break;
-case 109:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this');
-break;
-case 110:this.$ = new yy.Arr([]);
-break;
-case 111:this.$ = new yy.Arr($$[$0-2]);
-break;
-case 112:this.$ = 'inclusive';
-break;
-case 113:this.$ = 'exclusive';
-break;
-case 114:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]);
-break;
-case 115:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 116:this.$ = new yy.Range($$[$0-1], null, $$[$0]);
-break;
-case 117:this.$ = new yy.Range(null, $$[$0], $$[$0-1]);
-break;
-case 118:this.$ = new yy.Range(null, null, $$[$0]);
-break;
-case 119:this.$ = [$$[$0]];
-break;
-case 120:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 121:this.$ = $$[$0-3].concat($$[$0]);
-break;
-case 122:this.$ = $$[$0-2];
-break;
-case 123:this.$ = $$[$0-5].concat($$[$0-2]);
-break;
-case 124:this.$ = $$[$0];
-break;
-case 125:this.$ = $$[$0];
-break;
-case 126:this.$ = $$[$0];
-break;
-case 127:this.$ = [].concat($$[$0-2], $$[$0]);
-break;
-case 128:this.$ = new yy.Try($$[$0]);
-break;
-case 129:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]);
-break;
-case 130:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]);
-break;
-case 131:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]);
-break;
-case 132:this.$ = [$$[$0-1], $$[$0]];
-break;
-case 133:this.$ = new yy.Throw($$[$0]);
-break;
-case 134:this.$ = new yy.Parens($$[$0-1]);
-break;
-case 135:this.$ = new yy.Parens($$[$0-2]);
-break;
-case 136:this.$ = new yy.While($$[$0]);
-break;
-case 137:this.$ = new yy.While($$[$0-2], {
- guard: $$[$0]
- });
-break;
-case 138:this.$ = new yy.While($$[$0], {
- invert: true
- });
-break;
-case 139:this.$ = new yy.While($$[$0-2], {
- invert: true,
- guard: $$[$0]
- });
-break;
-case 140:this.$ = $$[$0-1].addBody($$[$0]);
-break;
-case 141:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
-break;
-case 142:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
-break;
-case 143:this.$ = $$[$0];
-break;
-case 144:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]);
-break;
-case 145:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]]));
-break;
-case 146:this.$ = new yy.For($$[$0-1], $$[$0]);
-break;
-case 147:this.$ = new yy.For($$[$0-1], $$[$0]);
-break;
-case 148:this.$ = new yy.For($$[$0], $$[$0-1]);
-break;
-case 149:this.$ = {
- source: new yy.Value($$[$0])
- };
-break;
-case 150:this.$ = (function () {
- $$[$0].own = $$[$0-1].own;
- $$[$0].name = $$[$0-1][0];
- $$[$0].index = $$[$0-1][1];
- return $$[$0];
- }());
-break;
-case 151:this.$ = $$[$0];
-break;
-case 152:this.$ = (function () {
- $$[$0].own = true;
- return $$[$0];
- }());
-break;
-case 153:this.$ = $$[$0];
-break;
-case 154:this.$ = new yy.Value($$[$0]);
-break;
-case 155:this.$ = new yy.Value($$[$0]);
-break;
-case 156:this.$ = [$$[$0]];
-break;
-case 157:this.$ = [$$[$0-2], $$[$0]];
-break;
-case 158:this.$ = {
- source: $$[$0]
- };
-break;
-case 159:this.$ = {
- source: $$[$0],
- object: true
- };
-break;
-case 160:this.$ = {
- source: $$[$0-2],
- guard: $$[$0]
- };
-break;
-case 161:this.$ = {
- source: $$[$0-2],
- guard: $$[$0],
- object: true
- };
-break;
-case 162:this.$ = {
- source: $$[$0-2],
- step: $$[$0]
- };
-break;
-case 163:this.$ = {
- source: $$[$0-4],
- guard: $$[$0-2],
- step: $$[$0]
- };
-break;
-case 164:this.$ = {
- source: $$[$0-4],
- step: $$[$0-2],
- guard: $$[$0]
- };
-break;
-case 165:this.$ = new yy.Switch($$[$0-3], $$[$0-1]);
-break;
-case 166:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]);
-break;
-case 167:this.$ = new yy.Switch(null, $$[$0-1]);
-break;
-case 168:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]);
-break;
-case 169:this.$ = $$[$0];
-break;
-case 170:this.$ = $$[$0-1].concat($$[$0]);
-break;
-case 171:this.$ = [[$$[$0-1], $$[$0]]];
-break;
-case 172:this.$ = [[$$[$0-2], $$[$0-1]]];
-break;
-case 173:this.$ = new yy.If($$[$0-1], $$[$0], {
- type: $$[$0-2]
- });
-break;
-case 174:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], {
- type: $$[$0-2]
- }));
-break;
-case 175:this.$ = $$[$0];
-break;
-case 176:this.$ = $$[$0-2].addElse($$[$0]);
-break;
-case 177:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
- type: $$[$0-1],
- statement: true
- });
-break;
-case 178:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
- type: $$[$0-1],
- statement: true
- });
-break;
-case 179:this.$ = new yy.Op($$[$0-1], $$[$0]);
-break;
-case 180:this.$ = new yy.Op('-', $$[$0]);
-break;
-case 181:this.$ = new yy.Op('+', $$[$0]);
-break;
-case 182:this.$ = new yy.Op('--', $$[$0]);
-break;
-case 183:this.$ = new yy.Op('++', $$[$0]);
-break;
-case 184:this.$ = new yy.Op('--', $$[$0-1], null, true);
-break;
-case 185:this.$ = new yy.Op('++', $$[$0-1], null, true);
-break;
-case 186:this.$ = new yy.Existence($$[$0-1]);
-break;
-case 187:this.$ = new yy.Op('+', $$[$0-2], $$[$0]);
-break;
-case 188:this.$ = new yy.Op('-', $$[$0-2], $$[$0]);
-break;
-case 189:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 190:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 191:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 192:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 193:this.$ = (function () {
- if ($$[$0-1].charAt(0) === '!') {
- return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
- } else {
- return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
- }
- }());
-break;
-case 194:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 195:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]);
-break;
-case 196:this.$ = new yy.Extends($$[$0-2], $$[$0]);
-break;
-}
-},
-table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[3]},{1:[2,2],6:[1,72]},{6:[1,73]},{1:[2,4],6:[2,4],26:[2,4],99:[2,4]},{4:75,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,74],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,7],6:[2,7],26:[2,7],99:[2,7],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,8],6:[2,8],26:[2,8],99:[2,8],100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],47:[2,12],52:[2,12],55:[2,12],60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,12],71:[1,98],75:[2,12],78:90,81:[1,92],82:[2,103],83:[2,12],88:[2,12],90:[2,12],99:[2,12],101:[2,12],102:[2,12],103:[2,12],107:[2,12],115:[2,12],123:[2,12],125:[2,12],126:[2,12],129:[2,12],130:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],47:[2,13],52:[2,13],55:[2,13],60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,13],71:[1,98],75:[2,13],78:99,81:[1,92],82:[2,103],83:[2,13],88:[2,13],90:[2,13],99:[2,13],101:[2,13],102:[2,13],103:[2,13],107:[2,13],115:[2,13],123:[2,13],125:[2,13],126:[2,13],129:[2,13],130:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],47:[2,14],52:[2,14],55:[2,14],70:[2,14],75:[2,14],83:[2,14],88:[2,14],90:[2,14],99:[2,14],101:[2,14],102:[2,14],103:[2,14],107:[2,14],115:[2,14],123:[2,14],125:[2,14],126:[2,14],129:[2,14],130:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],47:[2,15],52:[2,15],55:[2,15],70:[2,15],75:[2,15],83:[2,15],88:[2,15],90:[2,15],99:[2,15],101:[2,15],102:[2,15],103:[2,15],107:[2,15],115:[2,15],123:[2,15],125:[2,15],126:[2,15],129:[2,15],130:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],47:[2,16],52:[2,16],55:[2,16],70:[2,16],75:[2,16],83:[2,16],88:[2,16],90:[2,16],99:[2,16],101:[2,16],102:[2,16],103:[2,16],107:[2,16],115:[2,16],123:[2,16],125:[2,16],126:[2,16],129:[2,16],130:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],47:[2,17],52:[2,17],55:[2,17],70:[2,17],75:[2,17],83:[2,17],88:[2,17],90:[2,17],99:[2,17],101:[2,17],102:[2,17],103:[2,17],107:[2,17],115:[2,17],123:[2,17],125:[2,17],126:[2,17],129:[2,17],130:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],47:[2,18],52:[2,18],55:[2,18],70:[2,18],75:[2,18],83:[2,18],88:[2,18],90:[2,18],99:[2,18],101:[2,18],102:[2,18],103:[2,18],107:[2,18],115:[2,18],123:[2,18],125:[2,18],126:[2,18],129:[2,18],130:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],47:[2,19],52:[2,19],55:[2,19],70:[2,19],75:[2,19],83:[2,19],88:[2,19],90:[2,19],99:[2,19],101:[2,19],102:[2,19],103:[2,19],107:[2,19],115:[2,19],123:[2,19],125:[2,19],126:[2,19],129:[2,19],130:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],47:[2,20],52:[2,20],55:[2,20],70:[2,20],75:[2,20],83:[2,20],88:[2,20],90:[2,20],99:[2,20],101:[2,20],102:[2,20],103:[2,20],107:[2,20],115:[2,20],123:[2,20],125:[2,20],126:[2,20],129:[2,20],130:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],47:[2,21],52:[2,21],55:[2,21],70:[2,21],75:[2,21],83:[2,21],88:[2,21],90:[2,21],99:[2,21],101:[2,21],102:[2,21],103:[2,21],107:[2,21],115:[2,21],123:[2,21],125:[2,21],126:[2,21],129:[2,21],130:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],47:[2,22],52:[2,22],55:[2,22],70:[2,22],75:[2,22],83:[2,22],88:[2,22],90:[2,22],99:[2,22],101:[2,22],102:[2,22],103:[2,22],107:[2,22],115:[2,22],123:[2,22],125:[2,22],126:[2,22],129:[2,22],130:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],47:[2,23],52:[2,23],55:[2,23],70:[2,23],75:[2,23],83:[2,23],88:[2,23],90:[2,23],99:[2,23],101:[2,23],102:[2,23],103:[2,23],107:[2,23],115:[2,23],123:[2,23],125:[2,23],126:[2,23],129:[2,23],130:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23]},{1:[2,9],6:[2,9],26:[2,9],99:[2,9],101:[2,9],103:[2,9],107:[2,9],123:[2,9]},{1:[2,10],6:[2,10],26:[2,10],99:[2,10],101:[2,10],103:[2,10],107:[2,10],123:[2,10]},{1:[2,11],6:[2,11],26:[2,11],99:[2,11],101:[2,11],103:[2,11],107:[2,11],123:[2,11]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],38:[1,101],47:[2,71],52:[2,71],55:[2,71],64:[2,71],65:[2,71],66:[2,71],68:[2,71],70:[2,71],71:[2,71],75:[2,71],81:[2,71],82:[2,71],83:[2,71],88:[2,71],90:[2,71],99:[2,71],101:[2,71],102:[2,71],103:[2,71],107:[2,71],115:[2,71],123:[2,71],125:[2,71],126:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],47:[2,72],52:[2,72],55:[2,72],64:[2,72],65:[2,72],66:[2,72],68:[2,72],70:[2,72],71:[2,72],75:[2,72],81:[2,72],82:[2,72],83:[2,72],88:[2,72],90:[2,72],99:[2,72],101:[2,72],102:[2,72],103:[2,72],107:[2,72],115:[2,72],123:[2,72],125:[2,72],126:[2,72],129:[2,72],130:[2,72],131:[2,72],132:[2,72],133:[2,72],134:[2,72]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],47:[2,73],52:[2,73],55:[2,73],64:[2,73],65:[2,73],66:[2,73],68:[2,73],70:[2,73],71:[2,73],75:[2,73],81:[2,73],82:[2,73],83:[2,73],88:[2,73],90:[2,73],99:[2,73],101:[2,73],102:[2,73],103:[2,73],107:[2,73],115:[2,73],123:[2,73],125:[2,73],126:[2,73],129:[2,73],130:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],47:[2,74],52:[2,74],55:[2,74],64:[2,74],65:[2,74],66:[2,74],68:[2,74],70:[2,74],71:[2,74],75:[2,74],81:[2,74],82:[2,74],83:[2,74],88:[2,74],90:[2,74],99:[2,74],101:[2,74],102:[2,74],103:[2,74],107:[2,74],115:[2,74],123:[2,74],125:[2,74],126:[2,74],129:[2,74],130:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],47:[2,75],52:[2,75],55:[2,75],64:[2,75],65:[2,75],66:[2,75],68:[2,75],70:[2,75],71:[2,75],75:[2,75],81:[2,75],82:[2,75],83:[2,75],88:[2,75],90:[2,75],99:[2,75],101:[2,75],102:[2,75],103:[2,75],107:[2,75],115:[2,75],123:[2,75],125:[2,75],126:[2,75],129:[2,75],130:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75]},{1:[2,101],6:[2,101],25:[2,101],26:[2,101],47:[2,101],52:[2,101],55:[2,101],64:[2,101],65:[2,101],66:[2,101],68:[2,101],70:[2,101],71:[2,101],75:[2,101],79:102,81:[2,101],82:[1,103],83:[2,101],88:[2,101],90:[2,101],99:[2,101],101:[2,101],102:[2,101],103:[2,101],107:[2,101],115:[2,101],123:[2,101],125:[2,101],126:[2,101],129:[2,101],130:[2,101],131:[2,101],132:[2,101],133:[2,101],134:[2,101]},{27:107,28:[1,71],42:108,46:104,47:[2,53],52:[2,53],53:105,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{5:113,25:[1,5]},{8:114,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:116,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:117,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:118,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:122,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],38:[2,68],47:[2,68],52:[2,68],55:[2,68],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,68],71:[2,68],75:[2,68],77:[1,126],81:[2,68],82:[2,68],83:[2,68],88:[2,68],90:[2,68],99:[2,68],101:[2,68],102:[2,68],103:[2,68],107:[2,68],115:[2,68],123:[2,68],125:[2,68],126:[2,68],127:[1,123],128:[1,124],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[1,125]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],47:[2,175],52:[2,175],55:[2,175],70:[2,175],75:[2,175],83:[2,175],88:[2,175],90:[2,175],99:[2,175],101:[2,175],102:[2,175],103:[2,175],107:[2,175],115:[2,175],118:[1,127],123:[2,175],125:[2,175],126:[2,175],129:[2,175],130:[2,175],131:[2,175],132:[2,175],133:[2,175],134:[2,175]},{5:128,25:[1,5]},{5:129,25:[1,5]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],47:[2,143],52:[2,143],55:[2,143],70:[2,143],75:[2,143],83:[2,143],88:[2,143],90:[2,143],99:[2,143],101:[2,143],102:[2,143],103:[2,143],107:[2,143],115:[2,143],123:[2,143],125:[2,143],126:[2,143],129:[2,143],130:[2,143],131:[2,143],132:[2,143],133:[2,143],134:[2,143]},{5:130,25:[1,5]},{8:131,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,132],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,91],5:133,6:[2,91],13:119,14:120,25:[1,5],26:[2,91],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,47:[2,91],52:[2,91],55:[2,91],56:47,57:48,59:135,61:25,62:26,63:27,70:[2,91],73:[1,68],75:[2,91],77:[1,134],80:[1,28],83:[2,91],85:[1,56],86:[1,57],87:[1,55],88:[2,91],90:[2,91],98:[1,54],99:[2,91],101:[2,91],102:[2,91],103:[2,91],107:[2,91],115:[2,91],123:[2,91],125:[2,91],126:[2,91],129:[2,91],130:[2,91],131:[2,91],132:[2,91],133:[2,91],134:[2,91]},{8:136,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,45],6:[2,45],8:137,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,45],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,45],100:39,101:[2,45],103:[2,45],104:40,105:[1,65],106:41,107:[2,45],108:67,116:[1,42],121:37,122:[1,62],123:[2,45],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,46],6:[2,46],25:[2,46],26:[2,46],52:[2,46],75:[2,46],99:[2,46],101:[2,46],103:[2,46],107:[2,46],123:[2,46]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],38:[2,69],47:[2,69],52:[2,69],55:[2,69],64:[2,69],65:[2,69],66:[2,69],68:[2,69],70:[2,69],71:[2,69],75:[2,69],81:[2,69],82:[2,69],83:[2,69],88:[2,69],90:[2,69],99:[2,69],101:[2,69],102:[2,69],103:[2,69],107:[2,69],115:[2,69],123:[2,69],125:[2,69],126:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],38:[2,70],47:[2,70],52:[2,70],55:[2,70],64:[2,70],65:[2,70],66:[2,70],68:[2,70],70:[2,70],71:[2,70],75:[2,70],81:[2,70],82:[2,70],83:[2,70],88:[2,70],90:[2,70],99:[2,70],101:[2,70],102:[2,70],103:[2,70],107:[2,70],115:[2,70],123:[2,70],125:[2,70],126:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],47:[2,29],52:[2,29],55:[2,29],64:[2,29],65:[2,29],66:[2,29],68:[2,29],70:[2,29],71:[2,29],75:[2,29],81:[2,29],82:[2,29],83:[2,29],88:[2,29],90:[2,29],99:[2,29],101:[2,29],102:[2,29],103:[2,29],107:[2,29],115:[2,29],123:[2,29],125:[2,29],126:[2,29],129:[2,29],130:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],47:[2,30],52:[2,30],55:[2,30],64:[2,30],65:[2,30],66:[2,30],68:[2,30],70:[2,30],71:[2,30],75:[2,30],81:[2,30],82:[2,30],83:[2,30],88:[2,30],90:[2,30],99:[2,30],101:[2,30],102:[2,30],103:[2,30],107:[2,30],115:[2,30],123:[2,30],125:[2,30],126:[2,30],129:[2,30],130:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],47:[2,31],52:[2,31],55:[2,31],64:[2,31],65:[2,31],66:[2,31],68:[2,31],70:[2,31],71:[2,31],75:[2,31],81:[2,31],82:[2,31],83:[2,31],88:[2,31],90:[2,31],99:[2,31],101:[2,31],102:[2,31],103:[2,31],107:[2,31],115:[2,31],123:[2,31],125:[2,31],126:[2,31],129:[2,31],130:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],47:[2,32],52:[2,32],55:[2,32],64:[2,32],65:[2,32],66:[2,32],68:[2,32],70:[2,32],71:[2,32],75:[2,32],81:[2,32],82:[2,32],83:[2,32],88:[2,32],90:[2,32],99:[2,32],101:[2,32],102:[2,32],103:[2,32],107:[2,32],115:[2,32],123:[2,32],125:[2,32],126:[2,32],129:[2,32],130:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],47:[2,33],52:[2,33],55:[2,33],64:[2,33],65:[2,33],66:[2,33],68:[2,33],70:[2,33],71:[2,33],75:[2,33],81:[2,33],82:[2,33],83:[2,33],88:[2,33],90:[2,33],99:[2,33],101:[2,33],102:[2,33],103:[2,33],107:[2,33],115:[2,33],123:[2,33],125:[2,33],126:[2,33],129:[2,33],130:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33]},{4:138,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,139],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:140,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,107],6:[2,107],25:[2,107],26:[2,107],47:[2,107],52:[2,107],55:[2,107],64:[2,107],65:[2,107],66:[2,107],68:[2,107],70:[2,107],71:[2,107],75:[2,107],81:[2,107],82:[2,107],83:[2,107],88:[2,107],90:[2,107],99:[2,107],101:[2,107],102:[2,107],103:[2,107],107:[2,107],115:[2,107],123:[2,107],125:[2,107],126:[2,107],129:[2,107],130:[2,107],131:[2,107],132:[2,107],133:[2,107],134:[2,107]},{1:[2,108],6:[2,108],25:[2,108],26:[2,108],27:146,28:[1,71],47:[2,108],52:[2,108],55:[2,108],64:[2,108],65:[2,108],66:[2,108],68:[2,108],70:[2,108],71:[2,108],75:[2,108],81:[2,108],82:[2,108],83:[2,108],88:[2,108],90:[2,108],99:[2,108],101:[2,108],102:[2,108],103:[2,108],107:[2,108],115:[2,108],123:[2,108],125:[2,108],126:[2,108],129:[2,108],130:[2,108],131:[2,108],132:[2,108],133:[2,108],134:[2,108]},{25:[2,49]},{25:[2,50]},{1:[2,64],6:[2,64],25:[2,64],26:[2,64],38:[2,64],47:[2,64],52:[2,64],55:[2,64],64:[2,64],65:[2,64],66:[2,64],68:[2,64],70:[2,64],71:[2,64],75:[2,64],77:[2,64],81:[2,64],82:[2,64],83:[2,64],88:[2,64],90:[2,64],99:[2,64],101:[2,64],102:[2,64],103:[2,64],107:[2,64],115:[2,64],123:[2,64],125:[2,64],126:[2,64],127:[2,64],128:[2,64],129:[2,64],130:[2,64],131:[2,64],132:[2,64],133:[2,64],134:[2,64],135:[2,64]},{1:[2,67],6:[2,67],25:[2,67],26:[2,67],38:[2,67],47:[2,67],52:[2,67],55:[2,67],64:[2,67],65:[2,67],66:[2,67],68:[2,67],70:[2,67],71:[2,67],75:[2,67],77:[2,67],81:[2,67],82:[2,67],83:[2,67],88:[2,67],90:[2,67],99:[2,67],101:[2,67],102:[2,67],103:[2,67],107:[2,67],115:[2,67],123:[2,67],125:[2,67],126:[2,67],127:[2,67],128:[2,67],129:[2,67],130:[2,67],131:[2,67],132:[2,67],133:[2,67],134:[2,67],135:[2,67]},{8:147,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:148,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:149,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:150,8:151,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{27:156,28:[1,71],56:157,57:158,62:152,73:[1,68],87:[1,55],110:153,111:[1,154],112:155},{109:159,113:[1,160],114:[1,161]},{6:[2,86],11:165,25:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:162,75:[2,86],86:[1,111]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],41:[2,27],47:[2,27],52:[2,27],55:[2,27],64:[2,27],65:[2,27],66:[2,27],68:[2,27],70:[2,27],71:[2,27],75:[2,27],81:[2,27],82:[2,27],83:[2,27],88:[2,27],90:[2,27],99:[2,27],101:[2,27],102:[2,27],103:[2,27],107:[2,27],115:[2,27],123:[2,27],125:[2,27],126:[2,27],129:[2,27],130:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],41:[2,28],47:[2,28],52:[2,28],55:[2,28],64:[2,28],65:[2,28],66:[2,28],68:[2,28],70:[2,28],71:[2,28],75:[2,28],81:[2,28],82:[2,28],83:[2,28],88:[2,28],90:[2,28],99:[2,28],101:[2,28],102:[2,28],103:[2,28],107:[2,28],115:[2,28],123:[2,28],125:[2,28],126:[2,28],129:[2,28],130:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],38:[2,26],41:[2,26],47:[2,26],52:[2,26],55:[2,26],64:[2,26],65:[2,26],66:[2,26],68:[2,26],70:[2,26],71:[2,26],75:[2,26],77:[2,26],81:[2,26],82:[2,26],83:[2,26],88:[2,26],90:[2,26],99:[2,26],101:[2,26],102:[2,26],103:[2,26],107:[2,26],113:[2,26],114:[2,26],115:[2,26],123:[2,26],125:[2,26],126:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26]},{1:[2,6],6:[2,6],7:169,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,6],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],47:[2,24],52:[2,24],55:[2,24],70:[2,24],75:[2,24],83:[2,24],88:[2,24],90:[2,24],95:[2,24],96:[2,24],99:[2,24],101:[2,24],102:[2,24],103:[2,24],107:[2,24],115:[2,24],118:[2,24],120:[2,24],123:[2,24],125:[2,24],126:[2,24],129:[2,24],130:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24]},{6:[1,72],26:[1,170]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],47:[2,186],52:[2,186],55:[2,186],70:[2,186],75:[2,186],83:[2,186],88:[2,186],90:[2,186],99:[2,186],101:[2,186],102:[2,186],103:[2,186],107:[2,186],115:[2,186],123:[2,186],125:[2,186],126:[2,186],129:[2,186],130:[2,186],131:[2,186],132:[2,186],133:[2,186],134:[2,186]},{8:171,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:172,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:173,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:174,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:175,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:176,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:177,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:178,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],47:[2,142],52:[2,142],55:[2,142],70:[2,142],75:[2,142],83:[2,142],88:[2,142],90:[2,142],99:[2,142],101:[2,142],102:[2,142],103:[2,142],107:[2,142],115:[2,142],123:[2,142],125:[2,142],126:[2,142],129:[2,142],130:[2,142],131:[2,142],132:[2,142],133:[2,142],134:[2,142]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],47:[2,147],52:[2,147],55:[2,147],70:[2,147],75:[2,147],83:[2,147],88:[2,147],90:[2,147],99:[2,147],101:[2,147],102:[2,147],103:[2,147],107:[2,147],115:[2,147],123:[2,147],125:[2,147],126:[2,147],129:[2,147],130:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147]},{8:179,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],47:[2,141],52:[2,141],55:[2,141],70:[2,141],75:[2,141],83:[2,141],88:[2,141],90:[2,141],99:[2,141],101:[2,141],102:[2,141],103:[2,141],107:[2,141],115:[2,141],123:[2,141],125:[2,141],126:[2,141],129:[2,141],130:[2,141],131:[2,141],132:[2,141],133:[2,141],134:[2,141]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],47:[2,146],52:[2,146],55:[2,146],70:[2,146],75:[2,146],83:[2,146],88:[2,146],90:[2,146],99:[2,146],101:[2,146],102:[2,146],103:[2,146],107:[2,146],115:[2,146],123:[2,146],125:[2,146],126:[2,146],129:[2,146],130:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146]},{79:180,82:[1,103]},{1:[2,65],6:[2,65],25:[2,65],26:[2,65],38:[2,65],47:[2,65],52:[2,65],55:[2,65],64:[2,65],65:[2,65],66:[2,65],68:[2,65],70:[2,65],71:[2,65],75:[2,65],77:[2,65],81:[2,65],82:[2,65],83:[2,65],88:[2,65],90:[2,65],99:[2,65],101:[2,65],102:[2,65],103:[2,65],107:[2,65],115:[2,65],123:[2,65],125:[2,65],126:[2,65],127:[2,65],128:[2,65],129:[2,65],130:[2,65],131:[2,65],132:[2,65],133:[2,65],134:[2,65],135:[2,65]},{82:[2,104]},{27:181,28:[1,71]},{27:182,28:[1,71]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],27:183,28:[1,71],38:[2,79],47:[2,79],52:[2,79],55:[2,79],64:[2,79],65:[2,79],66:[2,79],68:[2,79],70:[2,79],71:[2,79],75:[2,79],77:[2,79],81:[2,79],82:[2,79],83:[2,79],88:[2,79],90:[2,79],99:[2,79],101:[2,79],102:[2,79],103:[2,79],107:[2,79],115:[2,79],123:[2,79],125:[2,79],126:[2,79],127:[2,79],128:[2,79],129:[2,79],130:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],38:[2,80],47:[2,80],52:[2,80],55:[2,80],64:[2,80],65:[2,80],66:[2,80],68:[2,80],70:[2,80],71:[2,80],75:[2,80],77:[2,80],81:[2,80],82:[2,80],83:[2,80],88:[2,80],90:[2,80],99:[2,80],101:[2,80],102:[2,80],103:[2,80],107:[2,80],115:[2,80],123:[2,80],125:[2,80],126:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80]},{8:185,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],55:[1,189],56:47,57:48,59:36,61:25,62:26,63:27,69:184,72:186,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],89:187,90:[1,188],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{67:190,68:[1,97],71:[1,98]},{79:191,82:[1,103]},{1:[2,66],6:[2,66],25:[2,66],26:[2,66],38:[2,66],47:[2,66],52:[2,66],55:[2,66],64:[2,66],65:[2,66],66:[2,66],68:[2,66],70:[2,66],71:[2,66],75:[2,66],77:[2,66],81:[2,66],82:[2,66],83:[2,66],88:[2,66],90:[2,66],99:[2,66],101:[2,66],102:[2,66],103:[2,66],107:[2,66],115:[2,66],123:[2,66],125:[2,66],126:[2,66],127:[2,66],128:[2,66],129:[2,66],130:[2,66],131:[2,66],132:[2,66],133:[2,66],134:[2,66],135:[2,66]},{6:[1,193],8:192,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,194],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],47:[2,102],52:[2,102],55:[2,102],64:[2,102],65:[2,102],66:[2,102],68:[2,102],70:[2,102],71:[2,102],75:[2,102],81:[2,102],82:[2,102],83:[2,102],88:[2,102],90:[2,102],99:[2,102],101:[2,102],102:[2,102],103:[2,102],107:[2,102],115:[2,102],123:[2,102],125:[2,102],126:[2,102],129:[2,102],130:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[1,195],84:196,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{47:[1,198],52:[1,199]},{47:[2,54],52:[2,54]},{38:[1,201],47:[2,56],52:[2,56],55:[1,200]},{38:[2,59],47:[2,59],52:[2,59],55:[2,59]},{38:[2,60],47:[2,60],52:[2,60],55:[2,60]},{38:[2,61],47:[2,61],52:[2,61],55:[2,61]},{38:[2,62],47:[2,62],52:[2,62],55:[2,62]},{27:146,28:[1,71]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],47:[2,48],52:[2,48],55:[2,48],70:[2,48],75:[2,48],83:[2,48],88:[2,48],90:[2,48],99:[2,48],101:[2,48],102:[2,48],103:[2,48],107:[2,48],115:[2,48],123:[2,48],125:[2,48],126:[2,48],129:[2,48],130:[2,48],131:[2,48],132:[2,48],133:[2,48],134:[2,48]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],47:[2,179],52:[2,179],55:[2,179],70:[2,179],75:[2,179],83:[2,179],88:[2,179],90:[2,179],99:[2,179],100:85,101:[2,179],102:[2,179],103:[2,179],106:86,107:[2,179],108:67,115:[2,179],123:[2,179],125:[2,179],126:[2,179],129:[1,76],130:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179]},{100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],47:[2,180],52:[2,180],55:[2,180],70:[2,180],75:[2,180],83:[2,180],88:[2,180],90:[2,180],99:[2,180],100:85,101:[2,180],102:[2,180],103:[2,180],106:86,107:[2,180],108:67,115:[2,180],123:[2,180],125:[2,180],126:[2,180],129:[1,76],130:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],47:[2,181],52:[2,181],55:[2,181],70:[2,181],75:[2,181],83:[2,181],88:[2,181],90:[2,181],99:[2,181],100:85,101:[2,181],102:[2,181],103:[2,181],106:86,107:[2,181],108:67,115:[2,181],123:[2,181],125:[2,181],126:[2,181],129:[1,76],130:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],47:[2,182],52:[2,182],55:[2,182],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,182],71:[2,68],75:[2,182],81:[2,68],82:[2,68],83:[2,182],88:[2,182],90:[2,182],99:[2,182],101:[2,182],102:[2,182],103:[2,182],107:[2,182],115:[2,182],123:[2,182],125:[2,182],126:[2,182],129:[2,182],130:[2,182],131:[2,182],132:[2,182],133:[2,182],134:[2,182]},{60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:90,81:[1,92],82:[2,103]},{60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:99,81:[1,92],82:[2,103]},{64:[2,71],65:[2,71],66:[2,71],68:[2,71],71:[2,71],81:[2,71],82:[2,71]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],47:[2,183],52:[2,183],55:[2,183],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,183],71:[2,68],75:[2,183],81:[2,68],82:[2,68],83:[2,183],88:[2,183],90:[2,183],99:[2,183],101:[2,183],102:[2,183],103:[2,183],107:[2,183],115:[2,183],123:[2,183],125:[2,183],126:[2,183],129:[2,183],130:[2,183],131:[2,183],132:[2,183],133:[2,183],134:[2,183]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],47:[2,184],52:[2,184],55:[2,184],70:[2,184],75:[2,184],83:[2,184],88:[2,184],90:[2,184],99:[2,184],101:[2,184],102:[2,184],103:[2,184],107:[2,184],115:[2,184],123:[2,184],125:[2,184],126:[2,184],129:[2,184],130:[2,184],131:[2,184],132:[2,184],133:[2,184],134:[2,184]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],47:[2,185],52:[2,185],55:[2,185],70:[2,185],75:[2,185],83:[2,185],88:[2,185],90:[2,185],99:[2,185],101:[2,185],102:[2,185],103:[2,185],107:[2,185],115:[2,185],123:[2,185],125:[2,185],126:[2,185],129:[2,185],130:[2,185],131:[2,185],132:[2,185],133:[2,185],134:[2,185]},{8:202,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,203],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:204,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:205,25:[1,5],122:[1,206]},{1:[2,128],6:[2,128],25:[2,128],26:[2,128],47:[2,128],52:[2,128],55:[2,128],70:[2,128],75:[2,128],83:[2,128],88:[2,128],90:[2,128],94:207,95:[1,208],96:[1,209],99:[2,128],101:[2,128],102:[2,128],103:[2,128],107:[2,128],115:[2,128],123:[2,128],125:[2,128],126:[2,128],129:[2,128],130:[2,128],131:[2,128],132:[2,128],133:[2,128],134:[2,128]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],47:[2,140],52:[2,140],55:[2,140],70:[2,140],75:[2,140],83:[2,140],88:[2,140],90:[2,140],99:[2,140],101:[2,140],102:[2,140],103:[2,140],107:[2,140],115:[2,140],123:[2,140],125:[2,140],126:[2,140],129:[2,140],130:[2,140],131:[2,140],132:[2,140],133:[2,140],134:[2,140]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],47:[2,148],52:[2,148],55:[2,148],70:[2,148],75:[2,148],83:[2,148],88:[2,148],90:[2,148],99:[2,148],101:[2,148],102:[2,148],103:[2,148],107:[2,148],115:[2,148],123:[2,148],125:[2,148],126:[2,148],129:[2,148],130:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148]},{25:[1,210],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{117:211,119:212,120:[1,213]},{1:[2,92],6:[2,92],25:[2,92],26:[2,92],47:[2,92],52:[2,92],55:[2,92],70:[2,92],75:[2,92],83:[2,92],88:[2,92],90:[2,92],99:[2,92],101:[2,92],102:[2,92],103:[2,92],107:[2,92],115:[2,92],123:[2,92],125:[2,92],126:[2,92],129:[2,92],130:[2,92],131:[2,92],132:[2,92],133:[2,92],134:[2,92]},{8:214,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,95],5:215,6:[2,95],25:[1,5],26:[2,95],47:[2,95],52:[2,95],55:[2,95],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,95],71:[2,68],75:[2,95],77:[1,216],81:[2,68],82:[2,68],83:[2,95],88:[2,95],90:[2,95],99:[2,95],101:[2,95],102:[2,95],103:[2,95],107:[2,95],115:[2,95],123:[2,95],125:[2,95],126:[2,95],129:[2,95],130:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],47:[2,133],52:[2,133],55:[2,133],70:[2,133],75:[2,133],83:[2,133],88:[2,133],90:[2,133],99:[2,133],100:85,101:[2,133],102:[2,133],103:[2,133],106:86,107:[2,133],108:67,115:[2,133],123:[2,133],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,44],6:[2,44],26:[2,44],99:[2,44],100:85,101:[2,44],103:[2,44],106:86,107:[2,44],108:67,123:[2,44],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,72],99:[1,217]},{4:218,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,124],25:[2,124],52:[2,124],55:[1,220],88:[2,124],89:219,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],38:[2,110],47:[2,110],52:[2,110],55:[2,110],64:[2,110],65:[2,110],66:[2,110],68:[2,110],70:[2,110],71:[2,110],75:[2,110],81:[2,110],82:[2,110],83:[2,110],88:[2,110],90:[2,110],99:[2,110],101:[2,110],102:[2,110],103:[2,110],107:[2,110],113:[2,110],114:[2,110],115:[2,110],123:[2,110],125:[2,110],126:[2,110],129:[2,110],130:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110]},{6:[2,51],25:[2,51],51:221,52:[1,222],88:[2,51]},{6:[2,119],25:[2,119],26:[2,119],52:[2,119],83:[2,119],88:[2,119]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:223,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,125],25:[2,125],26:[2,125],52:[2,125],83:[2,125],88:[2,125]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],38:[2,109],41:[2,109],47:[2,109],52:[2,109],55:[2,109],64:[2,109],65:[2,109],66:[2,109],68:[2,109],70:[2,109],71:[2,109],75:[2,109],77:[2,109],81:[2,109],82:[2,109],83:[2,109],88:[2,109],90:[2,109],99:[2,109],101:[2,109],102:[2,109],103:[2,109],107:[2,109],115:[2,109],123:[2,109],125:[2,109],126:[2,109],127:[2,109],128:[2,109],129:[2,109],130:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109]},{5:224,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],47:[2,136],52:[2,136],55:[2,136],70:[2,136],75:[2,136],83:[2,136],88:[2,136],90:[2,136],99:[2,136],100:85,101:[1,63],102:[1,225],103:[1,64],106:86,107:[1,66],108:67,115:[2,136],123:[2,136],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],47:[2,138],52:[2,138],55:[2,138],70:[2,138],75:[2,138],83:[2,138],88:[2,138],90:[2,138],99:[2,138],100:85,101:[1,63],102:[1,226],103:[1,64],106:86,107:[1,66],108:67,115:[2,138],123:[2,138],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],47:[2,144],52:[2,144],55:[2,144],70:[2,144],75:[2,144],83:[2,144],88:[2,144],90:[2,144],99:[2,144],101:[2,144],102:[2,144],103:[2,144],107:[2,144],115:[2,144],123:[2,144],125:[2,144],126:[2,144],129:[2,144],130:[2,144],131:[2,144],132:[2,144],133:[2,144],134:[2,144]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],47:[2,145],52:[2,145],55:[2,145],70:[2,145],75:[2,145],83:[2,145],88:[2,145],90:[2,145],99:[2,145],100:85,101:[1,63],102:[2,145],103:[1,64],106:86,107:[1,66],108:67,115:[2,145],123:[2,145],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],47:[2,149],52:[2,149],55:[2,149],70:[2,149],75:[2,149],83:[2,149],88:[2,149],90:[2,149],99:[2,149],101:[2,149],102:[2,149],103:[2,149],107:[2,149],115:[2,149],123:[2,149],125:[2,149],126:[2,149],129:[2,149],130:[2,149],131:[2,149],132:[2,149],133:[2,149],134:[2,149]},{113:[2,151],114:[2,151]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],110:227,112:155},{52:[1,228],113:[2,156],114:[2,156]},{52:[2,153],113:[2,153],114:[2,153]},{52:[2,154],113:[2,154],114:[2,154]},{52:[2,155],113:[2,155],114:[2,155]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],47:[2,150],52:[2,150],55:[2,150],70:[2,150],75:[2,150],83:[2,150],88:[2,150],90:[2,150],99:[2,150],101:[2,150],102:[2,150],103:[2,150],107:[2,150],115:[2,150],123:[2,150],125:[2,150],126:[2,150],129:[2,150],130:[2,150],131:[2,150],132:[2,150],133:[2,150],134:[2,150]},{8:229,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:230,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],51:231,52:[1,232],75:[2,51]},{6:[2,87],25:[2,87],26:[2,87],52:[2,87],75:[2,87]},{6:[2,37],25:[2,37],26:[2,37],41:[1,233],52:[2,37],75:[2,37]},{6:[2,40],25:[2,40],26:[2,40],52:[2,40],75:[2,40]},{6:[2,41],25:[2,41],26:[2,41],41:[2,41],52:[2,41],75:[2,41]},{6:[2,42],25:[2,42],26:[2,42],41:[2,42],52:[2,42],75:[2,42]},{6:[2,43],25:[2,43],26:[2,43],41:[2,43],52:[2,43],75:[2,43]},{1:[2,5],6:[2,5],26:[2,5],99:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],47:[2,25],52:[2,25],55:[2,25],70:[2,25],75:[2,25],83:[2,25],88:[2,25],90:[2,25],95:[2,25],96:[2,25],99:[2,25],101:[2,25],102:[2,25],103:[2,25],107:[2,25],115:[2,25],118:[2,25],120:[2,25],123:[2,25],125:[2,25],126:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],47:[2,187],52:[2,187],55:[2,187],70:[2,187],75:[2,187],83:[2,187],88:[2,187],90:[2,187],99:[2,187],100:85,101:[2,187],102:[2,187],103:[2,187],106:86,107:[2,187],108:67,115:[2,187],123:[2,187],125:[2,187],126:[2,187],129:[1,76],130:[1,79],131:[2,187],132:[2,187],133:[2,187],134:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],47:[2,188],52:[2,188],55:[2,188],70:[2,188],75:[2,188],83:[2,188],88:[2,188],90:[2,188],99:[2,188],100:85,101:[2,188],102:[2,188],103:[2,188],106:86,107:[2,188],108:67,115:[2,188],123:[2,188],125:[2,188],126:[2,188],129:[1,76],130:[1,79],131:[2,188],132:[2,188],133:[2,188],134:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],47:[2,189],52:[2,189],55:[2,189],70:[2,189],75:[2,189],83:[2,189],88:[2,189],90:[2,189],99:[2,189],100:85,101:[2,189],102:[2,189],103:[2,189],106:86,107:[2,189],108:67,115:[2,189],123:[2,189],125:[2,189],126:[2,189],129:[1,76],130:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],47:[2,190],52:[2,190],55:[2,190],70:[2,190],75:[2,190],83:[2,190],88:[2,190],90:[2,190],99:[2,190],100:85,101:[2,190],102:[2,190],103:[2,190],106:86,107:[2,190],108:67,115:[2,190],123:[2,190],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[2,190],132:[2,190],133:[2,190],134:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],47:[2,191],52:[2,191],55:[2,191],70:[2,191],75:[2,191],83:[2,191],88:[2,191],90:[2,191],99:[2,191],100:85,101:[2,191],102:[2,191],103:[2,191],106:86,107:[2,191],108:67,115:[2,191],123:[2,191],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,191],133:[2,191],134:[1,83]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],47:[2,192],52:[2,192],55:[2,192],70:[2,192],75:[2,192],83:[2,192],88:[2,192],90:[2,192],99:[2,192],100:85,101:[2,192],102:[2,192],103:[2,192],106:86,107:[2,192],108:67,115:[2,192],123:[2,192],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[2,192],134:[1,83]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],47:[2,193],52:[2,193],55:[2,193],70:[2,193],75:[2,193],83:[2,193],88:[2,193],90:[2,193],99:[2,193],100:85,101:[2,193],102:[2,193],103:[2,193],106:86,107:[2,193],108:67,115:[2,193],123:[2,193],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,193],133:[2,193],134:[2,193]},{1:[2,178],6:[2,178],25:[2,178],26:[2,178],47:[2,178],52:[2,178],55:[2,178],70:[2,178],75:[2,178],83:[2,178],88:[2,178],90:[2,178],99:[2,178],100:85,101:[1,63],102:[2,178],103:[1,64],106:86,107:[1,66],108:67,115:[2,178],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,177],6:[2,177],25:[2,177],26:[2,177],47:[2,177],52:[2,177],55:[2,177],70:[2,177],75:[2,177],83:[2,177],88:[2,177],90:[2,177],99:[2,177],100:85,101:[1,63],102:[2,177],103:[1,64],106:86,107:[1,66],108:67,115:[2,177],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,99],6:[2,99],25:[2,99],26:[2,99],47:[2,99],52:[2,99],55:[2,99],64:[2,99],65:[2,99],66:[2,99],68:[2,99],70:[2,99],71:[2,99],75:[2,99],81:[2,99],82:[2,99],83:[2,99],88:[2,99],90:[2,99],99:[2,99],101:[2,99],102:[2,99],103:[2,99],107:[2,99],115:[2,99],123:[2,99],125:[2,99],126:[2,99],129:[2,99],130:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],38:[2,76],47:[2,76],52:[2,76],55:[2,76],64:[2,76],65:[2,76],66:[2,76],68:[2,76],70:[2,76],71:[2,76],75:[2,76],77:[2,76],81:[2,76],82:[2,76],83:[2,76],88:[2,76],90:[2,76],99:[2,76],101:[2,76],102:[2,76],103:[2,76],107:[2,76],115:[2,76],123:[2,76],125:[2,76],126:[2,76],127:[2,76],128:[2,76],129:[2,76],130:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],38:[2,77],47:[2,77],52:[2,77],55:[2,77],64:[2,77],65:[2,77],66:[2,77],68:[2,77],70:[2,77],71:[2,77],75:[2,77],77:[2,77],81:[2,77],82:[2,77],83:[2,77],88:[2,77],90:[2,77],99:[2,77],101:[2,77],102:[2,77],103:[2,77],107:[2,77],115:[2,77],123:[2,77],125:[2,77],126:[2,77],127:[2,77],128:[2,77],129:[2,77],130:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],38:[2,78],47:[2,78],52:[2,78],55:[2,78],64:[2,78],65:[2,78],66:[2,78],68:[2,78],70:[2,78],71:[2,78],75:[2,78],77:[2,78],81:[2,78],82:[2,78],83:[2,78],88:[2,78],90:[2,78],99:[2,78],101:[2,78],102:[2,78],103:[2,78],107:[2,78],115:[2,78],123:[2,78],125:[2,78],126:[2,78],127:[2,78],128:[2,78],129:[2,78],130:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78]},{70:[1,234]},{55:[1,189],70:[2,83],89:235,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{70:[2,84]},{8:236,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,118],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{12:[2,112],28:[2,112],30:[2,112],31:[2,112],33:[2,112],34:[2,112],35:[2,112],36:[2,112],43:[2,112],44:[2,112],45:[2,112],49:[2,112],50:[2,112],70:[2,112],73:[2,112],76:[2,112],80:[2,112],85:[2,112],86:[2,112],87:[2,112],93:[2,112],97:[2,112],98:[2,112],101:[2,112],103:[2,112],105:[2,112],107:[2,112],116:[2,112],122:[2,112],124:[2,112],125:[2,112],126:[2,112],127:[2,112],128:[2,112]},{12:[2,113],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],70:[2,113],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],38:[2,82],47:[2,82],52:[2,82],55:[2,82],64:[2,82],65:[2,82],66:[2,82],68:[2,82],70:[2,82],71:[2,82],75:[2,82],77:[2,82],81:[2,82],82:[2,82],83:[2,82],88:[2,82],90:[2,82],99:[2,82],101:[2,82],102:[2,82],103:[2,82],107:[2,82],115:[2,82],123:[2,82],125:[2,82],126:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],47:[2,100],52:[2,100],55:[2,100],64:[2,100],65:[2,100],66:[2,100],68:[2,100],70:[2,100],71:[2,100],75:[2,100],81:[2,100],82:[2,100],83:[2,100],88:[2,100],90:[2,100],99:[2,100],101:[2,100],102:[2,100],103:[2,100],107:[2,100],115:[2,100],123:[2,100],125:[2,100],126:[2,100],129:[2,100],130:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],47:[2,34],52:[2,34],55:[2,34],70:[2,34],75:[2,34],83:[2,34],88:[2,34],90:[2,34],99:[2,34],100:85,101:[2,34],102:[2,34],103:[2,34],106:86,107:[2,34],108:67,115:[2,34],123:[2,34],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:237,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:238,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],47:[2,105],52:[2,105],55:[2,105],64:[2,105],65:[2,105],66:[2,105],68:[2,105],70:[2,105],71:[2,105],75:[2,105],81:[2,105],82:[2,105],83:[2,105],88:[2,105],90:[2,105],99:[2,105],101:[2,105],102:[2,105],103:[2,105],107:[2,105],115:[2,105],123:[2,105],125:[2,105],126:[2,105],129:[2,105],130:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105]},{6:[2,51],25:[2,51],51:239,52:[1,222],83:[2,51]},{6:[2,124],25:[2,124],26:[2,124],52:[2,124],55:[1,240],83:[2,124],88:[2,124],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{48:241,49:[1,58],50:[1,59]},{27:107,28:[1,71],42:108,53:242,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{47:[2,57],52:[2,57]},{8:243,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],47:[2,194],52:[2,194],55:[2,194],70:[2,194],75:[2,194],83:[2,194],88:[2,194],90:[2,194],99:[2,194],100:85,101:[2,194],102:[2,194],103:[2,194],106:86,107:[2,194],108:67,115:[2,194],123:[2,194],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:244,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],47:[2,196],52:[2,196],55:[2,196],70:[2,196],75:[2,196],83:[2,196],88:[2,196],90:[2,196],99:[2,196],100:85,101:[2,196],102:[2,196],103:[2,196],106:86,107:[2,196],108:67,115:[2,196],123:[2,196],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,176],6:[2,176],25:[2,176],26:[2,176],47:[2,176],52:[2,176],55:[2,176],70:[2,176],75:[2,176],83:[2,176],88:[2,176],90:[2,176],99:[2,176],101:[2,176],102:[2,176],103:[2,176],107:[2,176],115:[2,176],123:[2,176],125:[2,176],126:[2,176],129:[2,176],130:[2,176],131:[2,176],132:[2,176],133:[2,176],134:[2,176]},{8:245,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,129],6:[2,129],25:[2,129],26:[2,129],47:[2,129],52:[2,129],55:[2,129],70:[2,129],75:[2,129],83:[2,129],88:[2,129],90:[2,129],95:[1,246],99:[2,129],101:[2,129],102:[2,129],103:[2,129],107:[2,129],115:[2,129],123:[2,129],125:[2,129],126:[2,129],129:[2,129],130:[2,129],131:[2,129],132:[2,129],133:[2,129],134:[2,129]},{5:247,25:[1,5]},{27:248,28:[1,71]},{117:249,119:212,120:[1,213]},{26:[1,250],118:[1,251],119:252,120:[1,213]},{26:[2,169],118:[2,169],120:[2,169]},{8:254,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],92:253,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,93],5:255,6:[2,93],25:[1,5],26:[2,93],47:[2,93],52:[2,93],55:[2,93],70:[2,93],75:[2,93],83:[2,93],88:[2,93],90:[2,93],99:[2,93],100:85,101:[1,63],102:[2,93],103:[1,64],106:86,107:[1,66],108:67,115:[2,93],123:[2,93],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],47:[2,96],52:[2,96],55:[2,96],70:[2,96],75:[2,96],83:[2,96],88:[2,96],90:[2,96],99:[2,96],101:[2,96],102:[2,96],103:[2,96],107:[2,96],115:[2,96],123:[2,96],125:[2,96],126:[2,96],129:[2,96],130:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96]},{8:256,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],47:[2,134],52:[2,134],55:[2,134],64:[2,134],65:[2,134],66:[2,134],68:[2,134],70:[2,134],71:[2,134],75:[2,134],81:[2,134],82:[2,134],83:[2,134],88:[2,134],90:[2,134],99:[2,134],101:[2,134],102:[2,134],103:[2,134],107:[2,134],115:[2,134],123:[2,134],125:[2,134],126:[2,134],129:[2,134],130:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134]},{6:[1,72],26:[1,257]},{8:258,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,63],12:[2,113],25:[2,63],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],52:[2,63],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],88:[2,63],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{6:[1,260],25:[1,261],88:[1,259]},{6:[2,52],8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,52],26:[2,52],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[2,52],85:[1,56],86:[1,57],87:[1,55],88:[2,52],91:262,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],26:[2,51],51:263,52:[1,222]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],47:[2,173],52:[2,173],55:[2,173],70:[2,173],75:[2,173],83:[2,173],88:[2,173],90:[2,173],99:[2,173],101:[2,173],102:[2,173],103:[2,173],107:[2,173],115:[2,173],118:[2,173],123:[2,173],125:[2,173],126:[2,173],129:[2,173],130:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173]},{8:264,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:265,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{113:[2,152],114:[2,152]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],112:266},{1:[2,158],6:[2,158],25:[2,158],26:[2,158],47:[2,158],52:[2,158],55:[2,158],70:[2,158],75:[2,158],83:[2,158],88:[2,158],90:[2,158],99:[2,158],100:85,101:[2,158],102:[1,267],103:[2,158],106:86,107:[2,158],108:67,115:[1,268],123:[2,158],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,159],6:[2,159],25:[2,159],26:[2,159],47:[2,159],52:[2,159],55:[2,159],70:[2,159],75:[2,159],83:[2,159],88:[2,159],90:[2,159],99:[2,159],100:85,101:[2,159],102:[1,269],103:[2,159],106:86,107:[2,159],108:67,115:[2,159],123:[2,159],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,271],25:[1,272],75:[1,270]},{6:[2,52],11:165,25:[2,52],26:[2,52],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:273,40:164,42:168,44:[1,46],75:[2,52],86:[1,111]},{8:274,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,275],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],38:[2,81],47:[2,81],52:[2,81],55:[2,81],64:[2,81],65:[2,81],66:[2,81],68:[2,81],70:[2,81],71:[2,81],75:[2,81],77:[2,81],81:[2,81],82:[2,81],83:[2,81],88:[2,81],90:[2,81],99:[2,81],101:[2,81],102:[2,81],103:[2,81],107:[2,81],115:[2,81],123:[2,81],125:[2,81],126:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81]},{8:276,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,116],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,117],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],47:[2,35],52:[2,35],55:[2,35],70:[2,35],75:[2,35],83:[2,35],88:[2,35],90:[2,35],99:[2,35],100:85,101:[2,35],102:[2,35],103:[2,35],106:86,107:[2,35],108:67,115:[2,35],123:[2,35],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,277],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],83:[1,278]},{6:[2,63],25:[2,63],26:[2,63],52:[2,63],83:[2,63],88:[2,63]},{5:279,25:[1,5]},{47:[2,55],52:[2,55]},{47:[2,58],52:[2,58],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,280],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:281,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:282,25:[1,5]},{1:[2,130],6:[2,130],25:[2,130],26:[2,130],47:[2,130],52:[2,130],55:[2,130],70:[2,130],75:[2,130],83:[2,130],88:[2,130],90:[2,130],99:[2,130],101:[2,130],102:[2,130],103:[2,130],107:[2,130],115:[2,130],123:[2,130],125:[2,130],126:[2,130],129:[2,130],130:[2,130],131:[2,130],132:[2,130],133:[2,130],134:[2,130]},{5:283,25:[1,5]},{26:[1,284],118:[1,285],119:252,120:[1,213]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],47:[2,167],52:[2,167],55:[2,167],70:[2,167],75:[2,167],83:[2,167],88:[2,167],90:[2,167],99:[2,167],101:[2,167],102:[2,167],103:[2,167],107:[2,167],115:[2,167],123:[2,167],125:[2,167],126:[2,167],129:[2,167],130:[2,167],131:[2,167],132:[2,167],133:[2,167],134:[2,167]},{5:286,25:[1,5]},{26:[2,170],118:[2,170],120:[2,170]},{5:287,25:[1,5],52:[1,288]},{25:[2,126],52:[2,126],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,94],6:[2,94],25:[2,94],26:[2,94],47:[2,94],52:[2,94],55:[2,94],70:[2,94],75:[2,94],83:[2,94],88:[2,94],90:[2,94],99:[2,94],101:[2,94],102:[2,94],103:[2,94],107:[2,94],115:[2,94],123:[2,94],125:[2,94],126:[2,94],129:[2,94],130:[2,94],131:[2,94],132:[2,94],133:[2,94],134:[2,94]},{1:[2,97],5:289,6:[2,97],25:[1,5],26:[2,97],47:[2,97],52:[2,97],55:[2,97],70:[2,97],75:[2,97],83:[2,97],88:[2,97],90:[2,97],99:[2,97],100:85,101:[1,63],102:[2,97],103:[1,64],106:86,107:[1,66],108:67,115:[2,97],123:[2,97],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{99:[1,290]},{88:[1,291],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],38:[2,111],47:[2,111],52:[2,111],55:[2,111],64:[2,111],65:[2,111],66:[2,111],68:[2,111],70:[2,111],71:[2,111],75:[2,111],81:[2,111],82:[2,111],83:[2,111],88:[2,111],90:[2,111],99:[2,111],101:[2,111],102:[2,111],103:[2,111],107:[2,111],113:[2,111],114:[2,111],115:[2,111],123:[2,111],125:[2,111],126:[2,111],129:[2,111],130:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],91:292,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:293,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,120],25:[2,120],26:[2,120],52:[2,120],83:[2,120],88:[2,120]},{6:[1,260],25:[1,261],26:[1,294]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],47:[2,137],52:[2,137],55:[2,137],70:[2,137],75:[2,137],83:[2,137],88:[2,137],90:[2,137],99:[2,137],100:85,101:[1,63],102:[2,137],103:[1,64],106:86,107:[1,66],108:67,115:[2,137],123:[2,137],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],47:[2,139],52:[2,139],55:[2,139],70:[2,139],75:[2,139],83:[2,139],88:[2,139],90:[2,139],99:[2,139],100:85,101:[1,63],102:[2,139],103:[1,64],106:86,107:[1,66],108:67,115:[2,139],123:[2,139],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{113:[2,157],114:[2,157]},{8:295,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:296,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:297,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],38:[2,85],47:[2,85],52:[2,85],55:[2,85],64:[2,85],65:[2,85],66:[2,85],68:[2,85],70:[2,85],71:[2,85],75:[2,85],81:[2,85],82:[2,85],83:[2,85],88:[2,85],90:[2,85],99:[2,85],101:[2,85],102:[2,85],103:[2,85],107:[2,85],113:[2,85],114:[2,85],115:[2,85],123:[2,85],125:[2,85],126:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85]},{11:165,27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:298,40:164,42:168,44:[1,46],86:[1,111]},{6:[2,86],11:165,25:[2,86],26:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:299,86:[1,111]},{6:[2,88],25:[2,88],26:[2,88],52:[2,88],75:[2,88]},{6:[2,38],25:[2,38],26:[2,38],52:[2,38],75:[2,38],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:300,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,115],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],47:[2,36],52:[2,36],55:[2,36],70:[2,36],75:[2,36],83:[2,36],88:[2,36],90:[2,36],99:[2,36],101:[2,36],102:[2,36],103:[2,36],107:[2,36],115:[2,36],123:[2,36],125:[2,36],126:[2,36],129:[2,36],130:[2,36],131:[2,36],132:[2,36],133:[2,36],134:[2,36]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],47:[2,106],52:[2,106],55:[2,106],64:[2,106],65:[2,106],66:[2,106],68:[2,106],70:[2,106],71:[2,106],75:[2,106],81:[2,106],82:[2,106],83:[2,106],88:[2,106],90:[2,106],99:[2,106],101:[2,106],102:[2,106],103:[2,106],107:[2,106],115:[2,106],123:[2,106],125:[2,106],126:[2,106],129:[2,106],130:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],47:[2,47],52:[2,47],55:[2,47],70:[2,47],75:[2,47],83:[2,47],88:[2,47],90:[2,47],99:[2,47],101:[2,47],102:[2,47],103:[2,47],107:[2,47],115:[2,47],123:[2,47],125:[2,47],126:[2,47],129:[2,47],130:[2,47],131:[2,47],132:[2,47],133:[2,47],134:[2,47]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],47:[2,195],52:[2,195],55:[2,195],70:[2,195],75:[2,195],83:[2,195],88:[2,195],90:[2,195],99:[2,195],101:[2,195],102:[2,195],103:[2,195],107:[2,195],115:[2,195],123:[2,195],125:[2,195],126:[2,195],129:[2,195],130:[2,195],131:[2,195],132:[2,195],133:[2,195],134:[2,195]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],47:[2,174],52:[2,174],55:[2,174],70:[2,174],75:[2,174],83:[2,174],88:[2,174],90:[2,174],99:[2,174],101:[2,174],102:[2,174],103:[2,174],107:[2,174],115:[2,174],118:[2,174],123:[2,174],125:[2,174],126:[2,174],129:[2,174],130:[2,174],131:[2,174],132:[2,174],133:[2,174],134:[2,174]},{1:[2,131],6:[2,131],25:[2,131],26:[2,131],47:[2,131],52:[2,131],55:[2,131],70:[2,131],75:[2,131],83:[2,131],88:[2,131],90:[2,131],99:[2,131],101:[2,131],102:[2,131],103:[2,131],107:[2,131],115:[2,131],123:[2,131],125:[2,131],126:[2,131],129:[2,131],130:[2,131],131:[2,131],132:[2,131],133:[2,131],134:[2,131]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],47:[2,132],52:[2,132],55:[2,132],70:[2,132],75:[2,132],83:[2,132],88:[2,132],90:[2,132],95:[2,132],99:[2,132],101:[2,132],102:[2,132],103:[2,132],107:[2,132],115:[2,132],123:[2,132],125:[2,132],126:[2,132],129:[2,132],130:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],47:[2,165],52:[2,165],55:[2,165],70:[2,165],75:[2,165],83:[2,165],88:[2,165],90:[2,165],99:[2,165],101:[2,165],102:[2,165],103:[2,165],107:[2,165],115:[2,165],123:[2,165],125:[2,165],126:[2,165],129:[2,165],130:[2,165],131:[2,165],132:[2,165],133:[2,165],134:[2,165]},{5:301,25:[1,5]},{26:[1,302]},{6:[1,303],26:[2,171],118:[2,171],120:[2,171]},{8:304,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],47:[2,98],52:[2,98],55:[2,98],70:[2,98],75:[2,98],83:[2,98],88:[2,98],90:[2,98],99:[2,98],101:[2,98],102:[2,98],103:[2,98],107:[2,98],115:[2,98],123:[2,98],125:[2,98],126:[2,98],129:[2,98],130:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],47:[2,135],52:[2,135],55:[2,135],64:[2,135],65:[2,135],66:[2,135],68:[2,135],70:[2,135],71:[2,135],75:[2,135],81:[2,135],82:[2,135],83:[2,135],88:[2,135],90:[2,135],99:[2,135],101:[2,135],102:[2,135],103:[2,135],107:[2,135],115:[2,135],123:[2,135],125:[2,135],126:[2,135],129:[2,135],130:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],47:[2,114],52:[2,114],55:[2,114],64:[2,114],65:[2,114],66:[2,114],68:[2,114],70:[2,114],71:[2,114],75:[2,114],81:[2,114],82:[2,114],83:[2,114],88:[2,114],90:[2,114],99:[2,114],101:[2,114],102:[2,114],103:[2,114],107:[2,114],115:[2,114],123:[2,114],125:[2,114],126:[2,114],129:[2,114],130:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114]},{6:[2,121],25:[2,121],26:[2,121],52:[2,121],83:[2,121],88:[2,121]},{6:[2,51],25:[2,51],26:[2,51],51:305,52:[1,222]},{6:[2,122],25:[2,122],26:[2,122],52:[2,122],83:[2,122],88:[2,122]},{1:[2,160],6:[2,160],25:[2,160],26:[2,160],47:[2,160],52:[2,160],55:[2,160],70:[2,160],75:[2,160],83:[2,160],88:[2,160],90:[2,160],99:[2,160],100:85,101:[2,160],102:[2,160],103:[2,160],106:86,107:[2,160],108:67,115:[1,306],123:[2,160],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,162],6:[2,162],25:[2,162],26:[2,162],47:[2,162],52:[2,162],55:[2,162],70:[2,162],75:[2,162],83:[2,162],88:[2,162],90:[2,162],99:[2,162],100:85,101:[2,162],102:[1,307],103:[2,162],106:86,107:[2,162],108:67,115:[2,162],123:[2,162],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,161],6:[2,161],25:[2,161],26:[2,161],47:[2,161],52:[2,161],55:[2,161],70:[2,161],75:[2,161],83:[2,161],88:[2,161],90:[2,161],99:[2,161],100:85,101:[2,161],102:[2,161],103:[2,161],106:86,107:[2,161],108:67,115:[2,161],123:[2,161],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,89],25:[2,89],26:[2,89],52:[2,89],75:[2,89]},{6:[2,51],25:[2,51],26:[2,51],51:308,52:[1,232]},{26:[1,309],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,310]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],47:[2,168],52:[2,168],55:[2,168],70:[2,168],75:[2,168],83:[2,168],88:[2,168],90:[2,168],99:[2,168],101:[2,168],102:[2,168],103:[2,168],107:[2,168],115:[2,168],123:[2,168],125:[2,168],126:[2,168],129:[2,168],130:[2,168],131:[2,168],132:[2,168],133:[2,168],134:[2,168]},{26:[2,172],118:[2,172],120:[2,172]},{25:[2,127],52:[2,127],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],26:[1,311]},{8:312,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:313,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[1,271],25:[1,272],26:[1,314]},{6:[2,39],25:[2,39],26:[2,39],52:[2,39],75:[2,39]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],47:[2,166],52:[2,166],55:[2,166],70:[2,166],75:[2,166],83:[2,166],88:[2,166],90:[2,166],99:[2,166],101:[2,166],102:[2,166],103:[2,166],107:[2,166],115:[2,166],123:[2,166],125:[2,166],126:[2,166],129:[2,166],130:[2,166],131:[2,166],132:[2,166],133:[2,166],134:[2,166]},{6:[2,123],25:[2,123],26:[2,123],52:[2,123],83:[2,123],88:[2,123]},{1:[2,163],6:[2,163],25:[2,163],26:[2,163],47:[2,163],52:[2,163],55:[2,163],70:[2,163],75:[2,163],83:[2,163],88:[2,163],90:[2,163],99:[2,163],100:85,101:[2,163],102:[2,163],103:[2,163],106:86,107:[2,163],108:67,115:[2,163],123:[2,163],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],47:[2,164],52:[2,164],55:[2,164],70:[2,164],75:[2,164],83:[2,164],88:[2,164],90:[2,164],99:[2,164],100:85,101:[2,164],102:[2,164],103:[2,164],106:86,107:[2,164],108:67,115:[2,164],123:[2,164],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,90],25:[2,90],26:[2,90],52:[2,90],75:[2,90]}],
-defaultActions: {58:[2,49],59:[2,50],73:[2,3],92:[2,104],186:[2,84]},
-parseError: function parseError(str, hash) {
- throw new Error(str);
-},
-parse: function parse(input) {
- var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
- this.lexer.setInput(input);
- this.lexer.yy = this.yy;
- this.yy.lexer = this.lexer;
- if (typeof this.lexer.yylloc == "undefined")
- this.lexer.yylloc = {};
- var yyloc = this.lexer.yylloc;
- lstack.push(yyloc);
- if (typeof this.yy.parseError === "function")
- this.parseError = this.yy.parseError;
- function popStack(n) {
- stack.length = stack.length - 2 * n;
- vstack.length = vstack.length - n;
- lstack.length = lstack.length - n;
- }
- function lex() {
- var token;
- token = self.lexer.lex() || 1;
- if (typeof token !== "number") {
- token = self.symbols_[token] || token;
- }
- return token;
- }
- var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
- while (true) {
- state = stack[stack.length - 1];
- if (this.defaultActions[state]) {
- action = this.defaultActions[state];
- } else {
- if (symbol == null)
- symbol = lex();
- action = table[state] && table[state][symbol];
- }
- if (typeof action === "undefined" || !action.length || !action[0]) {
- if (!recovering) {
- expected = [];
- for (p in table[state])
- if (this.terminals_[p] && p > 2) {
- expected.push("'" + this.terminals_[p] + "'");
- }
- var errStr = "";
- if (this.lexer.showPosition) {
- errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + this.terminals_[symbol] + "'";
- } else {
- errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
- }
- this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
- }
- }
- if (action[0] instanceof Array && action.length > 1) {
- throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
- }
- switch (action[0]) {
- case 1:
- stack.push(symbol);
- vstack.push(this.lexer.yytext);
- lstack.push(this.lexer.yylloc);
- stack.push(action[1]);
- symbol = null;
- if (!preErrorSymbol) {
- yyleng = this.lexer.yyleng;
- yytext = this.lexer.yytext;
- yylineno = this.lexer.yylineno;
- yyloc = this.lexer.yylloc;
- if (recovering > 0)
- recovering--;
- } else {
- symbol = preErrorSymbol;
- preErrorSymbol = null;
- }
- break;
- case 2:
- len = this.productions_[action[1]][1];
- yyval.$ = vstack[vstack.length - len];
- yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
- r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
- if (typeof r !== "undefined") {
- return r;
- }
- if (len) {
- stack = stack.slice(0, -1 * len * 2);
- vstack = vstack.slice(0, -1 * len);
- lstack = lstack.slice(0, -1 * len);
- }
- stack.push(this.productions_[action[1]][0]);
- vstack.push(yyval.$);
- lstack.push(yyval._$);
- newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
- stack.push(newState);
- break;
- case 3:
- return true;
- }
- }
- return true;
-}
-};
-
-module.exports = parser;
-
-
-});
-
-define('ace/mode/coffee/nodes', ['require', 'exports', 'module' , 'ace/mode/coffee/scope', 'ace/mode/coffee/lexer', 'ace/mode/coffee/helpers'], function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
-
- var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, compact, del, ends, extend, flatten, last, merge, multident, starts, unfoldSoak, utility, _ref, _ref1,
- __hasProp = {}.hasOwnProperty,
- __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; },
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
- Scope = require('./scope').Scope;
-
- _ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED;
-
- _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last;
-
- exports.extend = extend;
-
- YES = function() {
- return true;
- };
-
- NO = function() {
- return false;
- };
-
- THIS = function() {
- return this;
- };
-
- NEGATE = function() {
- this.negated = !this.negated;
- return this;
- };
-
- exports.Base = Base = (function() {
-
- Base.name = 'Base';
-
- function Base() {}
-
- Base.prototype.compile = function(o, lvl) {
- var node;
- o = extend({}, o);
- if (lvl) o.level = lvl;
- node = this.unfoldSoak(o) || this;
- node.tab = o.indent;
- if (o.level === LEVEL_TOP || !node.isStatement(o)) {
- return node.compileNode(o);
- } else {
- return node.compileClosure(o);
- }
- };
-
- Base.prototype.compileClosure = function(o) {
- if (this.jumps()) {
- throw SyntaxError('cannot use a pure statement in an expression.');
- }
- o.sharedScope = true;
- return Closure.wrap(this).compileNode(o);
- };
-
- Base.prototype.cache = function(o, level, reused) {
- var ref, sub;
- if (!this.isComplex()) {
- ref = level ? this.compile(o, level) : this;
- return [ref, ref];
- } else {
- ref = new Literal(reused || o.scope.freeVariable('ref'));
- sub = new Assign(ref, this);
- if (level) {
- return [sub.compile(o, level), ref.value];
- } else {
- return [sub, ref];
- }
- }
- };
-
- Base.prototype.compileLoopReference = function(o, name) {
- var src, tmp;
- src = tmp = this.compile(o, LEVEL_LIST);
- if (!((-Infinity < +src && +src < Infinity) || IDENTIFIER.test(src) && o.scope.check(src, true))) {
- src = "" + (tmp = o.scope.freeVariable(name)) + " = " + src;
- }
- return [src, tmp];
- };
-
- Base.prototype.makeReturn = function(res) {
- var me;
- me = this.unwrapAll();
- if (res) {
- return new Call(new Literal("" + res + ".push"), [me]);
- } else {
- return new Return(me);
- }
- };
-
- Base.prototype.contains = function(pred) {
- var contains;
- contains = false;
- this.traverseChildren(false, function(node) {
- if (pred(node)) {
- contains = true;
- return false;
- }
- });
- return contains;
- };
-
- Base.prototype.containsType = function(type) {
- return this instanceof type || this.contains(function(node) {
- return node instanceof type;
- });
- };
-
- Base.prototype.lastNonComment = function(list) {
- var i;
- i = list.length;
- while (i--) {
- if (!(list[i] instanceof Comment)) return list[i];
- }
- return null;
- };
-
- Base.prototype.toString = function(idt, name) {
- var tree;
- if (idt == null) idt = '';
- if (name == null) name = this.constructor.name;
- tree = '\n' + idt + name;
- if (this.soak) tree += '?';
- this.eachChild(function(node) {
- return tree += node.toString(idt + TAB);
- });
- return tree;
- };
-
- Base.prototype.eachChild = function(func) {
- var attr, child, _i, _j, _len, _len1, _ref2, _ref3;
- if (!this.children) return this;
- _ref2 = this.children;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- attr = _ref2[_i];
- if (this[attr]) {
- _ref3 = flatten([this[attr]]);
- for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
- child = _ref3[_j];
- if (func(child) === false) return this;
- }
- }
- }
- return this;
- };
-
- Base.prototype.traverseChildren = function(crossScope, func) {
- return this.eachChild(function(child) {
- if (func(child) === false) return false;
- return child.traverseChildren(crossScope, func);
- });
- };
-
- Base.prototype.invert = function() {
- return new Op('!', this);
- };
-
- Base.prototype.unwrapAll = function() {
- var node;
- node = this;
- while (node !== (node = node.unwrap())) {
- continue;
- }
- return node;
- };
-
- Base.prototype.children = [];
-
- Base.prototype.isStatement = NO;
-
- Base.prototype.jumps = NO;
-
- Base.prototype.isComplex = YES;
-
- Base.prototype.isChainable = NO;
-
- Base.prototype.isAssignable = NO;
-
- Base.prototype.unwrap = THIS;
-
- Base.prototype.unfoldSoak = NO;
-
- Base.prototype.assigns = NO;
-
- return Base;
-
- })();
-
- exports.Block = Block = (function(_super) {
-
- __extends(Block, _super);
-
- Block.name = 'Block';
-
- function Block(nodes) {
- this.expressions = compact(flatten(nodes || []));
- }
-
- Block.prototype.children = ['expressions'];
-
- Block.prototype.push = function(node) {
- this.expressions.push(node);
- return this;
- };
-
- Block.prototype.pop = function() {
- return this.expressions.pop();
- };
-
- Block.prototype.unshift = function(node) {
- this.expressions.unshift(node);
- return this;
- };
-
- Block.prototype.unwrap = function() {
- if (this.expressions.length === 1) {
- return this.expressions[0];
- } else {
- return this;
- }
- };
-
- Block.prototype.isEmpty = function() {
- return !this.expressions.length;
- };
-
- Block.prototype.isStatement = function(o) {
- var exp, _i, _len, _ref2;
- _ref2 = this.expressions;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- exp = _ref2[_i];
- if (exp.isStatement(o)) return true;
- }
- return false;
- };
-
- Block.prototype.jumps = function(o) {
- var exp, _i, _len, _ref2;
- _ref2 = this.expressions;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- exp = _ref2[_i];
- if (exp.jumps(o)) return exp;
- }
- };
-
- Block.prototype.makeReturn = function(res) {
- var expr, len;
- len = this.expressions.length;
- while (len--) {
- expr = this.expressions[len];
- if (!(expr instanceof Comment)) {
- this.expressions[len] = expr.makeReturn(res);
- if (expr instanceof Return && !expr.expression) {
- this.expressions.splice(len, 1);
- }
- break;
- }
- }
- return this;
- };
-
- Block.prototype.compile = function(o, level) {
- if (o == null) o = {};
- if (o.scope) {
- return Block.__super__.compile.call(this, o, level);
- } else {
- return this.compileRoot(o);
- }
- };
-
- Block.prototype.compileNode = function(o) {
- var code, codes, node, top, _i, _len, _ref2;
- this.tab = o.indent;
- top = o.level === LEVEL_TOP;
- codes = [];
- _ref2 = this.expressions;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- node = _ref2[_i];
- node = node.unwrapAll();
- node = node.unfoldSoak(o) || node;
- if (node instanceof Block) {
- codes.push(node.compileNode(o));
- } else if (top) {
- node.front = true;
- code = node.compile(o);
- if (!node.isStatement(o)) {
- code = "" + this.tab + code + ";";
- if (node instanceof Literal) code = "" + code + "\n";
- }
- codes.push(code);
- } else {
- codes.push(node.compile(o, LEVEL_LIST));
- }
- }
- if (top) {
- if (this.spaced) {
- return "\n" + (codes.join('\n\n')) + "\n";
- } else {
- return codes.join('\n');
- }
- }
- code = codes.join(', ') || 'void 0';
- if (codes.length > 1 && o.level >= LEVEL_LIST) {
- return "(" + code + ")";
- } else {
- return code;
- }
- };
-
- Block.prototype.compileRoot = function(o) {
- var code, exp, i, prelude, preludeExps, rest;
- o.indent = o.bare ? '' : TAB;
- o.scope = new Scope(null, this, null);
- o.level = LEVEL_TOP;
- this.spaced = true;
- prelude = "";
- if (!o.bare) {
- preludeExps = (function() {
- var _i, _len, _ref2, _results;
- _ref2 = this.expressions;
- _results = [];
- for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
- exp = _ref2[i];
- if (!(exp.unwrap() instanceof Comment)) break;
- _results.push(exp);
- }
- return _results;
- }).call(this);
- rest = this.expressions.slice(preludeExps.length);
- this.expressions = preludeExps;
- if (preludeExps.length) {
- prelude = "" + (this.compileNode(merge(o, {
- indent: ''
- }))) + "\n";
- }
- this.expressions = rest;
- }
- code = this.compileWithDeclarations(o);
- if (o.bare) return code;
- return "" + prelude + "(function() {\n" + code + "\n}).call(this);\n";
- };
-
- Block.prototype.compileWithDeclarations = function(o) {
- var assigns, code, declars, exp, i, post, rest, scope, spaced, _i, _len, _ref2, _ref3, _ref4;
- code = post = '';
- _ref2 = this.expressions;
- for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
- exp = _ref2[i];
- exp = exp.unwrap();
- if (!(exp instanceof Comment || exp instanceof Literal)) break;
- }
- o = merge(o, {
- level: LEVEL_TOP
- });
- if (i) {
- rest = this.expressions.splice(i, 9e9);
- _ref3 = [this.spaced, false], spaced = _ref3[0], this.spaced = _ref3[1];
- _ref4 = [this.compileNode(o), spaced], code = _ref4[0], this.spaced = _ref4[1];
- this.expressions = rest;
- }
- post = this.compileNode(o);
- scope = o.scope;
- if (scope.expressions === this) {
- declars = o.scope.hasDeclarations();
- assigns = scope.hasAssignments;
- if (declars || assigns) {
- if (i) code += '\n';
- code += "" + this.tab + "var ";
- if (declars) code += scope.declaredVariables().join(', ');
- if (assigns) {
- if (declars) code += ",\n" + (this.tab + TAB);
- code += scope.assignedVariables().join(",\n" + (this.tab + TAB));
- }
- code += ';\n';
- }
- }
- return code + post;
- };
-
- Block.wrap = function(nodes) {
- if (nodes.length === 1 && nodes[0] instanceof Block) return nodes[0];
- return new Block(nodes);
- };
-
- return Block;
-
- })(Base);
-
- exports.Literal = Literal = (function(_super) {
-
- __extends(Literal, _super);
-
- Literal.name = 'Literal';
-
- function Literal(value) {
- this.value = value;
- }
-
- Literal.prototype.makeReturn = function() {
- if (this.isStatement()) {
- return this;
- } else {
- return Literal.__super__.makeReturn.apply(this, arguments);
- }
- };
-
- Literal.prototype.isAssignable = function() {
- return IDENTIFIER.test(this.value);
- };
-
- Literal.prototype.isStatement = function() {
- var _ref2;
- return (_ref2 = this.value) === 'break' || _ref2 === 'continue' || _ref2 === 'debugger';
- };
-
- Literal.prototype.isComplex = NO;
-
- Literal.prototype.assigns = function(name) {
- return name === this.value;
- };
-
- Literal.prototype.jumps = function(o) {
- if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
- return this;
- }
- if (this.value === 'continue' && !(o != null ? o.loop : void 0)) return this;
- };
-
- Literal.prototype.compileNode = function(o) {
- var code, _ref2;
- code = this.isUndefined ? o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0' : this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value;
- if (this.isStatement()) {
- return "" + this.tab + code + ";";
- } else {
- return code;
- }
- };
-
- Literal.prototype.toString = function() {
- return ' "' + this.value + '"';
- };
-
- return Literal;
-
- })(Base);
-
- exports.Return = Return = (function(_super) {
-
- __extends(Return, _super);
-
- Return.name = 'Return';
-
- function Return(expr) {
- if (expr && !expr.unwrap().isUndefined) this.expression = expr;
- }
-
- Return.prototype.children = ['expression'];
-
- Return.prototype.isStatement = YES;
-
- Return.prototype.makeReturn = THIS;
-
- Return.prototype.jumps = THIS;
-
- Return.prototype.compile = function(o, level) {
- var expr, _ref2;
- expr = (_ref2 = this.expression) != null ? _ref2.makeReturn() : void 0;
- if (expr && !(expr instanceof Return)) {
- return expr.compile(o, level);
- } else {
- return Return.__super__.compile.call(this, o, level);
- }
- };
-
- Return.prototype.compileNode = function(o) {
- return this.tab + ("return" + [this.expression ? " " + (this.expression.compile(o, LEVEL_PAREN)) : void 0] + ";");
- };
-
- return Return;
-
- })(Base);
-
- exports.Value = Value = (function(_super) {
-
- __extends(Value, _super);
-
- Value.name = 'Value';
-
- function Value(base, props, tag) {
- if (!props && base instanceof Value) return base;
- this.base = base;
- this.properties = props || [];
- if (tag) this[tag] = true;
- return this;
- }
-
- Value.prototype.children = ['base', 'properties'];
-
- Value.prototype.add = function(props) {
- this.properties = this.properties.concat(props);
- return this;
- };
-
- Value.prototype.hasProperties = function() {
- return !!this.properties.length;
- };
-
- Value.prototype.isArray = function() {
- return !this.properties.length && this.base instanceof Arr;
- };
-
- Value.prototype.isComplex = function() {
- return this.hasProperties() || this.base.isComplex();
- };
-
- Value.prototype.isAssignable = function() {
- return this.hasProperties() || this.base.isAssignable();
- };
-
- Value.prototype.isSimpleNumber = function() {
- return this.base instanceof Literal && SIMPLENUM.test(this.base.value);
- };
-
- Value.prototype.isString = function() {
- return this.base instanceof Literal && IS_STRING.test(this.base.value);
- };
-
- Value.prototype.isAtomic = function() {
- var node, _i, _len, _ref2;
- _ref2 = this.properties.concat(this.base);
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- node = _ref2[_i];
- if (node.soak || node instanceof Call) return false;
- }
- return true;
- };
-
- Value.prototype.isStatement = function(o) {
- return !this.properties.length && this.base.isStatement(o);
- };
-
- Value.prototype.assigns = function(name) {
- return !this.properties.length && this.base.assigns(name);
- };
-
- Value.prototype.jumps = function(o) {
- return !this.properties.length && this.base.jumps(o);
- };
-
- Value.prototype.isObject = function(onlyGenerated) {
- if (this.properties.length) return false;
- return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
- };
-
- Value.prototype.isSplice = function() {
- return last(this.properties) instanceof Slice;
- };
-
- Value.prototype.unwrap = function() {
- if (this.properties.length) {
- return this;
- } else {
- return this.base;
- }
- };
-
- Value.prototype.cacheReference = function(o) {
- var base, bref, name, nref;
- name = last(this.properties);
- if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) {
- return [this, this];
- }
- base = new Value(this.base, this.properties.slice(0, -1));
- if (base.isComplex()) {
- bref = new Literal(o.scope.freeVariable('base'));
- base = new Value(new Parens(new Assign(bref, base)));
- }
- if (!name) return [base, bref];
- if (name.isComplex()) {
- nref = new Literal(o.scope.freeVariable('name'));
- name = new Index(new Assign(nref, name.index));
- nref = new Index(nref);
- }
- return [base.add(name), new Value(bref || base.base, [nref || name])];
- };
-
- Value.prototype.compileNode = function(o) {
- var code, prop, props, _i, _len;
- this.base.front = this.front;
- props = this.properties;
- code = this.base.compile(o, props.length ? LEVEL_ACCESS : null);
- if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(code)) {
- code = "" + code + ".";
- }
- for (_i = 0, _len = props.length; _i < _len; _i++) {
- prop = props[_i];
- code += prop.compile(o);
- }
- return code;
- };
-
- Value.prototype.unfoldSoak = function(o) {
- var result,
- _this = this;
- if (this.unfoldedSoak != null) return this.unfoldedSoak;
- result = (function() {
- var fst, i, ifn, prop, ref, snd, _i, _len, _ref2;
- if (ifn = _this.base.unfoldSoak(o)) {
- Array.prototype.push.apply(ifn.body.properties, _this.properties);
- return ifn;
- }
- _ref2 = _this.properties;
- for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
- prop = _ref2[i];
- if (!prop.soak) continue;
- prop.soak = false;
- fst = new Value(_this.base, _this.properties.slice(0, i));
- snd = new Value(_this.base, _this.properties.slice(i));
- if (fst.isComplex()) {
- ref = new Literal(o.scope.freeVariable('ref'));
- fst = new Parens(new Assign(ref, fst));
- snd.base = ref;
- }
- return new If(new Existence(fst), snd, {
- soak: true
- });
- }
- return null;
- })();
- return this.unfoldedSoak = result || false;
- };
-
- return Value;
-
- })(Base);
-
- exports.Comment = Comment = (function(_super) {
-
- __extends(Comment, _super);
-
- Comment.name = 'Comment';
-
- function Comment(comment) {
- this.comment = comment;
- }
-
- Comment.prototype.isStatement = YES;
-
- Comment.prototype.makeReturn = THIS;
-
- Comment.prototype.compileNode = function(o, level) {
- var code;
- code = '/*' + multident(this.comment, this.tab) + ("\n" + this.tab + "*/\n");
- if ((level || o.level) === LEVEL_TOP) code = o.indent + code;
- return code;
- };
-
- return Comment;
-
- })(Base);
-
- exports.Call = Call = (function(_super) {
-
- __extends(Call, _super);
-
- Call.name = 'Call';
-
- function Call(variable, args, soak) {
- this.args = args != null ? args : [];
- this.soak = soak;
- this.isNew = false;
- this.isSuper = variable === 'super';
- this.variable = this.isSuper ? null : variable;
- }
-
- Call.prototype.children = ['variable', 'args'];
-
- Call.prototype.newInstance = function() {
- var base, _ref2;
- base = ((_ref2 = this.variable) != null ? _ref2.base : void 0) || this.variable;
- if (base instanceof Call && !base.isNew) {
- base.newInstance();
- } else {
- this.isNew = true;
- }
- return this;
- };
-
- Call.prototype.superReference = function(o) {
- var accesses, method, name;
- method = o.scope.method;
- if (!method) throw SyntaxError('cannot call super outside of a function.');
- name = method.name;
- if (name == null) {
- throw SyntaxError('cannot call super on an anonymous function.');
- }
- if (method.klass) {
- accesses = [new Access(new Literal('__super__'))];
- if (method["static"]) {
- accesses.push(new Access(new Literal('constructor')));
- }
- accesses.push(new Access(new Literal(name)));
- return (new Value(new Literal(method.klass), accesses)).compile(o);
- } else {
- return "" + name + ".__super__.constructor";
- }
- };
-
- Call.prototype.unfoldSoak = function(o) {
- var call, ifn, left, list, rite, _i, _len, _ref2, _ref3;
- if (this.soak) {
- if (this.variable) {
- if (ifn = unfoldSoak(o, this, 'variable')) return ifn;
- _ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1];
- } else {
- left = new Literal(this.superReference(o));
- rite = new Value(left);
- }
- rite = new Call(rite, this.args);
- rite.isNew = this.isNew;
- left = new Literal("typeof " + (left.compile(o)) + " === \"function\"");
- return new If(left, new Value(rite), {
- soak: true
- });
- }
- call = this;
- list = [];
- while (true) {
- if (call.variable instanceof Call) {
- list.push(call);
- call = call.variable;
- continue;
- }
- if (!(call.variable instanceof Value)) break;
- list.push(call);
- if (!((call = call.variable.base) instanceof Call)) break;
- }
- _ref3 = list.reverse();
- for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
- call = _ref3[_i];
- if (ifn) {
- if (call.variable instanceof Call) {
- call.variable = ifn;
- } else {
- call.variable.base = ifn;
- }
- }
- ifn = unfoldSoak(o, call, 'variable');
- }
- return ifn;
- };
-
- Call.prototype.filterImplicitObjects = function(list) {
- var node, nodes, obj, prop, properties, _i, _j, _len, _len1, _ref2;
- nodes = [];
- for (_i = 0, _len = list.length; _i < _len; _i++) {
- node = list[_i];
- if (!((typeof node.isObject === "function" ? node.isObject() : void 0) && node.base.generated)) {
- nodes.push(node);
- continue;
- }
- obj = null;
- _ref2 = node.base.properties;
- for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
- prop = _ref2[_j];
- if (prop instanceof Assign || prop instanceof Comment) {
- if (!obj) nodes.push(obj = new Obj(properties = [], true));
- properties.push(prop);
- } else {
- nodes.push(prop);
- obj = null;
- }
- }
- }
- return nodes;
- };
-
- Call.prototype.compileNode = function(o) {
- var arg, args, code, _ref2;
- if ((_ref2 = this.variable) != null) _ref2.front = this.front;
- if (code = Splat.compileSplattedArray(o, this.args, true)) {
- return this.compileSplat(o, code);
- }
- args = this.filterImplicitObjects(this.args);
- args = ((function() {
- var _i, _len, _results;
- _results = [];
- for (_i = 0, _len = args.length; _i < _len; _i++) {
- arg = args[_i];
- _results.push(arg.compile(o, LEVEL_LIST));
- }
- return _results;
- })()).join(', ');
- if (this.isSuper) {
- return this.superReference(o) + (".call(this" + (args && ', ' + args) + ")");
- } else {
- return (this.isNew ? 'new ' : '') + this.variable.compile(o, LEVEL_ACCESS) + ("(" + args + ")");
- }
- };
-
- Call.prototype.compileSuper = function(args, o) {
- return "" + (this.superReference(o)) + ".call(this" + (args.length ? ', ' : '') + args + ")";
- };
-
- Call.prototype.compileSplat = function(o, splatArgs) {
- var base, fun, idt, name, ref;
- if (this.isSuper) {
- return "" + (this.superReference(o)) + ".apply(this, " + splatArgs + ")";
- }
- if (this.isNew) {
- idt = this.tab + TAB;
- return "(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args), t = typeof result;\n" + idt + "return t == \"object\" || t == \"function\" ? result || child : child;\n" + this.tab + "})(" + (this.variable.compile(o, LEVEL_LIST)) + ", " + splatArgs + ", function(){})";
- }
- base = new Value(this.variable);
- if ((name = base.properties.pop()) && base.isComplex()) {
- ref = o.scope.freeVariable('ref');
- fun = "(" + ref + " = " + (base.compile(o, LEVEL_LIST)) + ")" + (name.compile(o));
- } else {
- fun = base.compile(o, LEVEL_ACCESS);
- if (SIMPLENUM.test(fun)) fun = "(" + fun + ")";
- if (name) {
- ref = fun;
- fun += name.compile(o);
- } else {
- ref = 'null';
- }
- }
- return "" + fun + ".apply(" + ref + ", " + splatArgs + ")";
- };
-
- return Call;
-
- })(Base);
-
- exports.Extends = Extends = (function(_super) {
-
- __extends(Extends, _super);
-
- Extends.name = 'Extends';
-
- function Extends(child, parent) {
- this.child = child;
- this.parent = parent;
- }
-
- Extends.prototype.children = ['child', 'parent'];
-
- Extends.prototype.compile = function(o) {
- return new Call(new Value(new Literal(utility('extends'))), [this.child, this.parent]).compile(o);
- };
-
- return Extends;
-
- })(Base);
-
- exports.Access = Access = (function(_super) {
-
- __extends(Access, _super);
-
- Access.name = 'Access';
-
- function Access(name, tag) {
- this.name = name;
- this.name.asKey = true;
- this.soak = tag === 'soak';
- }
-
- Access.prototype.children = ['name'];
-
- Access.prototype.compile = function(o) {
- var name;
- name = this.name.compile(o);
- if (IDENTIFIER.test(name)) {
- return "." + name;
- } else {
- return "[" + name + "]";
- }
- };
-
- Access.prototype.isComplex = NO;
-
- return Access;
-
- })(Base);
-
- exports.Index = Index = (function(_super) {
-
- __extends(Index, _super);
-
- Index.name = 'Index';
-
- function Index(index) {
- this.index = index;
- }
-
- Index.prototype.children = ['index'];
-
- Index.prototype.compile = function(o) {
- return "[" + (this.index.compile(o, LEVEL_PAREN)) + "]";
- };
-
- Index.prototype.isComplex = function() {
- return this.index.isComplex();
- };
-
- return Index;
-
- })(Base);
-
- exports.Range = Range = (function(_super) {
-
- __extends(Range, _super);
-
- Range.name = 'Range';
-
- Range.prototype.children = ['from', 'to'];
-
- function Range(from, to, tag) {
- this.from = from;
- this.to = to;
- this.exclusive = tag === 'exclusive';
- this.equals = this.exclusive ? '' : '=';
- }
-
- Range.prototype.compileVariables = function(o) {
- var step, _ref2, _ref3, _ref4, _ref5;
- o = merge(o, {
- top: true
- });
- _ref2 = this.from.cache(o, LEVEL_LIST), this.fromC = _ref2[0], this.fromVar = _ref2[1];
- _ref3 = this.to.cache(o, LEVEL_LIST), this.toC = _ref3[0], this.toVar = _ref3[1];
- if (step = del(o, 'step')) {
- _ref4 = step.cache(o, LEVEL_LIST), this.step = _ref4[0], this.stepVar = _ref4[1];
- }
- _ref5 = [this.fromVar.match(SIMPLENUM), this.toVar.match(SIMPLENUM)], this.fromNum = _ref5[0], this.toNum = _ref5[1];
- if (this.stepVar) return this.stepNum = this.stepVar.match(SIMPLENUM);
- };
-
- Range.prototype.compileNode = function(o) {
- var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3;
- if (!this.fromVar) this.compileVariables(o);
- if (!o.index) return this.compileArray(o);
- known = this.fromNum && this.toNum;
- idx = del(o, 'index');
- idxName = del(o, 'name');
- namedIndex = idxName && idxName !== idx;
- varPart = "" + idx + " = " + this.fromC;
- if (this.toC !== this.toVar) varPart += ", " + this.toC;
- if (this.step !== this.stepVar) varPart += ", " + this.step;
- _ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1];
- condPart = this.stepNum ? +this.stepNum > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [+this.fromNum, +this.toNum], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar);
- stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--";
- if (namedIndex) varPart = "" + idxName + " = " + varPart;
- if (namedIndex) stepPart = "" + idxName + " = " + stepPart;
- return "" + varPart + "; " + condPart + "; " + stepPart;
- };
-
- Range.prototype.compileArray = function(o) {
- var args, body, cond, hasArgs, i, idt, post, pre, range, result, vars, _i, _ref2, _ref3, _results;
- if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) {
- range = (function() {
- _results = [];
- for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); }
- return _results;
- }).apply(this);
- if (this.exclusive) range.pop();
- return "[" + (range.join(', ')) + "]";
- }
- idt = this.tab + TAB;
- i = o.scope.freeVariable('i');
- result = o.scope.freeVariable('results');
- pre = "\n" + idt + result + " = [];";
- if (this.fromNum && this.toNum) {
- o.index = i;
- body = this.compileNode(o);
- } else {
- vars = ("" + i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : '');
- cond = "" + this.fromVar + " <= " + this.toVar;
- body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--";
- }
- post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent;
- hasArgs = function(node) {
- return node != null ? node.contains(function(n) {
- return n instanceof Literal && n.value === 'arguments' && !n.asKey;
- }) : void 0;
- };
- if (hasArgs(this.from) || hasArgs(this.to)) args = ', arguments';
- return "(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")";
- };
-
- return Range;
-
- })(Base);
-
- exports.Slice = Slice = (function(_super) {
-
- __extends(Slice, _super);
-
- Slice.name = 'Slice';
-
- Slice.prototype.children = ['range'];
-
- function Slice(range) {
- this.range = range;
- Slice.__super__.constructor.call(this);
- }
-
- Slice.prototype.compileNode = function(o) {
- var compiled, from, fromStr, to, toStr, _ref2;
- _ref2 = this.range, to = _ref2.to, from = _ref2.from;
- fromStr = from && from.compile(o, LEVEL_PAREN) || '0';
- compiled = to && to.compile(o, LEVEL_PAREN);
- if (to && !(!this.range.exclusive && +compiled === -1)) {
- toStr = ', ' + (this.range.exclusive ? compiled : SIMPLENUM.test(compiled) ? "" + (+compiled + 1) : (compiled = to.compile(o, LEVEL_ACCESS), "" + compiled + " + 1 || 9e9"));
- }
- return ".slice(" + fromStr + (toStr || '') + ")";
- };
-
- return Slice;
-
- })(Base);
-
- exports.Obj = Obj = (function(_super) {
-
- __extends(Obj, _super);
-
- Obj.name = 'Obj';
-
- function Obj(props, generated) {
- this.generated = generated != null ? generated : false;
- this.objects = this.properties = props || [];
- }
-
- Obj.prototype.children = ['properties'];
-
- Obj.prototype.compileNode = function(o) {
- var i, idt, indent, join, lastNoncom, node, obj, prop, propName, propNames, props, _i, _j, _len, _len1, _ref2;
- props = this.properties;
- propNames = [];
- _ref2 = this.properties;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- prop = _ref2[_i];
- if (prop.isComplex()) prop = prop.variable;
- if (prop != null) {
- propName = prop.unwrapAll().value.toString();
- if (__indexOf.call(propNames, propName) >= 0) {
- throw SyntaxError("multiple object literal properties named \"" + propName + "\"");
- }
- propNames.push(propName);
- }
- }
- if (!props.length) return (this.front ? '({})' : '{}');
- if (this.generated) {
- for (_j = 0, _len1 = props.length; _j < _len1; _j++) {
- node = props[_j];
- if (node instanceof Value) {
- throw new Error('cannot have an implicit value in an implicit object');
- }
- }
- }
- idt = o.indent += TAB;
- lastNoncom = this.lastNonComment(this.properties);
- props = (function() {
- var _k, _len2, _results;
- _results = [];
- for (i = _k = 0, _len2 = props.length; _k < _len2; i = ++_k) {
- prop = props[i];
- join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n';
- indent = prop instanceof Comment ? '' : idt;
- if (prop instanceof Value && prop["this"]) {
- prop = new Assign(prop.properties[0].name, prop, 'object');
- }
- if (!(prop instanceof Comment)) {
- if (!(prop instanceof Assign)) prop = new Assign(prop, prop, 'object');
- (prop.variable.base || prop.variable).asKey = true;
- }
- _results.push(indent + prop.compile(o, LEVEL_TOP) + join);
- }
- return _results;
- })();
- props = props.join('');
- obj = "{" + (props && '\n' + props + '\n' + this.tab) + "}";
- if (this.front) {
- return "(" + obj + ")";
- } else {
- return obj;
- }
- };
-
- Obj.prototype.assigns = function(name) {
- var prop, _i, _len, _ref2;
- _ref2 = this.properties;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- prop = _ref2[_i];
- if (prop.assigns(name)) return true;
- }
- return false;
- };
-
- return Obj;
-
- })(Base);
-
- exports.Arr = Arr = (function(_super) {
-
- __extends(Arr, _super);
-
- Arr.name = 'Arr';
-
- function Arr(objs) {
- this.objects = objs || [];
- }
-
- Arr.prototype.children = ['objects'];
-
- Arr.prototype.filterImplicitObjects = Call.prototype.filterImplicitObjects;
-
- Arr.prototype.compileNode = function(o) {
- var code, obj, objs;
- if (!this.objects.length) return '[]';
- o.indent += TAB;
- objs = this.filterImplicitObjects(this.objects);
- if (code = Splat.compileSplattedArray(o, objs)) return code;
- code = ((function() {
- var _i, _len, _results;
- _results = [];
- for (_i = 0, _len = objs.length; _i < _len; _i++) {
- obj = objs[_i];
- _results.push(obj.compile(o, LEVEL_LIST));
- }
- return _results;
- })()).join(', ');
- if (code.indexOf('\n') >= 0) {
- return "[\n" + o.indent + code + "\n" + this.tab + "]";
- } else {
- return "[" + code + "]";
- }
- };
-
- Arr.prototype.assigns = function(name) {
- var obj, _i, _len, _ref2;
- _ref2 = this.objects;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- obj = _ref2[_i];
- if (obj.assigns(name)) return true;
- }
- return false;
- };
-
- return Arr;
-
- })(Base);
-
- exports.Class = Class = (function(_super) {
-
- __extends(Class, _super);
-
- Class.name = 'Class';
-
- function Class(variable, parent, body) {
- this.variable = variable;
- this.parent = parent;
- this.body = body != null ? body : new Block;
- this.boundFuncs = [];
- this.body.classBody = true;
- }
-
- Class.prototype.children = ['variable', 'parent', 'body'];
-
- Class.prototype.determineName = function() {
- var decl, tail;
- if (!this.variable) return null;
- decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value;
- if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) {
- throw SyntaxError("variable name may not be " + decl);
- }
- return decl && (decl = IDENTIFIER.test(decl) && decl);
- };
-
- Class.prototype.setContext = function(name) {
- return this.body.traverseChildren(false, function(node) {
- if (node.classBody) return false;
- if (node instanceof Literal && node.value === 'this') {
- return node.value = name;
- } else if (node instanceof Code) {
- node.klass = name;
- if (node.bound) return node.context = name;
- }
- });
- };
-
- Class.prototype.addBoundFunctions = function(o) {
- var bvar, lhs, _i, _len, _ref2, _results;
- if (this.boundFuncs.length) {
- _ref2 = this.boundFuncs;
- _results = [];
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- bvar = _ref2[_i];
- lhs = (new Value(new Literal("this"), [new Access(bvar)])).compile(o);
- _results.push(this.ctor.body.unshift(new Literal("" + lhs + " = " + (utility('bind')) + "(" + lhs + ", this)")));
- }
- return _results;
- }
- };
-
- Class.prototype.addProperties = function(node, name, o) {
- var assign, base, exprs, func, props;
- props = node.base.properties.slice(0);
- exprs = (function() {
- var _results;
- _results = [];
- while (assign = props.shift()) {
- if (assign instanceof Assign) {
- base = assign.variable.base;
- delete assign.context;
- func = assign.value;
- if (base.value === 'constructor') {
- if (this.ctor) {
- throw new Error('cannot define more than one constructor in a class');
- }
- if (func.bound) {
- throw new Error('cannot define a constructor as a bound function');
- }
- if (func instanceof Code) {
- assign = this.ctor = func;
- } else {
- this.externalCtor = o.scope.freeVariable('class');
- assign = new Assign(new Literal(this.externalCtor), func);
- }
- } else {
- if (assign.variable["this"]) {
- func["static"] = true;
- if (func.bound) func.context = name;
- } else {
- assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]);
- if (func instanceof Code && func.bound) {
- this.boundFuncs.push(base);
- func.bound = false;
- }
- }
- }
- }
- _results.push(assign);
- }
- return _results;
- }).call(this);
- return compact(exprs);
- };
-
- Class.prototype.walkBody = function(name, o) {
- var _this = this;
- return this.traverseChildren(false, function(child) {
- var exps, i, node, _i, _len, _ref2;
- if (child instanceof Class) return false;
- if (child instanceof Block) {
- _ref2 = exps = child.expressions;
- for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
- node = _ref2[i];
- if (node instanceof Value && node.isObject(true)) {
- exps[i] = _this.addProperties(node, name, o);
- }
- }
- return child.expressions = exps = flatten(exps);
- }
- });
- };
-
- Class.prototype.hoistDirectivePrologue = function() {
- var expressions, index, node;
- index = 0;
- expressions = this.body.expressions;
- while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) {
- ++index;
- }
- return this.directives = expressions.splice(0, index);
- };
-
- Class.prototype.ensureConstructor = function(name) {
- if (!this.ctor) {
- this.ctor = new Code;
- if (this.parent) {
- this.ctor.body.push(new Literal("" + name + ".__super__.constructor.apply(this, arguments)"));
- }
- if (this.externalCtor) {
- this.ctor.body.push(new Literal("" + this.externalCtor + ".apply(this, arguments)"));
- }
- this.ctor.body.makeReturn();
- this.body.expressions.unshift(this.ctor);
- }
- this.ctor.ctor = this.ctor.name = name;
- this.ctor.klass = null;
- return this.ctor.noReturn = true;
- };
-
- Class.prototype.compileNode = function(o) {
- var call, decl, klass, lname, name, params, _ref2;
- decl = this.determineName();
- name = decl || '_Class';
- if (name.reserved) name = "_" + name;
- lname = new Literal(name);
- this.hoistDirectivePrologue();
- this.setContext(name);
- this.walkBody(name, o);
- this.ensureConstructor(name);
- this.body.spaced = true;
- if (!(this.ctor instanceof Code)) this.body.expressions.unshift(this.ctor);
- if (decl) {
- this.body.expressions.unshift(new Assign(new Value(new Literal(name), [new Access(new Literal('name'))]), new Literal("'" + name + "'")));
- }
- this.body.expressions.push(lname);
- (_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives);
- this.addBoundFunctions(o);
- call = Closure.wrap(this.body);
- if (this.parent) {
- this.superClass = new Literal(o.scope.freeVariable('super', false));
- this.body.expressions.unshift(new Extends(lname, this.superClass));
- call.args.push(this.parent);
- params = call.variable.params || call.variable.base.params;
- params.push(new Param(this.superClass));
- }
- klass = new Parens(call, true);
- if (this.variable) klass = new Assign(this.variable, klass);
- return klass.compile(o);
- };
-
- return Class;
-
- })(Base);
-
- exports.Assign = Assign = (function(_super) {
-
- __extends(Assign, _super);
-
- Assign.name = 'Assign';
-
- function Assign(variable, value, context, options) {
- var forbidden, name, _ref2;
- this.variable = variable;
- this.value = value;
- this.context = context;
- this.param = options && options.param;
- this.subpattern = options && options.subpattern;
- forbidden = (_ref2 = (name = this.variable.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0);
- if (forbidden && this.context !== 'object') {
- throw SyntaxError("variable name may not be \"" + name + "\"");
- }
- }
-
- Assign.prototype.children = ['variable', 'value'];
-
- Assign.prototype.isStatement = function(o) {
- return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && __indexOf.call(this.context, "?") >= 0;
- };
-
- Assign.prototype.assigns = function(name) {
- return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);
- };
-
- Assign.prototype.unfoldSoak = function(o) {
- return unfoldSoak(o, this, 'variable');
- };
-
- Assign.prototype.compileNode = function(o) {
- var isValue, match, name, val, varBase, _ref2, _ref3, _ref4, _ref5;
- if (isValue = this.variable instanceof Value) {
- if (this.variable.isArray() || this.variable.isObject()) {
- return this.compilePatternMatch(o);
- }
- if (this.variable.isSplice()) return this.compileSplice(o);
- if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') {
- return this.compileConditional(o);
- }
- }
- name = this.variable.compile(o, LEVEL_LIST);
- if (!this.context) {
- if (!(varBase = this.variable.unwrapAll()).isAssignable()) {
- throw SyntaxError("\"" + (this.variable.compile(o)) + "\" cannot be assigned.");
- }
- if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) {
- if (this.param) {
- o.scope.add(name, 'var');
- } else {
- o.scope.find(name);
- }
- }
- }
- if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) {
- if (match[1]) this.value.klass = match[1];
- this.value.name = (_ref3 = (_ref4 = (_ref5 = match[2]) != null ? _ref5 : match[3]) != null ? _ref4 : match[4]) != null ? _ref3 : match[5];
- }
- val = this.value.compile(o, LEVEL_LIST);
- if (this.context === 'object') return "" + name + ": " + val;
- val = name + (" " + (this.context || '=') + " ") + val;
- if (o.level <= LEVEL_LIST) {
- return val;
- } else {
- return "(" + val + ")";
- }
- };
-
- Assign.prototype.compilePatternMatch = function(o) {
- var acc, assigns, code, i, idx, isObject, ivar, name, obj, objects, olen, ref, rest, splat, top, val, value, vvar, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8;
- top = o.level === LEVEL_TOP;
- value = this.value;
- objects = this.variable.base.objects;
- if (!(olen = objects.length)) {
- code = value.compile(o);
- if (o.level >= LEVEL_OP) {
- return "(" + code + ")";
- } else {
- return code;
- }
- }
- isObject = this.variable.isObject();
- if (top && olen === 1 && !((obj = objects[0]) instanceof Splat)) {
- if (obj instanceof Assign) {
- _ref2 = obj, (_ref3 = _ref2.variable, idx = _ref3.base), obj = _ref2.value;
- } else {
- if (obj.base instanceof Parens) {
- _ref4 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref4[0], idx = _ref4[1];
- } else {
- idx = isObject ? obj["this"] ? obj.properties[0].name : obj : new Literal(0);
- }
- }
- acc = IDENTIFIER.test(idx.unwrap().value || 0);
- value = new Value(value);
- value.properties.push(new (acc ? Access : Index)(idx));
- if (_ref5 = obj.unwrap().value, __indexOf.call(RESERVED, _ref5) >= 0) {
- throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (value.compile(o)));
- }
- return new Assign(obj, value, null, {
- param: this.param
- }).compile(o, LEVEL_TOP);
- }
- vvar = value.compile(o, LEVEL_LIST);
- assigns = [];
- splat = false;
- if (!IDENTIFIER.test(vvar) || this.variable.assigns(vvar)) {
- assigns.push("" + (ref = o.scope.freeVariable('ref')) + " = " + vvar);
- vvar = ref;
- }
- for (i = _i = 0, _len = objects.length; _i < _len; i = ++_i) {
- obj = objects[i];
- idx = i;
- if (isObject) {
- if (obj instanceof Assign) {
- _ref6 = obj, (_ref7 = _ref6.variable, idx = _ref7.base), obj = _ref6.value;
- } else {
- if (obj.base instanceof Parens) {
- _ref8 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref8[0], idx = _ref8[1];
- } else {
- idx = obj["this"] ? obj.properties[0].name : obj;
- }
- }
- }
- if (!splat && obj instanceof Splat) {
- name = obj.name.unwrap().value;
- obj = obj.unwrap();
- val = "" + olen + " <= " + vvar + ".length ? " + (utility('slice')) + ".call(" + vvar + ", " + i;
- if (rest = olen - i - 1) {
- ivar = o.scope.freeVariable('i');
- val += ", " + ivar + " = " + vvar + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])";
- } else {
- val += ") : []";
- }
- val = new Literal(val);
- splat = "" + ivar + "++";
- } else {
- name = obj.unwrap().value;
- if (obj instanceof Splat) {
- obj = obj.name.compile(o);
- throw new SyntaxError("multiple splats are disallowed in an assignment: " + obj + "...");
- }
- if (typeof idx === 'number') {
- idx = new Literal(splat || idx);
- acc = false;
- } else {
- acc = isObject && IDENTIFIER.test(idx.unwrap().value || 0);
- }
- val = new Value(new Literal(vvar), [new (acc ? Access : Index)(idx)]);
- }
- if ((name != null) && __indexOf.call(RESERVED, name) >= 0) {
- throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (val.compile(o)));
- }
- assigns.push(new Assign(obj, val, null, {
- param: this.param,
- subpattern: true
- }).compile(o, LEVEL_LIST));
- }
- if (!(top || this.subpattern)) assigns.push(vvar);
- code = assigns.join(', ');
- if (o.level < LEVEL_LIST) {
- return code;
- } else {
- return "(" + code + ")";
- }
- };
-
- Assign.prototype.compileConditional = function(o) {
- var left, right, _ref2;
- _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1];
- if (left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) {
- throw new Error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been defined.");
- }
- if (__indexOf.call(this.context, "?") >= 0) o.isExistentialEquals = true;
- return new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compile(o);
- };
-
- Assign.prototype.compileSplice = function(o) {
- var code, exclusive, from, fromDecl, fromRef, name, to, valDef, valRef, _ref2, _ref3, _ref4;
- _ref2 = this.variable.properties.pop().range, from = _ref2.from, to = _ref2.to, exclusive = _ref2.exclusive;
- name = this.variable.compile(o);
- _ref3 = (from != null ? from.cache(o, LEVEL_OP) : void 0) || ['0', '0'], fromDecl = _ref3[0], fromRef = _ref3[1];
- if (to) {
- if ((from != null ? from.isSimpleNumber() : void 0) && to.isSimpleNumber()) {
- to = +to.compile(o) - +fromRef;
- if (!exclusive) to += 1;
- } else {
- to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
- if (!exclusive) to += ' + 1';
- }
- } else {
- to = "9e9";
- }
- _ref4 = this.value.cache(o, LEVEL_LIST), valDef = _ref4[0], valRef = _ref4[1];
- code = "[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat(" + valDef + ")), " + valRef;
- if (o.level > LEVEL_TOP) {
- return "(" + code + ")";
- } else {
- return code;
- }
- };
-
- return Assign;
-
- })(Base);
-
- exports.Code = Code = (function(_super) {
-
- __extends(Code, _super);
-
- Code.name = 'Code';
-
- function Code(params, body, tag) {
- this.params = params || [];
- this.body = body || new Block;
- this.bound = tag === 'boundfunc';
- if (this.bound) this.context = '_this';
- }
-
- Code.prototype.children = ['params', 'body'];
-
- Code.prototype.isStatement = function() {
- return !!this.ctor;
- };
-
- Code.prototype.jumps = NO;
-
- Code.prototype.compileNode = function(o) {
- var code, exprs, i, idt, lit, name, p, param, params, ref, splats, uniqs, val, wasEmpty, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _m, _n, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8;
- o.scope = new Scope(o.scope, this.body, this);
- o.scope.shared = del(o, 'sharedScope');
- o.indent += TAB;
- delete o.bare;
- delete o.isExistentialEquals;
- params = [];
- exprs = [];
- _ref2 = this.paramNames();
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- name = _ref2[_i];
- if (!o.scope.check(name)) o.scope.parameter(name);
- }
- _ref3 = this.params;
- for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
- param = _ref3[_j];
- if (!param.splat) continue;
- _ref4 = this.params;
- for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) {
- p = _ref4[_k];
- if (p.name.value) o.scope.add(p.name.value, 'var', true);
- }
- splats = new Assign(new Value(new Arr((function() {
- var _l, _len3, _ref5, _results;
- _ref5 = this.params;
- _results = [];
- for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) {
- p = _ref5[_l];
- _results.push(p.asReference(o));
- }
- return _results;
- }).call(this))), new Value(new Literal('arguments')));
- break;
- }
- _ref5 = this.params;
- for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) {
- param = _ref5[_l];
- if (param.isComplex()) {
- val = ref = param.asReference(o);
- if (param.value) val = new Op('?', ref, param.value);
- exprs.push(new Assign(new Value(param.name), val, '=', {
- param: true
- }));
- } else {
- ref = param;
- if (param.value) {
- lit = new Literal(ref.name.value + ' == null');
- val = new Assign(new Value(param.name), param.value, '=');
- exprs.push(new If(lit, val));
- }
- }
- if (!splats) params.push(ref);
- }
- wasEmpty = this.body.isEmpty();
- if (splats) exprs.unshift(splats);
- if (exprs.length) {
- (_ref6 = this.body.expressions).unshift.apply(_ref6, exprs);
- }
- for (i = _m = 0, _len4 = params.length; _m < _len4; i = ++_m) {
- p = params[i];
- o.scope.parameter(params[i] = p.compile(o));
- }
- uniqs = [];
- _ref7 = this.paramNames();
- for (_n = 0, _len5 = _ref7.length; _n < _len5; _n++) {
- name = _ref7[_n];
- if (__indexOf.call(uniqs, name) >= 0) {
- throw SyntaxError("multiple parameters named '" + name + "'");
- }
- uniqs.push(name);
- }
- if (!(wasEmpty || this.noReturn)) this.body.makeReturn();
- if (this.bound) {
- if ((_ref8 = o.scope.parent.method) != null ? _ref8.bound : void 0) {
- this.bound = this.context = o.scope.parent.method.context;
- } else if (!this["static"]) {
- o.scope.parent.assign('_this', 'this');
- }
- }
- idt = o.indent;
- code = 'function';
- if (this.ctor) code += ' ' + this.name;
- code += '(' + params.join(', ') + ') {';
- if (!this.body.isEmpty()) {
- code += "\n" + (this.body.compileWithDeclarations(o)) + "\n" + this.tab;
- }
- code += '}';
- if (this.ctor) return this.tab + code;
- if (this.front || (o.level >= LEVEL_ACCESS)) {
- return "(" + code + ")";
- } else {
- return code;
- }
- };
-
- Code.prototype.paramNames = function() {
- var names, param, _i, _len, _ref2;
- names = [];
- _ref2 = this.params;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- param = _ref2[_i];
- names.push.apply(names, param.names());
- }
- return names;
- };
-
- Code.prototype.traverseChildren = function(crossScope, func) {
- if (crossScope) {
- return Code.__super__.traverseChildren.call(this, crossScope, func);
- }
- };
-
- return Code;
-
- })(Base);
-
- exports.Param = Param = (function(_super) {
-
- __extends(Param, _super);
-
- Param.name = 'Param';
-
- function Param(name, value, splat) {
- var _ref2;
- this.name = name;
- this.value = value;
- this.splat = splat;
- if (_ref2 = (name = this.name.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) {
- throw SyntaxError("parameter name \"" + name + "\" is not allowed");
- }
- }
-
- Param.prototype.children = ['name', 'value'];
-
- Param.prototype.compile = function(o) {
- return this.name.compile(o, LEVEL_LIST);
- };
-
- Param.prototype.asReference = function(o) {
- var node;
- if (this.reference) return this.reference;
- node = this.name;
- if (node["this"]) {
- node = node.properties[0].name;
- if (node.value.reserved) {
- node = new Literal(o.scope.freeVariable(node.value));
- }
- } else if (node.isComplex()) {
- node = new Literal(o.scope.freeVariable('arg'));
- }
- node = new Value(node);
- if (this.splat) node = new Splat(node);
- return this.reference = node;
- };
-
- Param.prototype.isComplex = function() {
- return this.name.isComplex();
- };
-
- Param.prototype.names = function(name) {
- var atParam, names, obj, _i, _len, _ref2;
- if (name == null) name = this.name;
- atParam = function(obj) {
- var value;
- value = obj.properties[0].name.value;
- if (value.reserved) {
- return [];
- } else {
- return [value];
- }
- };
- if (name instanceof Literal) return [name.value];
- if (name instanceof Value) return atParam(name);
- names = [];
- _ref2 = name.objects;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- obj = _ref2[_i];
- if (obj instanceof Assign) {
- names.push(obj.variable.base.value);
- } else if (obj.isArray() || obj.isObject()) {
- names.push.apply(names, this.names(obj.base));
- } else if (obj["this"]) {
- names.push.apply(names, atParam(obj));
- } else {
- names.push(obj.base.value);
- }
- }
- return names;
- };
-
- return Param;
-
- })(Base);
-
- exports.Splat = Splat = (function(_super) {
-
- __extends(Splat, _super);
-
- Splat.name = 'Splat';
-
- Splat.prototype.children = ['name'];
-
- Splat.prototype.isAssignable = YES;
-
- function Splat(name) {
- this.name = name.compile ? name : new Literal(name);
- }
-
- Splat.prototype.assigns = function(name) {
- return this.name.assigns(name);
- };
-
- Splat.prototype.compile = function(o) {
- if (this.index != null) {
- return this.compileParam(o);
- } else {
- return this.name.compile(o);
- }
- };
-
- Splat.prototype.unwrap = function() {
- return this.name;
- };
-
- Splat.compileSplattedArray = function(o, list, apply) {
- var args, base, code, i, index, node, _i, _len;
- index = -1;
- while ((node = list[++index]) && !(node instanceof Splat)) {
- continue;
- }
- if (index >= list.length) return '';
- if (list.length === 1) {
- code = list[0].compile(o, LEVEL_LIST);
- if (apply) return code;
- return "" + (utility('slice')) + ".call(" + code + ")";
- }
- args = list.slice(index);
- for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
- node = args[i];
- code = node.compile(o, LEVEL_LIST);
- args[i] = node instanceof Splat ? "" + (utility('slice')) + ".call(" + code + ")" : "[" + code + "]";
- }
- if (index === 0) {
- return args[0] + (".concat(" + (args.slice(1).join(', ')) + ")");
- }
- base = (function() {
- var _j, _len1, _ref2, _results;
- _ref2 = list.slice(0, index);
- _results = [];
- for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
- node = _ref2[_j];
- _results.push(node.compile(o, LEVEL_LIST));
- }
- return _results;
- })();
- return "[" + (base.join(', ')) + "].concat(" + (args.join(', ')) + ")";
- };
-
- return Splat;
-
- })(Base);
-
- exports.While = While = (function(_super) {
-
- __extends(While, _super);
-
- While.name = 'While';
-
- function While(condition, options) {
- this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;
- this.guard = options != null ? options.guard : void 0;
- }
-
- While.prototype.children = ['condition', 'guard', 'body'];
-
- While.prototype.isStatement = YES;
-
- While.prototype.makeReturn = function(res) {
- if (res) {
- return While.__super__.makeReturn.apply(this, arguments);
- } else {
- this.returns = !this.jumps({
- loop: true
- });
- return this;
- }
- };
-
- While.prototype.addBody = function(body) {
- this.body = body;
- return this;
- };
-
- While.prototype.jumps = function() {
- var expressions, node, _i, _len;
- expressions = this.body.expressions;
- if (!expressions.length) return false;
- for (_i = 0, _len = expressions.length; _i < _len; _i++) {
- node = expressions[_i];
- if (node.jumps({
- loop: true
- })) return node;
- }
- return false;
- };
-
- While.prototype.compileNode = function(o) {
- var body, code, rvar, set;
- o.indent += TAB;
- set = '';
- body = this.body;
- if (body.isEmpty()) {
- body = '';
- } else {
- if (this.returns) {
- body.makeReturn(rvar = o.scope.freeVariable('results'));
- set = "" + this.tab + rvar + " = [];\n";
- }
- if (this.guard) {
- if (body.expressions.length > 1) {
- body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
- } else {
- if (this.guard) body = Block.wrap([new If(this.guard, body)]);
- }
- }
- body = "\n" + (body.compile(o, LEVEL_TOP)) + "\n" + this.tab;
- }
- code = set + this.tab + ("while (" + (this.condition.compile(o, LEVEL_PAREN)) + ") {" + body + "}");
- if (this.returns) code += "\n" + this.tab + "return " + rvar + ";";
- return code;
- };
-
- return While;
-
- })(Base);
-
- exports.Op = Op = (function(_super) {
- var CONVERSIONS, INVERSIONS;
-
- __extends(Op, _super);
-
- Op.name = 'Op';
-
- function Op(op, first, second, flip) {
- if (op === 'in') return new In(first, second);
- if (op === 'do') return this.generateDo(first);
- if (op === 'new') {
- if (first instanceof Call && !first["do"] && !first.isNew) {
- return first.newInstance();
- }
- if (first instanceof Code && first.bound || first["do"]) {
- first = new Parens(first);
- }
- }
- this.operator = CONVERSIONS[op] || op;
- this.first = first;
- this.second = second;
- this.flip = !!flip;
- return this;
- }
-
- CONVERSIONS = {
- '==': '===',
- '!=': '!==',
- 'of': 'in'
- };
-
- INVERSIONS = {
- '!==': '===',
- '===': '!=='
- };
-
- Op.prototype.children = ['first', 'second'];
-
- Op.prototype.isSimpleNumber = NO;
-
- Op.prototype.isUnary = function() {
- return !this.second;
- };
-
- Op.prototype.isComplex = function() {
- var _ref2;
- return !(this.isUnary() && ((_ref2 = this.operator) === '+' || _ref2 === '-')) || this.first.isComplex();
- };
-
- Op.prototype.isChainable = function() {
- var _ref2;
- return (_ref2 = this.operator) === '<' || _ref2 === '>' || _ref2 === '>=' || _ref2 === '<=' || _ref2 === '===' || _ref2 === '!==';
- };
-
- Op.prototype.invert = function() {
- var allInvertable, curr, fst, op, _ref2;
- if (this.isChainable() && this.first.isChainable()) {
- allInvertable = true;
- curr = this;
- while (curr && curr.operator) {
- allInvertable && (allInvertable = curr.operator in INVERSIONS);
- curr = curr.first;
- }
- if (!allInvertable) return new Parens(this).invert();
- curr = this;
- while (curr && curr.operator) {
- curr.invert = !curr.invert;
- curr.operator = INVERSIONS[curr.operator];
- curr = curr.first;
- }
- return this;
- } else if (op = INVERSIONS[this.operator]) {
- this.operator = op;
- if (this.first.unwrap() instanceof Op) this.first.invert();
- return this;
- } else if (this.second) {
- return new Parens(this).invert();
- } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((_ref2 = fst.operator) === '!' || _ref2 === 'in' || _ref2 === 'instanceof')) {
- return fst;
- } else {
- return new Op('!', this);
- }
- };
-
- Op.prototype.unfoldSoak = function(o) {
- var _ref2;
- return ((_ref2 = this.operator) === '++' || _ref2 === '--' || _ref2 === 'delete') && unfoldSoak(o, this, 'first');
- };
-
- Op.prototype.generateDo = function(exp) {
- var call, func, param, passedParams, ref, _i, _len, _ref2;
- passedParams = [];
- func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;
- _ref2 = func.params || [];
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- param = _ref2[_i];
- if (param.value) {
- passedParams.push(param.value);
- delete param.value;
- } else {
- passedParams.push(param);
- }
- }
- call = new Call(exp, passedParams);
- call["do"] = true;
- return call;
- };
-
- Op.prototype.compileNode = function(o) {
- var code, isChain, _ref2, _ref3;
- isChain = this.isChainable() && this.first.isChainable();
- if (!isChain) this.first.front = this.front;
- if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
- throw SyntaxError('delete operand may not be argument or var');
- }
- if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) {
- throw SyntaxError('prefix increment/decrement may not have eval or arguments operand');
- }
- if (this.isUnary()) return this.compileUnary(o);
- if (isChain) return this.compileChain(o);
- if (this.operator === '?') return this.compileExistence(o);
- code = this.first.compile(o, LEVEL_OP) + ' ' + this.operator + ' ' + this.second.compile(o, LEVEL_OP);
- if (o.level <= LEVEL_OP) {
- return code;
- } else {
- return "(" + code + ")";
- }
- };
-
- Op.prototype.compileChain = function(o) {
- var code, fst, shared, _ref2;
- _ref2 = this.first.second.cache(o), this.first.second = _ref2[0], shared = _ref2[1];
- fst = this.first.compile(o, LEVEL_OP);
- code = "" + fst + " " + (this.invert ? '&&' : '||') + " " + (shared.compile(o)) + " " + this.operator + " " + (this.second.compile(o, LEVEL_OP));
- return "(" + code + ")";
- };
-
- Op.prototype.compileExistence = function(o) {
- var fst, ref;
- if (this.first.isComplex() && o.level > LEVEL_TOP) {
- ref = new Literal(o.scope.freeVariable('ref'));
- fst = new Parens(new Assign(ref, this.first));
- } else {
- fst = this.first;
- ref = fst;
- }
- return new If(new Existence(fst), ref, {
- type: 'if'
- }).addElse(this.second).compile(o);
- };
-
- Op.prototype.compileUnary = function(o) {
- var op, parts, plusMinus;
- if (o.level >= LEVEL_ACCESS) return (new Parens(this)).compile(o);
- parts = [op = this.operator];
- plusMinus = op === '+' || op === '-';
- if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
- parts.push(' ');
- }
- if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) {
- this.first = new Parens(this.first);
- }
- parts.push(this.first.compile(o, LEVEL_OP));
- if (this.flip) parts.reverse();
- return parts.join('');
- };
-
- Op.prototype.toString = function(idt) {
- return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator);
- };
-
- return Op;
-
- })(Base);
-
- exports.In = In = (function(_super) {
-
- __extends(In, _super);
-
- In.name = 'In';
-
- function In(object, array) {
- this.object = object;
- this.array = array;
- }
-
- In.prototype.children = ['object', 'array'];
-
- In.prototype.invert = NEGATE;
-
- In.prototype.compileNode = function(o) {
- var hasSplat, obj, _i, _len, _ref2;
- if (this.array instanceof Value && this.array.isArray()) {
- _ref2 = this.array.base.objects;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- obj = _ref2[_i];
- if (!(obj instanceof Splat)) continue;
- hasSplat = true;
- break;
- }
- if (!hasSplat) return this.compileOrTest(o);
- }
- return this.compileLoopTest(o);
- };
-
- In.prototype.compileOrTest = function(o) {
- var cmp, cnj, i, item, ref, sub, tests, _ref2, _ref3;
- if (this.array.base.objects.length === 0) return "" + (!!this.negated);
- _ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1];
- _ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1];
- tests = (function() {
- var _i, _len, _ref4, _results;
- _ref4 = this.array.base.objects;
- _results = [];
- for (i = _i = 0, _len = _ref4.length; _i < _len; i = ++_i) {
- item = _ref4[i];
- _results.push((i ? ref : sub) + cmp + item.compile(o, LEVEL_ACCESS));
- }
- return _results;
- }).call(this);
- tests = tests.join(cnj);
- if (o.level < LEVEL_OP) {
- return tests;
- } else {
- return "(" + tests + ")";
- }
- };
-
- In.prototype.compileLoopTest = function(o) {
- var code, ref, sub, _ref2;
- _ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1];
- code = utility('indexOf') + (".call(" + (this.array.compile(o, LEVEL_LIST)) + ", " + ref + ") ") + (this.negated ? '< 0' : '>= 0');
- if (sub === ref) return code;
- code = sub + ', ' + code;
- if (o.level < LEVEL_LIST) {
- return code;
- } else {
- return "(" + code + ")";
- }
- };
-
- In.prototype.toString = function(idt) {
- return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : ''));
- };
-
- return In;
-
- })(Base);
-
- exports.Try = Try = (function(_super) {
-
- __extends(Try, _super);
-
- Try.name = 'Try';
-
- function Try(attempt, error, recovery, ensure) {
- this.attempt = attempt;
- this.error = error;
- this.recovery = recovery;
- this.ensure = ensure;
- }
-
- Try.prototype.children = ['attempt', 'recovery', 'ensure'];
-
- Try.prototype.isStatement = YES;
-
- Try.prototype.jumps = function(o) {
- var _ref2;
- return this.attempt.jumps(o) || ((_ref2 = this.recovery) != null ? _ref2.jumps(o) : void 0);
- };
-
- Try.prototype.makeReturn = function(res) {
- if (this.attempt) this.attempt = this.attempt.makeReturn(res);
- if (this.recovery) this.recovery = this.recovery.makeReturn(res);
- return this;
- };
-
- Try.prototype.compileNode = function(o) {
- var catchPart, ensurePart, errorPart, tryPart;
- o.indent += TAB;
- errorPart = this.error ? " (" + (this.error.compile(o)) + ") " : ' ';
- tryPart = this.attempt.compile(o, LEVEL_TOP);
- catchPart = (function() {
- var _ref2;
- if (this.recovery) {
- if (_ref2 = this.error.value, __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) {
- throw SyntaxError("catch variable may not be \"" + this.error.value + "\"");
- }
- if (!o.scope.check(this.error.value)) {
- o.scope.add(this.error.value, 'param');
- }
- return " catch" + errorPart + "{\n" + (this.recovery.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}";
- } else if (!(this.ensure || this.recovery)) {
- return ' catch (_error) {}';
- }
- }).call(this);
- ensurePart = this.ensure ? " finally {\n" + (this.ensure.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}" : '';
- return "" + this.tab + "try {\n" + tryPart + "\n" + this.tab + "}" + (catchPart || '') + ensurePart;
- };
-
- return Try;
-
- })(Base);
-
- exports.Throw = Throw = (function(_super) {
-
- __extends(Throw, _super);
-
- Throw.name = 'Throw';
-
- function Throw(expression) {
- this.expression = expression;
- }
-
- Throw.prototype.children = ['expression'];
-
- Throw.prototype.isStatement = YES;
-
- Throw.prototype.jumps = NO;
-
- Throw.prototype.makeReturn = THIS;
-
- Throw.prototype.compileNode = function(o) {
- return this.tab + ("throw " + (this.expression.compile(o)) + ";");
- };
-
- return Throw;
-
- })(Base);
-
- exports.Existence = Existence = (function(_super) {
-
- __extends(Existence, _super);
-
- Existence.name = 'Existence';
-
- function Existence(expression) {
- this.expression = expression;
- }
-
- Existence.prototype.children = ['expression'];
-
- Existence.prototype.invert = NEGATE;
-
- Existence.prototype.compileNode = function(o) {
- var cmp, cnj, code, _ref2;
- this.expression.front = this.front;
- code = this.expression.compile(o, LEVEL_OP);
- if (IDENTIFIER.test(code) && !o.scope.check(code)) {
- _ref2 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = _ref2[0], cnj = _ref2[1];
- code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null";
- } else {
- code = "" + code + " " + (this.negated ? '==' : '!=') + " null";
- }
- if (o.level <= LEVEL_COND) {
- return code;
- } else {
- return "(" + code + ")";
- }
- };
-
- return Existence;
-
- })(Base);
-
- exports.Parens = Parens = (function(_super) {
-
- __extends(Parens, _super);
-
- Parens.name = 'Parens';
-
- function Parens(body) {
- this.body = body;
- }
-
- Parens.prototype.children = ['body'];
-
- Parens.prototype.unwrap = function() {
- return this.body;
- };
-
- Parens.prototype.isComplex = function() {
- return this.body.isComplex();
- };
-
- Parens.prototype.compileNode = function(o) {
- var bare, code, expr;
- expr = this.body.unwrap();
- if (expr instanceof Value && expr.isAtomic()) {
- expr.front = this.front;
- return expr.compile(o);
- }
- code = expr.compile(o, LEVEL_PAREN);
- bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));
- if (bare) {
- return code;
- } else {
- return "(" + code + ")";
- }
- };
-
- return Parens;
-
- })(Base);
-
- exports.For = For = (function(_super) {
-
- __extends(For, _super);
-
- For.name = 'For';
-
- function For(body, source) {
- var _ref2;
- this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;
- this.body = Block.wrap([body]);
- this.own = !!source.own;
- this.object = !!source.object;
- if (this.object) {
- _ref2 = [this.index, this.name], this.name = _ref2[0], this.index = _ref2[1];
- }
- if (this.index instanceof Value) {
- throw SyntaxError('index cannot be a pattern matching expression');
- }
- this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length;
- this.pattern = this.name instanceof Value;
- if (this.range && this.index) {
- throw SyntaxError('indexes do not apply to range loops');
- }
- if (this.range && this.pattern) {
- throw SyntaxError('cannot pattern match over range loops');
- }
- this.returns = false;
- }
-
- For.prototype.children = ['body', 'source', 'guard', 'step'];
-
- For.prototype.compileNode = function(o) {
- var body, defPart, forPart, forVarPart, guardPart, idt1, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, stepPart, stepvar, svar, varPart, _ref2;
- body = Block.wrap([this.body]);
- lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0;
- if (lastJumps && lastJumps instanceof Return) this.returns = false;
- source = this.range ? this.source.base : this.source;
- scope = o.scope;
- name = this.name && this.name.compile(o, LEVEL_LIST);
- index = this.index && this.index.compile(o, LEVEL_LIST);
- if (name && !this.pattern) {
- scope.find(name, {
- immediate: true
- });
- }
- if (index) {
- scope.find(index, {
- immediate: true
- });
- }
- if (this.returns) rvar = scope.freeVariable('results');
- ivar = (this.object && index) || scope.freeVariable('i');
- kvar = (this.range && name) || index || ivar;
- kvarAssign = kvar !== ivar ? "" + kvar + " = " : "";
- if (this.step && !this.range) stepvar = scope.freeVariable("step");
- if (this.pattern) name = ivar;
- varPart = '';
- guardPart = '';
- defPart = '';
- idt1 = this.tab + TAB;
- if (this.range) {
- forPart = source.compile(merge(o, {
- index: ivar,
- name: name,
- step: this.step
- }));
- } else {
- svar = this.source.compile(o, LEVEL_LIST);
- if ((name || this.own) && !IDENTIFIER.test(svar)) {
- defPart = "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n";
- svar = ref;
- }
- if (name && !this.pattern) {
- namePart = "" + name + " = " + svar + "[" + kvar + "]";
- }
- if (!this.object) {
- lvar = scope.freeVariable('len');
- forVarPart = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length";
- if (this.step) {
- forVarPart += ", " + stepvar + " = " + (this.step.compile(o, LEVEL_OP));
- }
- stepPart = "" + kvarAssign + (this.step ? "" + ivar + " += " + stepvar : (kvar !== ivar ? "++" + ivar : "" + ivar + "++"));
- forPart = "" + forVarPart + "; " + ivar + " < " + lvar + "; " + stepPart;
- }
- }
- if (this.returns) {
- resultPart = "" + this.tab + rvar + " = [];\n";
- returnResult = "\n" + this.tab + "return " + rvar + ";";
- body.makeReturn(rvar);
- }
- if (this.guard) {
- if (body.expressions.length > 1) {
- body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
- } else {
- if (this.guard) body = Block.wrap([new If(this.guard, body)]);
- }
- }
- if (this.pattern) {
- body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]")));
- }
- defPart += this.pluckDirectCall(o, body);
- if (namePart) varPart = "\n" + idt1 + namePart + ";";
- if (this.object) {
- forPart = "" + kvar + " in " + svar;
- if (this.own) {
- guardPart = "\n" + idt1 + "if (!" + (utility('hasProp')) + ".call(" + svar + ", " + kvar + ")) continue;";
- }
- }
- body = body.compile(merge(o, {
- indent: idt1
- }), LEVEL_TOP);
- if (body) body = '\n' + body + '\n';
- return "" + defPart + (resultPart || '') + this.tab + "for (" + forPart + ") {" + guardPart + varPart + body + this.tab + "}" + (returnResult || '');
- };
-
- For.prototype.pluckDirectCall = function(o, body) {
- var base, defs, expr, fn, idx, ref, val, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
- defs = '';
- _ref2 = body.expressions;
- for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) {
- expr = _ref2[idx];
- expr = expr.unwrapAll();
- if (!(expr instanceof Call)) continue;
- val = expr.variable.unwrapAll();
- if (!((val instanceof Code) || (val instanceof Value && ((_ref3 = val.base) != null ? _ref3.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref4 = (_ref5 = val.properties[0].name) != null ? _ref5.value : void 0) === 'call' || _ref4 === 'apply')))) {
- continue;
- }
- fn = ((_ref6 = val.base) != null ? _ref6.unwrapAll() : void 0) || val;
- ref = new Literal(o.scope.freeVariable('fn'));
- base = new Value(ref);
- if (val.base) _ref7 = [base, val], val.base = _ref7[0], base = _ref7[1];
- body.expressions[idx] = new Call(base, expr.args);
- defs += this.tab + new Assign(ref, fn).compile(o, LEVEL_TOP) + ';\n';
- }
- return defs;
- };
-
- return For;
-
- })(While);
-
- exports.Switch = Switch = (function(_super) {
-
- __extends(Switch, _super);
-
- Switch.name = 'Switch';
-
- function Switch(subject, cases, otherwise) {
- this.subject = subject;
- this.cases = cases;
- this.otherwise = otherwise;
- }
-
- Switch.prototype.children = ['subject', 'cases', 'otherwise'];
-
- Switch.prototype.isStatement = YES;
-
- Switch.prototype.jumps = function(o) {
- var block, conds, _i, _len, _ref2, _ref3, _ref4;
- if (o == null) {
- o = {
- block: true
- };
- }
- _ref2 = this.cases;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- _ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1];
- if (block.jumps(o)) return block;
- }
- return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0;
- };
-
- Switch.prototype.makeReturn = function(res) {
- var pair, _i, _len, _ref2, _ref3;
- _ref2 = this.cases;
- for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
- pair = _ref2[_i];
- pair[1].makeReturn(res);
- }
- if (res) {
- this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
- }
- if ((_ref3 = this.otherwise) != null) _ref3.makeReturn(res);
- return this;
- };
-
- Switch.prototype.compileNode = function(o) {
- var block, body, code, cond, conditions, expr, i, idt1, idt2, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5;
- idt1 = o.indent + TAB;
- idt2 = o.indent = idt1 + TAB;
- code = this.tab + ("switch (" + (((_ref2 = this.subject) != null ? _ref2.compile(o, LEVEL_PAREN) : void 0) || false) + ") {\n");
- _ref3 = this.cases;
- for (i = _i = 0, _len = _ref3.length; _i < _len; i = ++_i) {
- _ref4 = _ref3[i], conditions = _ref4[0], block = _ref4[1];
- _ref5 = flatten([conditions]);
- for (_j = 0, _len1 = _ref5.length; _j < _len1; _j++) {
- cond = _ref5[_j];
- if (!this.subject) cond = cond.invert();
- code += idt1 + ("case " + (cond.compile(o, LEVEL_PAREN)) + ":\n");
- }
- if (body = block.compile(o, LEVEL_TOP)) code += body + '\n';
- if (i === this.cases.length - 1 && !this.otherwise) break;
- expr = this.lastNonComment(block.expressions);
- if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
- continue;
- }
- code += idt2 + 'break;\n';
- }
- if (this.otherwise && this.otherwise.expressions.length) {
- code += idt1 + ("default:\n" + (this.otherwise.compile(o, LEVEL_TOP)) + "\n");
- }
- return code + this.tab + '}';
- };
-
- return Switch;
-
- })(Base);
-
- exports.If = If = (function(_super) {
-
- __extends(If, _super);
-
- If.name = 'If';
-
- function If(condition, body, options) {
- this.body = body;
- if (options == null) options = {};
- this.condition = options.type === 'unless' ? condition.invert() : condition;
- this.elseBody = null;
- this.isChain = false;
- this.soak = options.soak;
- }
-
- If.prototype.children = ['condition', 'body', 'elseBody'];
-
- If.prototype.bodyNode = function() {
- var _ref2;
- return (_ref2 = this.body) != null ? _ref2.unwrap() : void 0;
- };
-
- If.prototype.elseBodyNode = function() {
- var _ref2;
- return (_ref2 = this.elseBody) != null ? _ref2.unwrap() : void 0;
- };
-
- If.prototype.addElse = function(elseBody) {
- if (this.isChain) {
- this.elseBodyNode().addElse(elseBody);
- } else {
- this.isChain = elseBody instanceof If;
- this.elseBody = this.ensureBlock(elseBody);
- }
- return this;
- };
-
- If.prototype.isStatement = function(o) {
- var _ref2;
- return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((_ref2 = this.elseBodyNode()) != null ? _ref2.isStatement(o) : void 0);
- };
-
- If.prototype.jumps = function(o) {
- var _ref2;
- return this.body.jumps(o) || ((_ref2 = this.elseBody) != null ? _ref2.jumps(o) : void 0);
- };
-
- If.prototype.compileNode = function(o) {
- if (this.isStatement(o)) {
- return this.compileStatement(o);
- } else {
- return this.compileExpression(o);
- }
- };
-
- If.prototype.makeReturn = function(res) {
- if (res) {
- this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));
- }
- this.body && (this.body = new Block([this.body.makeReturn(res)]));
- this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)]));
- return this;
- };
-
- If.prototype.ensureBlock = function(node) {
- if (node instanceof Block) {
- return node;
- } else {
- return new Block([node]);
- }
- };
-
- If.prototype.compileStatement = function(o) {
- var body, bodyc, child, cond, exeq, ifPart, _ref2;
- child = del(o, 'chainChild');
- exeq = del(o, 'isExistentialEquals');
- if (exeq) {
- return new If(this.condition.invert(), this.elseBodyNode(), {
- type: 'if'
- }).compile(o);
- }
- cond = this.condition.compile(o, LEVEL_PAREN);
- o.indent += TAB;
- body = this.ensureBlock(this.body);
- bodyc = body.compile(o);
- if (1 === ((_ref2 = body.expressions) != null ? _ref2.length : void 0) && !this.elseBody && !child && bodyc && cond && -1 === (bodyc.indexOf('\n')) && 80 > cond.length + bodyc.length) {
- return "" + this.tab + "if (" + cond + ") " + (bodyc.replace(/^\s+/, ''));
- }
- if (bodyc) bodyc = "\n" + bodyc + "\n" + this.tab;
- ifPart = "if (" + cond + ") {" + bodyc + "}";
- if (!child) ifPart = this.tab + ifPart;
- if (!this.elseBody) return ifPart;
- return ifPart + ' else ' + (this.isChain ? (o.indent = this.tab, o.chainChild = true, this.elseBody.unwrap().compile(o, LEVEL_TOP)) : "{\n" + (this.elseBody.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}");
- };
-
- If.prototype.compileExpression = function(o) {
- var alt, body, code, cond;
- cond = this.condition.compile(o, LEVEL_COND);
- body = this.bodyNode().compile(o, LEVEL_LIST);
- alt = this.elseBodyNode() ? this.elseBodyNode().compile(o, LEVEL_LIST) : 'void 0';
- code = "" + cond + " ? " + body + " : " + alt;
- if (o.level >= LEVEL_COND) {
- return "(" + code + ")";
- } else {
- return code;
- }
- };
-
- If.prototype.unfoldSoak = function() {
- return this.soak && this;
- };
-
- return If;
-
- })(Base);
-
- Closure = {
- wrap: function(expressions, statement, noReturn) {
- var args, call, func, mentionsArgs, meth;
- if (expressions.jumps()) return expressions;
- func = new Code([], Block.wrap([expressions]));
- args = [];
- if ((mentionsArgs = expressions.contains(this.literalArgs)) || expressions.contains(this.literalThis)) {
- meth = new Literal(mentionsArgs ? 'apply' : 'call');
- args = [new Literal('this')];
- if (mentionsArgs) args.push(new Literal('arguments'));
- func = new Value(func, [new Access(meth)]);
- }
- func.noReturn = noReturn;
- call = new Call(func, args);
- if (statement) {
- return Block.wrap([call]);
- } else {
- return call;
- }
- },
- literalArgs: function(node) {
- return node instanceof Literal && node.value === 'arguments' && !node.asKey;
- },
- literalThis: function(node) {
- return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound);
- }
- };
-
- unfoldSoak = function(o, parent, name) {
- var ifn;
- if (!(ifn = parent[name].unfoldSoak(o))) return;
- parent[name] = ifn.body;
- ifn.body = new Value(parent);
- return ifn;
- };
-
- UTILITIES = {
- "extends": function() {
- return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }";
- },
- bind: function() {
- return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';
- },
- indexOf: function() {
- return "[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }";
- },
- hasProp: function() {
- return '{}.hasOwnProperty';
- },
- slice: function() {
- return '[].slice';
- }
- };
-
- LEVEL_TOP = 1;
-
- LEVEL_PAREN = 2;
-
- LEVEL_LIST = 3;
-
- LEVEL_COND = 4;
-
- LEVEL_OP = 5;
-
- LEVEL_ACCESS = 6;
-
- TAB = ' ';
-
- IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
-
- IDENTIFIER = RegExp("^" + IDENTIFIER_STR + "$");
-
- SIMPLENUM = /^[+-]?\d+$/;
-
- METHOD_DEF = RegExp("^(?:(" + IDENTIFIER_STR + ")\\.prototype(?:\\.(" + IDENTIFIER_STR + ")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\]))|(" + IDENTIFIER_STR + ")$");
-
- IS_STRING = /^['"]/;
-
- utility = function(name) {
- var ref;
- ref = "__" + name;
- Scope.root.assign(ref, UTILITIES[name]());
- return ref;
- };
-
- multident = function(code, tab) {
- code = code.replace(/\n/g, '$&' + tab);
- return code.replace(/\s+$/, '');
- };
-
-
-});
-
-define('ace/mode/coffee/scope', ['require', 'exports', 'module' , 'ace/mode/coffee/helpers'], function(require, exports, module) {
-// Generated by CoffeeScript 1.2.1-pre
-
- var Scope, extend, last, _ref;
-
- _ref = require('./helpers'), extend = _ref.extend, last = _ref.last;
-
- exports.Scope = Scope = (function() {
-
- Scope.name = 'Scope';
-
- Scope.root = null;
-
- function Scope(parent, expressions, method) {
- this.parent = parent;
- this.expressions = expressions;
- this.method = method;
- this.variables = [
- {
- name: 'arguments',
- type: 'arguments'
- }
- ];
- this.positions = {};
- if (!this.parent) Scope.root = this;
- }
-
- Scope.prototype.add = function(name, type, immediate) {
- if (this.shared && !immediate) return this.parent.add(name, type, immediate);
- if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
- return this.variables[this.positions[name]].type = type;
- } else {
- return this.positions[name] = this.variables.push({
- name: name,
- type: type
- }) - 1;
- }
- };
-
- Scope.prototype.find = function(name, options) {
- if (this.check(name, options)) return true;
- this.add(name, 'var');
- return false;
- };
-
- Scope.prototype.parameter = function(name) {
- if (this.shared && this.parent.check(name, true)) return;
- return this.add(name, 'param');
- };
-
- Scope.prototype.check = function(name, immediate) {
- var found, _ref1;
- found = !!this.type(name);
- if (found || immediate) return found;
- return !!((_ref1 = this.parent) != null ? _ref1.check(name) : void 0);
- };
-
- Scope.prototype.temporary = function(name, index) {
- if (name.length > 1) {
- return '_' + name + (index > 1 ? index - 1 : '');
- } else {
- return '_' + (index + parseInt(name, 36)).toString(36).replace(/\d/g, 'a');
- }
- };
-
- Scope.prototype.type = function(name) {
- var v, _i, _len, _ref1;
- _ref1 = this.variables;
- for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
- v = _ref1[_i];
- if (v.name === name) return v.type;
- }
- return null;
- };
-
- Scope.prototype.freeVariable = function(name, reserve) {
- var index, temp;
- if (reserve == null) reserve = true;
- index = 0;
- while (this.check((temp = this.temporary(name, index)))) {
- index++;
- }
- if (reserve) this.add(temp, 'var', true);
- return temp;
- };
-
- Scope.prototype.assign = function(name, value) {
- this.add(name, {
- value: value,
- assigned: true
- }, true);
- return this.hasAssignments = true;
- };
-
- Scope.prototype.hasDeclarations = function() {
- return !!this.declaredVariables().length;
- };
-
- Scope.prototype.declaredVariables = function() {
- var realVars, tempVars, v, _i, _len, _ref1;
- realVars = [];
- tempVars = [];
- _ref1 = this.variables;
- for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
- v = _ref1[_i];
- if (v.type === 'var') {
- (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name);
- }
- }
- return realVars.sort().concat(tempVars.sort());
- };
-
- Scope.prototype.assignedVariables = function() {
- var v, _i, _len, _ref1, _results;
- _ref1 = this.variables;
- _results = [];
- for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
- v = _ref1[_i];
- if (v.type.assigned) _results.push("" + v.name + " = " + v.type.value);
- }
- return _results;
- };
-
- return Scope;
-
- })();
-
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/worker-css.js b/vendor/assets/javascripts/ace-src-noconflict/worker-css.js
deleted file mode 100644
index 19513c7ba99..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/worker-css.js
+++ /dev/null
@@ -1,10940 +0,0 @@
-"no use strict";
-
-var console = {
- log: function(msgs) {
- postMessage({type: "log", data: arguments.join(" ")});
- }
-};
-var window = {
- console: console
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- var moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-
-var require = function(parentId, id) {
- if (!id.charAt)
- throw new Error("worker.js require() accepts only (parentId, id) as arguments");
-
- var id = normalizeModule(parentId, id);
-
- var module = require.modules[id];
- if (module) {
- if (!module.initialized) {
- module.initialized = true;
- module.exports = module.factory().exports;
- }
- return module.exports;
- }
-
- var chunks = id.split("/");
- chunks[0] = require.tlns[chunks[0]] || chunks[0];
- var path = chunks.join("/") + ".js";
-
- require.id = id;
- importScripts(path);
- return require(parentId, id);
-};
-
-require.modules = {};
-require.tlns = {};
-
-var define = function(id, deps, factory) {
- if (arguments.length == 2) {
- factory = deps;
- if (typeof id != "string") {
- deps = id;
- id = require.id;
- }
- } else if (arguments.length == 1) {
- factory = id;
- id = require.id;
- }
-
- if (id.indexOf("text!") === 0)
- return;
-
- var req = function(deps, factory) {
- return require(id, deps, factory);
- };
-
- require.modules[id] = {
- factory: function() {
- var module = {
- exports: {}
- };
- var returnExports = factory(req, module.exports, module);
- if (returnExports)
- module.exports = returnExports;
- return module;
- }
- };
-};
-
-function initBaseUrls(topLevelNamespaces) {
- require.tlns = topLevelNamespaces;
-}
-
-function initSender() {
-
- var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
- var oop = require(null, "ace/lib/oop");
-
- var Sender = function() {};
-
- (function() {
-
- oop.implement(this, EventEmitter);
-
- this.callback = function(data, callbackId) {
- postMessage({
- type: "call",
- id: callbackId,
- data: data
- });
- };
-
- this.emit = function(name, data) {
- postMessage({
- type: "event",
- name: name,
- data: data
- });
- };
-
- }).call(Sender.prototype);
-
- return new Sender();
-}
-
-var main;
-var sender;
-
-onmessage = function(e) {
- var msg = e.data;
- if (msg.command) {
- main[msg.command].apply(main, msg.args);
- }
- else if (msg.init) {
- initBaseUrls(msg.tlns);
- require(null, "ace/lib/fixoldbrowsers");
- sender = initSender();
- var clazz = require(null, msg.module)[msg.classname];
- main = new clazz(sender);
- }
- else if (msg.event && sender) {
- sender._emit(msg.event, msg.data);
- }
-};
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-define('ace/mode/css_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/css/csslint'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var Mirror = require("../worker/mirror").Mirror;
-var CSSLint = require("./css/csslint").CSSLint;
-
-var Worker = exports.Worker = function(sender) {
- Mirror.call(this, sender);
- this.setTimeout(200);
-};
-
-oop.inherits(Worker, Mirror);
-
-(function() {
-
- this.onUpdate = function() {
- var value = this.doc.getValue();
-
- var result = CSSLint.verify(value);
- this.sender.emit("csslint", result.messages.map(function(msg) {
- delete msg.rule;
- return msg;
- }));
- };
-
-}).call(Worker.prototype);
-
-});
-define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
-
-
-var Document = require("../document").Document;
-var lang = require("../lib/lang");
-
-var Mirror = exports.Mirror = function(sender) {
- this.sender = sender;
- var doc = this.doc = new Document("");
-
- var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
-
- var _self = this;
- sender.on("change", function(e) {
- doc.applyDeltas([e.data]);
- deferredUpdate.schedule(_self.$timeout);
- });
-};
-
-(function() {
-
- this.$timeout = 500;
-
- this.setTimeout = function(timeout) {
- this.$timeout = timeout;
- };
-
- this.setValue = function(value) {
- this.doc.setValue(value);
- this.deferredUpdate.schedule(this.$timeout);
- };
-
- this.getValue = function(callbackId) {
- this.sender.callback(this.doc.getValue(), callbackId);
- };
-
- this.onUpdate = function() {
- // abstract method
- };
-
-}).call(Mirror.prototype);
-
-});
-
-define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-define('ace/mode/css/csslint', ['require', 'exports', 'module' ], function(require, exports, module) {
-/*!
-CSSLint
-Copyright (c) 2011 Nicole Sullivan and Nicholas C. Zakas. All rights reserved.
-
-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.
-
-*/
-/* Build time: 2-March-2012 02:47:11 */
-
-/*!
-Parser-Lib
-Copyright (c) 2009-2011 Nicholas C. Zakas. All rights reserved.
-
-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.
-
-*/
-/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */
-var parserlib = {};
-(function(){
-
-
-/**
- * A generic base to inherit from for any object
- * that needs event handling.
- * @class EventTarget
- * @constructor
- */
-function EventTarget(){
-
- /**
- * The array of listeners for various events.
- * @type Object
- * @property _listeners
- * @private
- */
- this._listeners = {};
-}
-
-EventTarget.prototype = {
-
- //restore constructor
- constructor: EventTarget,
-
- /**
- * Adds a listener for a given event type.
- * @param {String} type The type of event to add a listener for.
- * @param {Function} listener The function to call when the event occurs.
- * @return {void}
- * @method addListener
- */
- addListener: function(type, listener){
- if (!this._listeners[type]){
- this._listeners[type] = [];
- }
-
- this._listeners[type].push(listener);
- },
-
- /**
- * Fires an event based on the passed-in object.
- * @param {Object|String} event An object with at least a 'type' attribute
- * or a string indicating the event name.
- * @return {void}
- * @method fire
- */
- fire: function(event){
- if (typeof event == "string"){
- event = { type: event };
- }
- if (typeof event.target != "undefined"){
- event.target = this;
- }
-
- if (typeof event.type == "undefined"){
- throw new Error("Event object missing 'type' property.");
- }
-
- if (this._listeners[event.type]){
-
- //create a copy of the array and use that so listeners can't chane
- var listeners = this._listeners[event.type].concat();
- for (var i=0, len=listeners.length; i < len; i++){
- listeners[i].call(this, event);
- }
- }
- },
-
- /**
- * Removes a listener for a given event type.
- * @param {String} type The type of event to remove a listener from.
- * @param {Function} listener The function to remove from the event.
- * @return {void}
- * @method removeListener
- */
- removeListener: function(type, listener){
- if (this._listeners[type]){
- var listeners = this._listeners[type];
- for (var i=0, len=listeners.length; i < len; i++){
- if (listeners[i] === listener){
- listeners.splice(i, 1);
- break;
- }
- }
-
-
- }
- }
-};
-function StringReader(text){
-
- /**
- * The input text with line endings normalized.
- * @property _input
- * @type String
- * @private
- */
- this._input = text.replace(/\n\r?/g, "\n");
- this._line = 1;
- this._col = 1;
- this._cursor = 0;
-}
-
-StringReader.prototype = {
-
- //restore constructor
- constructor: StringReader,
-
- //-------------------------------------------------------------------------
- // Position info
- //-------------------------------------------------------------------------
-
- /**
- * Returns the column of the character to be read next.
- * @return {int} The column of the character to be read next.
- * @method getCol
- */
- getCol: function(){
- return this._col;
- },
-
- /**
- * Returns the row of the character to be read next.
- * @return {int} The row of the character to be read next.
- * @method getLine
- */
- getLine: function(){
- return this._line ;
- },
-
- /**
- * Determines if you're at the end of the input.
- * @return {Boolean} True if there's no more input, false otherwise.
- * @method eof
- */
- eof: function(){
- return (this._cursor == this._input.length);
- },
-
- //-------------------------------------------------------------------------
- // Basic reading
- //-------------------------------------------------------------------------
-
- /**
- * Reads the next character without advancing the cursor.
- * @param {int} count How many characters to look ahead (default is 1).
- * @return {String} The next character or null if there is no next character.
- * @method peek
- */
- peek: function(count){
- var c = null;
- count = (typeof count == "undefined" ? 1 : count);
-
- //if we're not at the end of the input...
- if (this._cursor < this._input.length){
-
- //get character and increment cursor and column
- c = this._input.charAt(this._cursor + count - 1);
- }
-
- return c;
- },
-
- /**
- * Reads the next character from the input and adjusts the row and column
- * accordingly.
- * @return {String} The next character or null if there is no next character.
- * @method read
- */
- read: function(){
- var c = null;
-
- //if we're not at the end of the input...
- if (this._cursor < this._input.length){
-
- //if the last character was a newline, increment row count
- //and reset column count
- if (this._input.charAt(this._cursor) == "\n"){
- this._line++;
- this._col=1;
- } else {
- this._col++;
- }
-
- //get character and increment cursor and column
- c = this._input.charAt(this._cursor++);
- }
-
- return c;
- },
-
- //-------------------------------------------------------------------------
- // Misc
- //-------------------------------------------------------------------------
-
- /**
- * Saves the current location so it can be returned to later.
- * @method mark
- * @return {void}
- */
- mark: function(){
- this._bookmark = {
- cursor: this._cursor,
- line: this._line,
- col: this._col
- };
- },
-
- reset: function(){
- if (this._bookmark){
- this._cursor = this._bookmark.cursor;
- this._line = this._bookmark.line;
- this._col = this._bookmark.col;
- delete this._bookmark;
- }
- },
-
- //-------------------------------------------------------------------------
- // Advanced reading
- //-------------------------------------------------------------------------
-
- /**
- * Reads up to and including the given string. Throws an error if that
- * string is not found.
- * @param {String} pattern The string to read.
- * @return {String} The string when it is found.
- * @throws Error when the string pattern is not found.
- * @method readTo
- */
- readTo: function(pattern){
-
- var buffer = "",
- c;
- while (buffer.length < pattern.length || buffer.lastIndexOf(pattern) != buffer.length - pattern.length){
- c = this.read();
- if (c){
- buffer += c;
- } else {
- throw new Error("Expected \"" + pattern + "\" at line " + this._line + ", col " + this._col + ".");
- }
- }
-
- return buffer;
-
- },
-
- /**
- * Reads characters while each character causes the given
- * filter function to return true. The function is passed
- * in each character and either returns true to continue
- * reading or false to stop.
- * @param {Function} filter The function to read on each character.
- * @return {String} The string made up of all characters that passed the
- * filter check.
- * @method readWhile
- */
- readWhile: function(filter){
-
- var buffer = "",
- c = this.read();
-
- while(c !== null && filter(c)){
- buffer += c;
- c = this.read();
- }
-
- return buffer;
-
- },
-
- /**
- * Reads characters that match either text or a regular expression and
- * returns those characters. If a match is found, the row and column
- * are adjusted; if no match is found, the reader's state is unchanged.
- * reading or false to stop.
- * @param {String|RegExp} matchter If a string, then the literal string
- * value is searched for. If a regular expression, then any string
- * matching the pattern is search for.
- * @return {String} The string made up of all characters that matched or
- * null if there was no match.
- * @method readMatch
- */
- readMatch: function(matcher){
-
- var source = this._input.substring(this._cursor),
- value = null;
-
- //if it's a string, just do a straight match
- if (typeof matcher == "string"){
- if (source.indexOf(matcher) === 0){
- value = this.readCount(matcher.length);
- }
- } else if (matcher instanceof RegExp){
- if (matcher.test(source)){
- value = this.readCount(RegExp.lastMatch.length);
- }
- }
-
- return value;
- },
-
-
- /**
- * Reads a given number of characters. If the end of the input is reached,
- * it reads only the remaining characters and does not throw an error.
- * @param {int} count The number of characters to read.
- * @return {String} The string made up the read characters.
- * @method readCount
- */
- readCount: function(count){
- var buffer = "";
-
- while(count--){
- buffer += this.read();
- }
-
- return buffer;
- }
-
-};
-function SyntaxError(message, line, col){
-
- /**
- * The column at which the error occurred.
- * @type int
- * @property col
- */
- this.col = col;
- this.line = line;
- this.message = message;
-
-}
-
-//inherit from Error
-SyntaxError.prototype = new Error();
-function SyntaxUnit(text, line, col, type){
-
-
- /**
- * The column of text on which the unit resides.
- * @type int
- * @property col
- */
- this.col = col;
- this.line = line;
- this.text = text;
- this.type = type;
-}
-
-/**
- * Create a new syntax unit based solely on the given token.
- * Convenience method for creating a new syntax unit when
- * it represents a single token instead of multiple.
- * @param {Object} token The token object to represent.
- * @return {parserlib.util.SyntaxUnit} The object representing the token.
- * @static
- * @method fromToken
- */
-SyntaxUnit.fromToken = function(token){
- return new SyntaxUnit(token.value, token.startLine, token.startCol);
-};
-
-SyntaxUnit.prototype = {
-
- //restore constructor
- constructor: SyntaxUnit,
-
- /**
- * Returns the text representation of the unit.
- * @return {String} The text representation of the unit.
- * @method valueOf
- */
- valueOf: function(){
- return this.toString();
- },
-
- /**
- * Returns the text representation of the unit.
- * @return {String} The text representation of the unit.
- * @method toString
- */
- toString: function(){
- return this.text;
- }
-
-};
-
-/**
- * Generic TokenStream providing base functionality.
- * @class TokenStreamBase
- * @namespace parserlib.util
- * @constructor
- * @param {String|StringReader} input The text to tokenize or a reader from
- * which to read the input.
- */
-function TokenStreamBase(input, tokenData){
-
- /**
- * The string reader for easy access to the text.
- * @type StringReader
- * @property _reader
- * @private
- */
- this._reader = input ? new StringReader(input.toString()) : null;
- this._token = null;
- this._tokenData = tokenData;
- this._lt = [];
- this._ltIndex = 0;
-
- this._ltIndexCache = [];
-}
-
-/**
- * Accepts an array of token information and outputs
- * an array of token data containing key-value mappings
- * and matching functions that the TokenStream needs.
- * @param {Array} tokens An array of token descriptors.
- * @return {Array} An array of processed token data.
- * @method createTokenData
- * @static
- */
-TokenStreamBase.createTokenData = function(tokens){
-
- var nameMap = [],
- typeMap = {},
- tokenData = tokens.concat([]),
- i = 0,
- len = tokenData.length+1;
-
- tokenData.UNKNOWN = -1;
- tokenData.unshift({name:"EOF"});
-
- for (; i < len; i++){
- nameMap.push(tokenData[i].name);
- tokenData[tokenData[i].name] = i;
- if (tokenData[i].text){
- typeMap[tokenData[i].text] = i;
- }
- }
-
- tokenData.name = function(tt){
- return nameMap[tt];
- };
-
- tokenData.type = function(c){
- return typeMap[c];
- };
-
- return tokenData;
-};
-
-TokenStreamBase.prototype = {
-
- //restore constructor
- constructor: TokenStreamBase,
-
- //-------------------------------------------------------------------------
- // Matching methods
- //-------------------------------------------------------------------------
-
- /**
- * Determines if the next token matches the given token type.
- * If so, that token is consumed; if not, the token is placed
- * back onto the token stream. You can pass in any number of
- * token types and this will return true if any of the token
- * types is found.
- * @param {int|int[]} tokenTypes Either a single token type or an array of
- * token types that the next token might be. If an array is passed,
- * it's assumed that the token can be any of these.
- * @param {variant} channel (Optional) The channel to read from. If not
- * provided, reads from the default (unnamed) channel.
- * @return {Boolean} True if the token type matches, false if not.
- * @method match
- */
- match: function(tokenTypes, channel){
-
- //always convert to an array, makes things easier
- if (!(tokenTypes instanceof Array)){
- tokenTypes = [tokenTypes];
- }
-
- var tt = this.get(channel),
- i = 0,
- len = tokenTypes.length;
-
- while(i < len){
- if (tt == tokenTypes[i++]){
- return true;
- }
- }
-
- //no match found, put the token back
- this.unget();
- return false;
- },
-
- /**
- * Determines if the next token matches the given token type.
- * If so, that token is consumed; if not, an error is thrown.
- * @param {int|int[]} tokenTypes Either a single token type or an array of
- * token types that the next token should be. If an array is passed,
- * it's assumed that the token must be one of these.
- * @param {variant} channel (Optional) The channel to read from. If not
- * provided, reads from the default (unnamed) channel.
- * @return {void}
- * @method mustMatch
- */
- mustMatch: function(tokenTypes, channel){
-
- var token;
-
- //always convert to an array, makes things easier
- if (!(tokenTypes instanceof Array)){
- tokenTypes = [tokenTypes];
- }
-
- if (!this.match.apply(this, arguments)){
- token = this.LT(1);
- throw new SyntaxError("Expected " + this._tokenData[tokenTypes[0]].name +
- " at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol);
- }
- },
-
- //-------------------------------------------------------------------------
- // Consuming methods
- //-------------------------------------------------------------------------
-
- /**
- * Keeps reading from the token stream until either one of the specified
- * token types is found or until the end of the input is reached.
- * @param {int|int[]} tokenTypes Either a single token type or an array of
- * token types that the next token should be. If an array is passed,
- * it's assumed that the token must be one of these.
- * @param {variant} channel (Optional) The channel to read from. If not
- * provided, reads from the default (unnamed) channel.
- * @return {void}
- * @method advance
- */
- advance: function(tokenTypes, channel){
-
- while(this.LA(0) !== 0 && !this.match(tokenTypes, channel)){
- this.get();
- }
-
- return this.LA(0);
- },
-
- /**
- * Consumes the next token from the token stream.
- * @return {int} The token type of the token that was just consumed.
- * @method get
- */
- get: function(channel){
-
- var tokenInfo = this._tokenData,
- reader = this._reader,
- value,
- i =0,
- len = tokenInfo.length,
- found = false,
- token,
- info;
-
- //check the lookahead buffer first
- if (this._lt.length && this._ltIndex >= 0 && this._ltIndex < this._lt.length){
-
- i++;
- this._token = this._lt[this._ltIndex++];
- info = tokenInfo[this._token.type];
-
- //obey channels logic
- while((info.channel !== undefined && channel !== info.channel) &&
- this._ltIndex < this._lt.length){
- this._token = this._lt[this._ltIndex++];
- info = tokenInfo[this._token.type];
- i++;
- }
-
- //here be dragons
- if ((info.channel === undefined || channel === info.channel) &&
- this._ltIndex <= this._lt.length){
- this._ltIndexCache.push(i);
- return this._token.type;
- }
- }
-
- //call token retriever method
- token = this._getToken();
-
- //if it should be hidden, don't save a token
- if (token.type > -1 && !tokenInfo[token.type].hide){
-
- //apply token channel
- token.channel = tokenInfo[token.type].channel;
-
- //save for later
- this._token = token;
- this._lt.push(token);
-
- //save space that will be moved (must be done before array is truncated)
- this._ltIndexCache.push(this._lt.length - this._ltIndex + i);
-
- //keep the buffer under 5 items
- if (this._lt.length > 5){
- this._lt.shift();
- }
-
- //also keep the shift buffer under 5 items
- if (this._ltIndexCache.length > 5){
- this._ltIndexCache.shift();
- }
-
- //update lookahead index
- this._ltIndex = this._lt.length;
- }
-
- /*
- * Skip to the next token if:
- * 1. The token type is marked as hidden.
- * 2. The token type has a channel specified and it isn't the current channel.
- */
- info = tokenInfo[token.type];
- if (info &&
- (info.hide ||
- (info.channel !== undefined && channel !== info.channel))){
- return this.get(channel);
- } else {
- //return just the type
- return token.type;
- }
- },
-
- /**
- * Looks ahead a certain number of tokens and returns the token type at
- * that position. This will throw an error if you lookahead past the
- * end of input, past the size of the lookahead buffer, or back past
- * the first token in the lookahead buffer.
- * @param {int} The index of the token type to retrieve. 0 for the
- * current token, 1 for the next, -1 for the previous, etc.
- * @return {int} The token type of the token in the given position.
- * @method LA
- */
- LA: function(index){
- var total = index,
- tt;
- if (index > 0){
- //TODO: Store 5 somewhere
- if (index > 5){
- throw new Error("Too much lookahead.");
- }
-
- //get all those tokens
- while(total){
- tt = this.get();
- total--;
- }
-
- //unget all those tokens
- while(total < index){
- this.unget();
- total++;
- }
- } else if (index < 0){
-
- if(this._lt[this._ltIndex+index]){
- tt = this._lt[this._ltIndex+index].type;
- } else {
- throw new Error("Too much lookbehind.");
- }
-
- } else {
- tt = this._token.type;
- }
-
- return tt;
-
- },
-
- /**
- * Looks ahead a certain number of tokens and returns the token at
- * that position. This will throw an error if you lookahead past the
- * end of input, past the size of the lookahead buffer, or back past
- * the first token in the lookahead buffer.
- * @param {int} The index of the token type to retrieve. 0 for the
- * current token, 1 for the next, -1 for the previous, etc.
- * @return {Object} The token of the token in the given position.
- * @method LA
- */
- LT: function(index){
-
- //lookahead first to prime the token buffer
- this.LA(index);
-
- //now find the token, subtract one because _ltIndex is already at the next index
- return this._lt[this._ltIndex+index-1];
- },
-
- /**
- * Returns the token type for the next token in the stream without
- * consuming it.
- * @return {int} The token type of the next token in the stream.
- * @method peek
- */
- peek: function(){
- return this.LA(1);
- },
-
- /**
- * Returns the actual token object for the last consumed token.
- * @return {Token} The token object for the last consumed token.
- * @method token
- */
- token: function(){
- return this._token;
- },
-
- /**
- * Returns the name of the token for the given token type.
- * @param {int} tokenType The type of token to get the name of.
- * @return {String} The name of the token or "UNKNOWN_TOKEN" for any
- * invalid token type.
- * @method tokenName
- */
- tokenName: function(tokenType){
- if (tokenType < 0 || tokenType > this._tokenData.length){
- return "UNKNOWN_TOKEN";
- } else {
- return this._tokenData[tokenType].name;
- }
- },
-
- /**
- * Returns the token type value for the given token name.
- * @param {String} tokenName The name of the token whose value should be returned.
- * @return {int} The token type value for the given token name or -1
- * for an unknown token.
- * @method tokenName
- */
- tokenType: function(tokenName){
- return this._tokenData[tokenName] || -1;
- },
-
- /**
- * Returns the last consumed token to the token stream.
- * @method unget
- */
- unget: function(){
- //if (this._ltIndex > -1){
- if (this._ltIndexCache.length){
- this._ltIndex -= this._ltIndexCache.pop();//--;
- this._token = this._lt[this._ltIndex - 1];
- } else {
- throw new Error("Too much lookahead.");
- }
- }
-
-};
-
-
-
-
-parserlib.util = {
-StringReader: StringReader,
-SyntaxError : SyntaxError,
-SyntaxUnit : SyntaxUnit,
-EventTarget : EventTarget,
-TokenStreamBase : TokenStreamBase
-};
-})();
-/* Version v0.1.6, Build time: 2-March-2012 02:44:32 */
-(function(){
-var EventTarget = parserlib.util.EventTarget,
-TokenStreamBase = parserlib.util.TokenStreamBase,
-StringReader = parserlib.util.StringReader,
-SyntaxError = parserlib.util.SyntaxError,
-SyntaxUnit = parserlib.util.SyntaxUnit;
-
-
-var Colors = {
- aliceblue :"#f0f8ff",
- antiquewhite :"#faebd7",
- aqua :"#00ffff",
- aquamarine :"#7fffd4",
- azure :"#f0ffff",
- beige :"#f5f5dc",
- bisque :"#ffe4c4",
- black :"#000000",
- blanchedalmond :"#ffebcd",
- blue :"#0000ff",
- blueviolet :"#8a2be2",
- brown :"#a52a2a",
- burlywood :"#deb887",
- cadetblue :"#5f9ea0",
- chartreuse :"#7fff00",
- chocolate :"#d2691e",
- coral :"#ff7f50",
- cornflowerblue :"#6495ed",
- cornsilk :"#fff8dc",
- crimson :"#dc143c",
- cyan :"#00ffff",
- darkblue :"#00008b",
- darkcyan :"#008b8b",
- darkgoldenrod :"#b8860b",
- darkgray :"#a9a9a9",
- darkgreen :"#006400",
- darkkhaki :"#bdb76b",
- darkmagenta :"#8b008b",
- darkolivegreen :"#556b2f",
- darkorange :"#ff8c00",
- darkorchid :"#9932cc",
- darkred :"#8b0000",
- darksalmon :"#e9967a",
- darkseagreen :"#8fbc8f",
- darkslateblue :"#483d8b",
- darkslategray :"#2f4f4f",
- darkturquoise :"#00ced1",
- darkviolet :"#9400d3",
- deeppink :"#ff1493",
- deepskyblue :"#00bfff",
- dimgray :"#696969",
- dodgerblue :"#1e90ff",
- firebrick :"#b22222",
- floralwhite :"#fffaf0",
- forestgreen :"#228b22",
- fuchsia :"#ff00ff",
- gainsboro :"#dcdcdc",
- ghostwhite :"#f8f8ff",
- gold :"#ffd700",
- goldenrod :"#daa520",
- gray :"#808080",
- green :"#008000",
- greenyellow :"#adff2f",
- honeydew :"#f0fff0",
- hotpink :"#ff69b4",
- indianred :"#cd5c5c",
- indigo :"#4b0082",
- ivory :"#fffff0",
- khaki :"#f0e68c",
- lavender :"#e6e6fa",
- lavenderblush :"#fff0f5",
- lawngreen :"#7cfc00",
- lemonchiffon :"#fffacd",
- lightblue :"#add8e6",
- lightcoral :"#f08080",
- lightcyan :"#e0ffff",
- lightgoldenrodyellow :"#fafad2",
- lightgray :"#d3d3d3",
- lightgreen :"#90ee90",
- lightpink :"#ffb6c1",
- lightsalmon :"#ffa07a",
- lightseagreen :"#20b2aa",
- lightskyblue :"#87cefa",
- lightslategray :"#778899",
- lightsteelblue :"#b0c4de",
- lightyellow :"#ffffe0",
- lime :"#00ff00",
- limegreen :"#32cd32",
- linen :"#faf0e6",
- magenta :"#ff00ff",
- maroon :"#800000",
- mediumaquamarine:"#66cdaa",
- mediumblue :"#0000cd",
- mediumorchid :"#ba55d3",
- mediumpurple :"#9370d8",
- mediumseagreen :"#3cb371",
- mediumslateblue :"#7b68ee",
- mediumspringgreen :"#00fa9a",
- mediumturquoise :"#48d1cc",
- mediumvioletred :"#c71585",
- midnightblue :"#191970",
- mintcream :"#f5fffa",
- mistyrose :"#ffe4e1",
- moccasin :"#ffe4b5",
- navajowhite :"#ffdead",
- navy :"#000080",
- oldlace :"#fdf5e6",
- olive :"#808000",
- olivedrab :"#6b8e23",
- orange :"#ffa500",
- orangered :"#ff4500",
- orchid :"#da70d6",
- palegoldenrod :"#eee8aa",
- palegreen :"#98fb98",
- paleturquoise :"#afeeee",
- palevioletred :"#d87093",
- papayawhip :"#ffefd5",
- peachpuff :"#ffdab9",
- peru :"#cd853f",
- pink :"#ffc0cb",
- plum :"#dda0dd",
- powderblue :"#b0e0e6",
- purple :"#800080",
- red :"#ff0000",
- rosybrown :"#bc8f8f",
- royalblue :"#4169e1",
- saddlebrown :"#8b4513",
- salmon :"#fa8072",
- sandybrown :"#f4a460",
- seagreen :"#2e8b57",
- seashell :"#fff5ee",
- sienna :"#a0522d",
- silver :"#c0c0c0",
- skyblue :"#87ceeb",
- slateblue :"#6a5acd",
- slategray :"#708090",
- snow :"#fffafa",
- springgreen :"#00ff7f",
- steelblue :"#4682b4",
- tan :"#d2b48c",
- teal :"#008080",
- thistle :"#d8bfd8",
- tomato :"#ff6347",
- turquoise :"#40e0d0",
- violet :"#ee82ee",
- wheat :"#f5deb3",
- white :"#ffffff",
- whitesmoke :"#f5f5f5",
- yellow :"#ffff00",
- yellowgreen :"#9acd32"
-};
-/**
- * Represents a selector combinator (whitespace, +, >).
- * @namespace parserlib.css
- * @class Combinator
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {String} text The text representation of the unit.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function Combinator(text, line, col){
-
- SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE);
- this.type = "unknown";
-
- //pretty simple
- if (/^\s+$/.test(text)){
- this.type = "descendant";
- } else if (text == ">"){
- this.type = "child";
- } else if (text == "+"){
- this.type = "adjacent-sibling";
- } else if (text == "~"){
- this.type = "sibling";
- }
-
-}
-
-Combinator.prototype = new SyntaxUnit();
-Combinator.prototype.constructor = Combinator;
-/**
- * Represents a media feature, such as max-width:500.
- * @namespace parserlib.css
- * @class MediaFeature
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {SyntaxUnit} name The name of the feature.
- * @param {SyntaxUnit} value The value of the feature or null if none.
- */
-function MediaFeature(name, value){
-
- SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE);
- this.name = name;
- this.value = value;
-}
-
-MediaFeature.prototype = new SyntaxUnit();
-MediaFeature.prototype.constructor = MediaFeature;
-/**
- * Represents an individual media query.
- * @namespace parserlib.css
- * @class MediaQuery
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {String} modifier The modifier "not" or "only" (or null).
- * @param {String} mediaType The type of media (i.e., "print").
- * @param {Array} parts Array of selectors parts making up this selector.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function MediaQuery(modifier, mediaType, features, line, col){
-
- SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType + " " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE);
- this.modifier = modifier;
- this.mediaType = mediaType;
- this.features = features;
-
-}
-
-MediaQuery.prototype = new SyntaxUnit();
-MediaQuery.prototype.constructor = MediaQuery;
-
-/**
- * A CSS3 parser.
- * @namespace parserlib.css
- * @class Parser
- * @constructor
- * @param {Object} options (Optional) Various options for the parser:
- * starHack (true|false) to allow IE6 star hack as valid,
- * underscoreHack (true|false) to interpret leading underscores
- * as IE6-7 targeting for known properties, ieFilters (true|false)
- * to indicate that IE < 8 filters should be accepted and not throw
- * syntax errors.
- */
-function Parser(options){
-
- //inherit event functionality
- EventTarget.call(this);
-
-
- this.options = options || {};
-
- this._tokenStream = null;
-}
-
-//Static constants
-Parser.DEFAULT_TYPE = 0;
-Parser.COMBINATOR_TYPE = 1;
-Parser.MEDIA_FEATURE_TYPE = 2;
-Parser.MEDIA_QUERY_TYPE = 3;
-Parser.PROPERTY_NAME_TYPE = 4;
-Parser.PROPERTY_VALUE_TYPE = 5;
-Parser.PROPERTY_VALUE_PART_TYPE = 6;
-Parser.SELECTOR_TYPE = 7;
-Parser.SELECTOR_PART_TYPE = 8;
-Parser.SELECTOR_SUB_PART_TYPE = 9;
-
-Parser.prototype = function(){
-
- var proto = new EventTarget(), //new prototype
- prop,
- additions = {
-
- //restore constructor
- constructor: Parser,
-
- //instance constants - yuck
- DEFAULT_TYPE : 0,
- COMBINATOR_TYPE : 1,
- MEDIA_FEATURE_TYPE : 2,
- MEDIA_QUERY_TYPE : 3,
- PROPERTY_NAME_TYPE : 4,
- PROPERTY_VALUE_TYPE : 5,
- PROPERTY_VALUE_PART_TYPE : 6,
- SELECTOR_TYPE : 7,
- SELECTOR_PART_TYPE : 8,
- SELECTOR_SUB_PART_TYPE : 9,
-
- //-----------------------------------------------------------------
- // Grammar
- //-----------------------------------------------------------------
-
- _stylesheet: function(){
-
- /*
- * stylesheet
- * : [ CHARSET_SYM S* STRING S* ';' ]?
- * [S|CDO|CDC]* [ import [S|CDO|CDC]* ]*
- * [ namespace [S|CDO|CDC]* ]*
- * [ [ ruleset | media | page | font_face | keyframes ] [S|CDO|CDC]* ]*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- charset = null,
- count,
- token,
- tt;
-
- this.fire("startstylesheet");
-
- //try to read character set
- this._charset();
-
- this._skipCruft();
-
- //try to read imports - may be more than one
- while (tokenStream.peek() == Tokens.IMPORT_SYM){
- this._import();
- this._skipCruft();
- }
-
- //try to read namespaces - may be more than one
- while (tokenStream.peek() == Tokens.NAMESPACE_SYM){
- this._namespace();
- this._skipCruft();
- }
-
- //get the next token
- tt = tokenStream.peek();
-
- //try to read the rest
- while(tt > Tokens.EOF){
-
- try {
-
- switch(tt){
- case Tokens.MEDIA_SYM:
- this._media();
- this._skipCruft();
- break;
- case Tokens.PAGE_SYM:
- this._page();
- this._skipCruft();
- break;
- case Tokens.FONT_FACE_SYM:
- this._font_face();
- this._skipCruft();
- break;
- case Tokens.KEYFRAMES_SYM:
- this._keyframes();
- this._skipCruft();
- break;
- case Tokens.UNKNOWN_SYM: //unknown @ rule
- tokenStream.get();
- if (!this.options.strict){
-
- //fire error event
- this.fire({
- type: "error",
- error: null,
- message: "Unknown @ rule: " + tokenStream.LT(0).value + ".",
- line: tokenStream.LT(0).startLine,
- col: tokenStream.LT(0).startCol
- });
-
- //skip braces
- count=0;
- while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) == Tokens.LBRACE){
- count++; //keep track of nesting depth
- }
-
- while(count){
- tokenStream.advance([Tokens.RBRACE]);
- count--;
- }
-
- } else {
- //not a syntax error, rethrow it
- throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol);
- }
- break;
- case Tokens.S:
- this._readWhitespace();
- break;
- default:
- if(!this._ruleset()){
-
- //error handling for known issues
- switch(tt){
- case Tokens.CHARSET_SYM:
- token = tokenStream.LT(1);
- this._charset(false);
- throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol);
- case Tokens.IMPORT_SYM:
- token = tokenStream.LT(1);
- this._import(false);
- throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol);
- case Tokens.NAMESPACE_SYM:
- token = tokenStream.LT(1);
- this._namespace(false);
- throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol);
- default:
- tokenStream.get(); //get the last token
- this._unexpectedToken(tokenStream.token());
- }
-
- }
- }
- } catch(ex) {
- if (ex instanceof SyntaxError && !this.options.strict){
- this.fire({
- type: "error",
- error: ex,
- message: ex.message,
- line: ex.line,
- col: ex.col
- });
- } else {
- throw ex;
- }
- }
-
- tt = tokenStream.peek();
- }
-
- if (tt != Tokens.EOF){
- this._unexpectedToken(tokenStream.token());
- }
-
- this.fire("endstylesheet");
- },
-
- _charset: function(emit){
- var tokenStream = this._tokenStream,
- charset,
- token,
- line,
- col;
-
- if (tokenStream.match(Tokens.CHARSET_SYM)){
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
-
- this._readWhitespace();
- tokenStream.mustMatch(Tokens.STRING);
-
- token = tokenStream.token();
- charset = token.value;
-
- this._readWhitespace();
- tokenStream.mustMatch(Tokens.SEMICOLON);
-
- if (emit !== false){
- this.fire({
- type: "charset",
- charset:charset,
- line: line,
- col: col
- });
- }
- }
- },
-
- _import: function(emit){
- /*
- * import
- * : IMPORT_SYM S*
- * [STRING|URI] S* media_query_list? ';' S*
- */
-
- var tokenStream = this._tokenStream,
- tt,
- uri,
- importToken,
- mediaList = [];
-
- //read import symbol
- tokenStream.mustMatch(Tokens.IMPORT_SYM);
- importToken = tokenStream.token();
- this._readWhitespace();
-
- tokenStream.mustMatch([Tokens.STRING, Tokens.URI]);
-
- //grab the URI value
- uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1");
-
- this._readWhitespace();
-
- mediaList = this._media_query_list();
-
- //must end with a semicolon
- tokenStream.mustMatch(Tokens.SEMICOLON);
- this._readWhitespace();
-
- if (emit !== false){
- this.fire({
- type: "import",
- uri: uri,
- media: mediaList,
- line: importToken.startLine,
- col: importToken.startCol
- });
- }
-
- },
-
- _namespace: function(emit){
- /*
- * namespace
- * : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S*
- */
-
- var tokenStream = this._tokenStream,
- line,
- col,
- prefix,
- uri;
-
- //read import symbol
- tokenStream.mustMatch(Tokens.NAMESPACE_SYM);
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
- this._readWhitespace();
-
- //it's a namespace prefix - no _namespace_prefix() method because it's just an IDENT
- if (tokenStream.match(Tokens.IDENT)){
- prefix = tokenStream.token().value;
- this._readWhitespace();
- }
-
- tokenStream.mustMatch([Tokens.STRING, Tokens.URI]);
-
- //grab the URI value
- uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1");
-
- this._readWhitespace();
-
- //must end with a semicolon
- tokenStream.mustMatch(Tokens.SEMICOLON);
- this._readWhitespace();
-
- if (emit !== false){
- this.fire({
- type: "namespace",
- prefix: prefix,
- uri: uri,
- line: line,
- col: col
- });
- }
-
- },
-
- _media: function(){
- /*
- * media
- * : MEDIA_SYM S* media_query_list S* '{' S* ruleset* '}' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- line,
- col,
- mediaList;// = [];
-
- //look for @media
- tokenStream.mustMatch(Tokens.MEDIA_SYM);
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
-
- this._readWhitespace();
-
- mediaList = this._media_query_list();
-
- tokenStream.mustMatch(Tokens.LBRACE);
- this._readWhitespace();
-
- this.fire({
- type: "startmedia",
- media: mediaList,
- line: line,
- col: col
- });
-
- while(true) {
- if (tokenStream.peek() == Tokens.PAGE_SYM){
- this._page();
- } else if (!this._ruleset()){
- break;
- }
- }
-
- tokenStream.mustMatch(Tokens.RBRACE);
- this._readWhitespace();
-
- this.fire({
- type: "endmedia",
- media: mediaList,
- line: line,
- col: col
- });
- },
-
-
- //CSS3 Media Queries
- _media_query_list: function(){
- /*
- * media_query_list
- * : S* [media_query [ ',' S* media_query ]* ]?
- * ;
- */
- var tokenStream = this._tokenStream,
- mediaList = [];
-
-
- this._readWhitespace();
-
- if (tokenStream.peek() == Tokens.IDENT || tokenStream.peek() == Tokens.LPAREN){
- mediaList.push(this._media_query());
- }
-
- while(tokenStream.match(Tokens.COMMA)){
- this._readWhitespace();
- mediaList.push(this._media_query());
- }
-
- return mediaList;
- },
-
- /*
- * Note: "expression" in the grammar maps to the _media_expression
- * method.
-
- */
- _media_query: function(){
- /*
- * media_query
- * : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
- * | expression [ AND S* expression ]*
- * ;
- */
- var tokenStream = this._tokenStream,
- type = null,
- ident = null,
- token = null,
- expressions = [];
-
- if (tokenStream.match(Tokens.IDENT)){
- ident = tokenStream.token().value.toLowerCase();
-
- //since there's no custom tokens for these, need to manually check
- if (ident != "only" && ident != "not"){
- tokenStream.unget();
- ident = null;
- } else {
- token = tokenStream.token();
- }
- }
-
- this._readWhitespace();
-
- if (tokenStream.peek() == Tokens.IDENT){
- type = this._media_type();
- if (token === null){
- token = tokenStream.token();
- }
- } else if (tokenStream.peek() == Tokens.LPAREN){
- if (token === null){
- token = tokenStream.LT(1);
- }
- expressions.push(this._media_expression());
- }
-
- if (type === null && expressions.length === 0){
- return null;
- } else {
- this._readWhitespace();
- while (tokenStream.match(Tokens.IDENT)){
- if (tokenStream.token().value.toLowerCase() != "and"){
- this._unexpectedToken(tokenStream.token());
- }
-
- this._readWhitespace();
- expressions.push(this._media_expression());
- }
- }
-
- return new MediaQuery(ident, type, expressions, token.startLine, token.startCol);
- },
-
- //CSS3 Media Queries
- _media_type: function(){
- /*
- * media_type
- * : IDENT
- * ;
- */
- return this._media_feature();
- },
-
- /**
- * Note: in CSS3 Media Queries, this is called "expression".
- * Renamed here to avoid conflict with CSS3 Selectors
- * definition of "expression". Also note that "expr" in the
- * grammar now maps to "expression" from CSS3 selectors.
- * @method _media_expression
- * @private
- */
- _media_expression: function(){
- /*
- * expression
- * : '(' S* media_feature S* [ ':' S* expr ]? ')' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- feature = null,
- token,
- expression = null;
-
- tokenStream.mustMatch(Tokens.LPAREN);
-
- feature = this._media_feature();
- this._readWhitespace();
-
- if (tokenStream.match(Tokens.COLON)){
- this._readWhitespace();
- token = tokenStream.LT(1);
- expression = this._expression();
- }
-
- tokenStream.mustMatch(Tokens.RPAREN);
- this._readWhitespace();
-
- return new MediaFeature(feature, (expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null));
- },
-
- //CSS3 Media Queries
- _media_feature: function(){
- /*
- * media_feature
- * : IDENT
- * ;
- */
- var tokenStream = this._tokenStream;
-
- tokenStream.mustMatch(Tokens.IDENT);
-
- return SyntaxUnit.fromToken(tokenStream.token());
- },
-
- //CSS3 Paged Media
- _page: function(){
- /*
- * page:
- * PAGE_SYM S* IDENT? pseudo_page? S*
- * '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- line,
- col,
- identifier = null,
- pseudoPage = null;
-
- //look for @page
- tokenStream.mustMatch(Tokens.PAGE_SYM);
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
-
- this._readWhitespace();
-
- if (tokenStream.match(Tokens.IDENT)){
- identifier = tokenStream.token().value;
-
- //The value 'auto' may not be used as a page name and MUST be treated as a syntax error.
- if (identifier.toLowerCase() === "auto"){
- this._unexpectedToken(tokenStream.token());
- }
- }
-
- //see if there's a colon upcoming
- if (tokenStream.peek() == Tokens.COLON){
- pseudoPage = this._pseudo_page();
- }
-
- this._readWhitespace();
-
- this.fire({
- type: "startpage",
- id: identifier,
- pseudo: pseudoPage,
- line: line,
- col: col
- });
-
- this._readDeclarations(true, true);
-
- this.fire({
- type: "endpage",
- id: identifier,
- pseudo: pseudoPage,
- line: line,
- col: col
- });
-
- },
-
- //CSS3 Paged Media
- _margin: function(){
- /*
- * margin :
- * margin_sym S* '{' declaration [ ';' S* declaration? ]* '}' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- line,
- col,
- marginSym = this._margin_sym();
-
- if (marginSym){
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
-
- this.fire({
- type: "startpagemargin",
- margin: marginSym,
- line: line,
- col: col
- });
-
- this._readDeclarations(true);
-
- this.fire({
- type: "endpagemargin",
- margin: marginSym,
- line: line,
- col: col
- });
- return true;
- } else {
- return false;
- }
- },
-
- //CSS3 Paged Media
- _margin_sym: function(){
-
- /*
- * margin_sym :
- * TOPLEFTCORNER_SYM |
- * TOPLEFT_SYM |
- * TOPCENTER_SYM |
- * TOPRIGHT_SYM |
- * TOPRIGHTCORNER_SYM |
- * BOTTOMLEFTCORNER_SYM |
- * BOTTOMLEFT_SYM |
- * BOTTOMCENTER_SYM |
- * BOTTOMRIGHT_SYM |
- * BOTTOMRIGHTCORNER_SYM |
- * LEFTTOP_SYM |
- * LEFTMIDDLE_SYM |
- * LEFTBOTTOM_SYM |
- * RIGHTTOP_SYM |
- * RIGHTMIDDLE_SYM |
- * RIGHTBOTTOM_SYM
- * ;
- */
-
- var tokenStream = this._tokenStream;
-
- if(tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM,
- Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM,
- Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM,
- Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM,
- Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM,
- Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM,
- Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM]))
- {
- return SyntaxUnit.fromToken(tokenStream.token());
- } else {
- return null;
- }
-
- },
-
- _pseudo_page: function(){
- /*
- * pseudo_page
- * : ':' IDENT
- * ;
- */
-
- var tokenStream = this._tokenStream;
-
- tokenStream.mustMatch(Tokens.COLON);
- tokenStream.mustMatch(Tokens.IDENT);
-
- //TODO: CSS3 Paged Media says only "left", "center", and "right" are allowed
-
- return tokenStream.token().value;
- },
-
- _font_face: function(){
- /*
- * font_face
- * : FONT_FACE_SYM S*
- * '{' S* declaration [ ';' S* declaration ]* '}' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- line,
- col;
-
- //look for @page
- tokenStream.mustMatch(Tokens.FONT_FACE_SYM);
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
-
- this._readWhitespace();
-
- this.fire({
- type: "startfontface",
- line: line,
- col: col
- });
-
- this._readDeclarations(true);
-
- this.fire({
- type: "endfontface",
- line: line,
- col: col
- });
- },
-
- _operator: function(){
-
- /*
- * operator
- * : '/' S* | ',' S* | /( empty )/
- * ;
- */
-
- var tokenStream = this._tokenStream,
- token = null;
-
- if (tokenStream.match([Tokens.SLASH, Tokens.COMMA])){
- token = tokenStream.token();
- this._readWhitespace();
- }
- return token ? PropertyValuePart.fromToken(token) : null;
-
- },
-
- _combinator: function(){
-
- /*
- * combinator
- * : PLUS S* | GREATER S* | TILDE S* | S+
- * ;
- */
-
- var tokenStream = this._tokenStream,
- value = null,
- token;
-
- if(tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])){
- token = tokenStream.token();
- value = new Combinator(token.value, token.startLine, token.startCol);
- this._readWhitespace();
- }
-
- return value;
- },
-
- _unary_operator: function(){
-
- /*
- * unary_operator
- * : '-' | '+'
- * ;
- */
-
- var tokenStream = this._tokenStream;
-
- if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])){
- return tokenStream.token().value;
- } else {
- return null;
- }
- },
-
- _property: function(){
-
- /*
- * property
- * : IDENT S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- value = null,
- hack = null,
- tokenValue,
- token,
- line,
- col;
-
- //check for star hack - throws error if not allowed
- if (tokenStream.peek() == Tokens.STAR && this.options.starHack){
- tokenStream.get();
- token = tokenStream.token();
- hack = token.value;
- line = token.startLine;
- col = token.startCol;
- }
-
- if(tokenStream.match(Tokens.IDENT)){
- token = tokenStream.token();
- tokenValue = token.value;
-
- //check for underscore hack - no error if not allowed because it's valid CSS syntax
- if (tokenValue.charAt(0) == "_" && this.options.underscoreHack){
- hack = "_";
- tokenValue = tokenValue.substring(1);
- }
-
- value = new PropertyName(tokenValue, hack, (line||token.startLine), (col||token.startCol));
- this._readWhitespace();
- }
-
- return value;
- },
-
- //Augmented with CSS3 Selectors
- _ruleset: function(){
- /*
- * ruleset
- * : selectors_group
- * '{' S* declaration? [ ';' S* declaration? ]* '}' S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- tt,
- selectors;
- try {
- selectors = this._selectors_group();
- } catch (ex){
- if (ex instanceof SyntaxError && !this.options.strict){
-
- //fire error event
- this.fire({
- type: "error",
- error: ex,
- message: ex.message,
- line: ex.line,
- col: ex.col
- });
-
- //skip over everything until closing brace
- tt = tokenStream.advance([Tokens.RBRACE]);
- if (tt == Tokens.RBRACE){
- //if there's a right brace, the rule is finished so don't do anything
- } else {
- //otherwise, rethrow the error because it wasn't handled properly
- throw ex;
- }
-
- } else {
- //not a syntax error, rethrow it
- throw ex;
- }
-
- //trigger parser to continue
- return true;
- }
-
- //if it got here, all selectors parsed
- if (selectors){
-
- this.fire({
- type: "startrule",
- selectors: selectors,
- line: selectors[0].line,
- col: selectors[0].col
- });
-
- this._readDeclarations(true);
-
- this.fire({
- type: "endrule",
- selectors: selectors,
- line: selectors[0].line,
- col: selectors[0].col
- });
-
- }
-
- return selectors;
-
- },
-
- //CSS3 Selectors
- _selectors_group: function(){
-
- /*
- * selectors_group
- * : selector [ COMMA S* selector ]*
- * ;
- */
- var tokenStream = this._tokenStream,
- selectors = [],
- selector;
-
- selector = this._selector();
- if (selector !== null){
-
- selectors.push(selector);
- while(tokenStream.match(Tokens.COMMA)){
- this._readWhitespace();
- selector = this._selector();
- if (selector !== null){
- selectors.push(selector);
- } else {
- this._unexpectedToken(tokenStream.LT(1));
- }
- }
- }
-
- return selectors.length ? selectors : null;
- },
-
- //CSS3 Selectors
- _selector: function(){
- /*
- * selector
- * : simple_selector_sequence [ combinator simple_selector_sequence ]*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- selector = [],
- nextSelector = null,
- combinator = null,
- ws = null;
-
- //if there's no simple selector, then there's no selector
- nextSelector = this._simple_selector_sequence();
- if (nextSelector === null){
- return null;
- }
-
- selector.push(nextSelector);
-
- do {
-
- //look for a combinator
- combinator = this._combinator();
-
- if (combinator !== null){
- selector.push(combinator);
- nextSelector = this._simple_selector_sequence();
-
- //there must be a next selector
- if (nextSelector === null){
- this._unexpectedToken(this.LT(1));
- } else {
-
- //nextSelector is an instance of SelectorPart
- selector.push(nextSelector);
- }
- } else {
-
- //if there's not whitespace, we're done
- if (this._readWhitespace()){
-
- //add whitespace separator
- ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol);
-
- //combinator is not required
- combinator = this._combinator();
-
- //selector is required if there's a combinator
- nextSelector = this._simple_selector_sequence();
- if (nextSelector === null){
- if (combinator !== null){
- this._unexpectedToken(tokenStream.LT(1));
- }
- } else {
-
- if (combinator !== null){
- selector.push(combinator);
- } else {
- selector.push(ws);
- }
-
- selector.push(nextSelector);
- }
- } else {
- break;
- }
-
- }
- } while(true);
-
- return new Selector(selector, selector[0].line, selector[0].col);
- },
-
- //CSS3 Selectors
- _simple_selector_sequence: function(){
- /*
- * simple_selector_sequence
- * : [ type_selector | universal ]
- * [ HASH | class | attrib | pseudo | negation ]*
- * | [ HASH | class | attrib | pseudo | negation ]+
- * ;
- */
-
- var tokenStream = this._tokenStream,
-
- //parts of a simple selector
- elementName = null,
- modifiers = [],
-
- //complete selector text
- selectorText= "",
-
- //the different parts after the element name to search for
- components = [
- //HASH
- function(){
- return tokenStream.match(Tokens.HASH) ?
- new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) :
- null;
- },
- this._class,
- this._attrib,
- this._pseudo,
- this._negation
- ],
- i = 0,
- len = components.length,
- component = null,
- found = false,
- line,
- col;
-
-
- //get starting line and column for the selector
- line = tokenStream.LT(1).startLine;
- col = tokenStream.LT(1).startCol;
-
- elementName = this._type_selector();
- if (!elementName){
- elementName = this._universal();
- }
-
- if (elementName !== null){
- selectorText += elementName;
- }
-
- while(true){
-
- //whitespace means we're done
- if (tokenStream.peek() === Tokens.S){
- break;
- }
-
- //check for each component
- while(i < len && component === null){
- component = components[i++].call(this);
- }
-
- if (component === null){
-
- //we don't have a selector
- if (selectorText === ""){
- return null;
- } else {
- break;
- }
- } else {
- i = 0;
- modifiers.push(component);
- selectorText += component.toString();
- component = null;
- }
- }
-
-
- return selectorText !== "" ?
- new SelectorPart(elementName, modifiers, selectorText, line, col) :
- null;
- },
-
- //CSS3 Selectors
- _type_selector: function(){
- /*
- * type_selector
- * : [ namespace_prefix ]? element_name
- * ;
- */
-
- var tokenStream = this._tokenStream,
- ns = this._namespace_prefix(),
- elementName = this._element_name();
-
- if (!elementName){
- /*
- * Need to back out the namespace that was read due to both
- * type_selector and universal reading namespace_prefix
- * first. Kind of hacky, but only way I can figure out
- * right now how to not change the grammar.
- */
- if (ns){
- tokenStream.unget();
- if (ns.length > 1){
- tokenStream.unget();
- }
- }
-
- return null;
- } else {
- if (ns){
- elementName.text = ns + elementName.text;
- elementName.col -= ns.length;
- }
- return elementName;
- }
- },
-
- //CSS3 Selectors
- _class: function(){
- /*
- * class
- * : '.' IDENT
- * ;
- */
-
- var tokenStream = this._tokenStream,
- token;
-
- if (tokenStream.match(Tokens.DOT)){
- tokenStream.mustMatch(Tokens.IDENT);
- token = tokenStream.token();
- return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1);
- } else {
- return null;
- }
-
- },
-
- //CSS3 Selectors
- _element_name: function(){
- /*
- * element_name
- * : IDENT
- * ;
- */
-
- var tokenStream = this._tokenStream,
- token;
-
- if (tokenStream.match(Tokens.IDENT)){
- token = tokenStream.token();
- return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol);
-
- } else {
- return null;
- }
- },
-
- //CSS3 Selectors
- _namespace_prefix: function(){
- /*
- * namespace_prefix
- * : [ IDENT | '*' ]? '|'
- * ;
- */
- var tokenStream = this._tokenStream,
- value = "";
-
- //verify that this is a namespace prefix
- if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE){
-
- if(tokenStream.match([Tokens.IDENT, Tokens.STAR])){
- value += tokenStream.token().value;
- }
-
- tokenStream.mustMatch(Tokens.PIPE);
- value += "|";
-
- }
-
- return value.length ? value : null;
- },
-
- //CSS3 Selectors
- _universal: function(){
- /*
- * universal
- * : [ namespace_prefix ]? '*'
- * ;
- */
- var tokenStream = this._tokenStream,
- value = "",
- ns;
-
- ns = this._namespace_prefix();
- if(ns){
- value += ns;
- }
-
- if(tokenStream.match(Tokens.STAR)){
- value += "*";
- }
-
- return value.length ? value : null;
-
- },
-
- //CSS3 Selectors
- _attrib: function(){
- /*
- * attrib
- * : '[' S* [ namespace_prefix ]? IDENT S*
- * [ [ PREFIXMATCH |
- * SUFFIXMATCH |
- * SUBSTRINGMATCH |
- * '=' |
- * INCLUDES |
- * DASHMATCH ] S* [ IDENT | STRING ] S*
- * ]? ']'
- * ;
- */
-
- var tokenStream = this._tokenStream,
- value = null,
- ns,
- token;
-
- if (tokenStream.match(Tokens.LBRACKET)){
- token = tokenStream.token();
- value = token.value;
- value += this._readWhitespace();
-
- ns = this._namespace_prefix();
-
- if (ns){
- value += ns;
- }
-
- tokenStream.mustMatch(Tokens.IDENT);
- value += tokenStream.token().value;
- value += this._readWhitespace();
-
- if(tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH,
- Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])){
-
- value += tokenStream.token().value;
- value += this._readWhitespace();
-
- tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]);
- value += tokenStream.token().value;
- value += this._readWhitespace();
- }
-
- tokenStream.mustMatch(Tokens.RBRACKET);
-
- return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol);
- } else {
- return null;
- }
- },
-
- //CSS3 Selectors
- _pseudo: function(){
-
- /*
- * pseudo
- * : ':' ':'? [ IDENT | functional_pseudo ]
- * ;
- */
-
- var tokenStream = this._tokenStream,
- pseudo = null,
- colons = ":",
- line,
- col;
-
- if (tokenStream.match(Tokens.COLON)){
-
- if (tokenStream.match(Tokens.COLON)){
- colons += ":";
- }
-
- if (tokenStream.match(Tokens.IDENT)){
- pseudo = tokenStream.token().value;
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol - colons.length;
- } else if (tokenStream.peek() == Tokens.FUNCTION){
- line = tokenStream.LT(1).startLine;
- col = tokenStream.LT(1).startCol - colons.length;
- pseudo = this._functional_pseudo();
- }
-
- if (pseudo){
- pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col);
- }
- }
-
- return pseudo;
- },
-
- //CSS3 Selectors
- _functional_pseudo: function(){
- /*
- * functional_pseudo
- * : FUNCTION S* expression ')'
- * ;
- */
-
- var tokenStream = this._tokenStream,
- value = null;
-
- if(tokenStream.match(Tokens.FUNCTION)){
- value = tokenStream.token().value;
- value += this._readWhitespace();
- value += this._expression();
- tokenStream.mustMatch(Tokens.RPAREN);
- value += ")";
- }
-
- return value;
- },
-
- //CSS3 Selectors
- _expression: function(){
- /*
- * expression
- * : [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+
- * ;
- */
-
- var tokenStream = this._tokenStream,
- value = "";
-
- while(tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION,
- Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH,
- Tokens.FREQ, Tokens.ANGLE, Tokens.TIME,
- Tokens.RESOLUTION])){
-
- value += tokenStream.token().value;
- value += this._readWhitespace();
- }
-
- return value.length ? value : null;
-
- },
-
- //CSS3 Selectors
- _negation: function(){
- /*
- * negation
- * : NOT S* negation_arg S* ')'
- * ;
- */
-
- var tokenStream = this._tokenStream,
- line,
- col,
- value = "",
- arg,
- subpart = null;
-
- if (tokenStream.match(Tokens.NOT)){
- value = tokenStream.token().value;
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
- value += this._readWhitespace();
- arg = this._negation_arg();
- value += arg;
- value += this._readWhitespace();
- tokenStream.match(Tokens.RPAREN);
- value += tokenStream.token().value;
-
- subpart = new SelectorSubPart(value, "not", line, col);
- subpart.args.push(arg);
- }
-
- return subpart;
- },
-
- //CSS3 Selectors
- _negation_arg: function(){
- /*
- * negation_arg
- * : type_selector | universal | HASH | class | attrib | pseudo
- * ;
- */
-
- var tokenStream = this._tokenStream,
- args = [
- this._type_selector,
- this._universal,
- function(){
- return tokenStream.match(Tokens.HASH) ?
- new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) :
- null;
- },
- this._class,
- this._attrib,
- this._pseudo
- ],
- arg = null,
- i = 0,
- len = args.length,
- elementName,
- line,
- col,
- part;
-
- line = tokenStream.LT(1).startLine;
- col = tokenStream.LT(1).startCol;
-
- while(i < len && arg === null){
-
- arg = args[i].call(this);
- i++;
- }
-
- //must be a negation arg
- if (arg === null){
- this._unexpectedToken(tokenStream.LT(1));
- }
-
- //it's an element name
- if (arg.type == "elementName"){
- part = new SelectorPart(arg, [], arg.toString(), line, col);
- } else {
- part = new SelectorPart(null, [arg], arg.toString(), line, col);
- }
-
- return part;
- },
-
- _declaration: function(){
-
- /*
- * declaration
- * : property ':' S* expr prio?
- * | /( empty )/
- * ;
- */
-
- var tokenStream = this._tokenStream,
- property = null,
- expr = null,
- prio = null,
- error = null,
- invalid = null;
-
- property = this._property();
- if (property !== null){
-
- tokenStream.mustMatch(Tokens.COLON);
- this._readWhitespace();
-
- expr = this._expr();
-
- //if there's no parts for the value, it's an error
- if (!expr || expr.length === 0){
- this._unexpectedToken(tokenStream.LT(1));
- }
-
- prio = this._prio();
-
- try {
- this._validateProperty(property, expr);
- } catch (ex) {
- invalid = ex;
- }
-
- this.fire({
- type: "property",
- property: property,
- value: expr,
- important: prio,
- line: property.line,
- col: property.col,
- invalid: invalid
- });
-
- return true;
- } else {
- return false;
- }
- },
-
- _prio: function(){
- /*
- * prio
- * : IMPORTANT_SYM S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- result = tokenStream.match(Tokens.IMPORTANT_SYM);
-
- this._readWhitespace();
- return result;
- },
-
- _expr: function(){
- /*
- * expr
- * : term [ operator term ]*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- values = [],
- //valueParts = [],
- value = null,
- operator = null;
-
- value = this._term();
- if (value !== null){
-
- values.push(value);
-
- do {
- operator = this._operator();
-
- //if there's an operator, keep building up the value parts
- if (operator){
- values.push(operator);
- } /*else {
- //if there's not an operator, you have a full value
- values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col));
- valueParts = [];
- }*/
-
- value = this._term();
-
- if (value === null){
- break;
- } else {
- values.push(value);
- }
- } while(true);
- }
-
- //cleanup
- /*if (valueParts.length){
- values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col));
- }*/
-
- return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null;
- },
-
- _term: function(){
-
- /*
- * term
- * : unary_operator?
- * [ NUMBER S* | PERCENTAGE S* | LENGTH S* | ANGLE S* |
- * TIME S* | FREQ S* | function | ie_function ]
- * | STRING S* | IDENT S* | URI S* | UNICODERANGE S* | hexcolor
- * ;
- */
-
- var tokenStream = this._tokenStream,
- unary = null,
- value = null,
- token,
- line,
- col;
-
- //returns the operator or null
- unary = this._unary_operator();
- if (unary !== null){
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
- }
-
- //exception for IE filters
- if (tokenStream.peek() == Tokens.IE_FUNCTION && this.options.ieFilters){
-
- value = this._ie_function();
- if (unary === null){
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
- }
-
- //see if there's a simple match
- } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH,
- Tokens.ANGLE, Tokens.TIME,
- Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])){
-
- value = tokenStream.token().value;
- if (unary === null){
- line = tokenStream.token().startLine;
- col = tokenStream.token().startCol;
- }
- this._readWhitespace();
- } else {
-
- //see if it's a color
- token = this._hexcolor();
- if (token === null){
-
- //if there's no unary, get the start of the next token for line/col info
- if (unary === null){
- line = tokenStream.LT(1).startLine;
- col = tokenStream.LT(1).startCol;
- }
-
- //has to be a function
- if (value === null){
-
- /*
- * This checks for alpha(opacity=0) style of IE
- * functions. IE_FUNCTION only presents progid: style.
- */
- if (tokenStream.LA(3) == Tokens.EQUALS && this.options.ieFilters){
- value = this._ie_function();
- } else {
- value = this._function();
- }
- }
-
- /*if (value === null){
- return null;
- //throw new Error("Expected identifier at line " + tokenStream.token().startLine + ", character " + tokenStream.token().startCol + ".");
- }*/
-
- } else {
- value = token.value;
- if (unary === null){
- line = token.startLine;
- col = token.startCol;
- }
- }
-
- }
-
- return value !== null ?
- new PropertyValuePart(unary !== null ? unary + value : value, line, col) :
- null;
-
- },
-
- _function: function(){
-
- /*
- * function
- * : FUNCTION S* expr ')' S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- functionText = null,
- expr = null,
- lt;
-
- if (tokenStream.match(Tokens.FUNCTION)){
- functionText = tokenStream.token().value;
- this._readWhitespace();
- expr = this._expr();
- functionText += expr;
-
- //START: Horrible hack in case it's an IE filter
- if (this.options.ieFilters && tokenStream.peek() == Tokens.EQUALS){
- do {
-
- if (this._readWhitespace()){
- functionText += tokenStream.token().value;
- }
-
- //might be second time in the loop
- if (tokenStream.LA(0) == Tokens.COMMA){
- functionText += tokenStream.token().value;
- }
-
- tokenStream.match(Tokens.IDENT);
- functionText += tokenStream.token().value;
-
- tokenStream.match(Tokens.EQUALS);
- functionText += tokenStream.token().value;
-
- //functionText += this._term();
- lt = tokenStream.peek();
- while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){
- tokenStream.get();
- functionText += tokenStream.token().value;
- lt = tokenStream.peek();
- }
- } while(tokenStream.match([Tokens.COMMA, Tokens.S]));
- }
-
- //END: Horrible Hack
-
- tokenStream.match(Tokens.RPAREN);
- functionText += ")";
- this._readWhitespace();
- }
-
- return functionText;
- },
-
- _ie_function: function(){
-
- /* (My own extension)
- * ie_function
- * : IE_FUNCTION S* IDENT '=' term [S* ','? IDENT '=' term]+ ')' S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- functionText = null,
- expr = null,
- lt;
-
- //IE function can begin like a regular function, too
- if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])){
- functionText = tokenStream.token().value;
-
- do {
-
- if (this._readWhitespace()){
- functionText += tokenStream.token().value;
- }
-
- //might be second time in the loop
- if (tokenStream.LA(0) == Tokens.COMMA){
- functionText += tokenStream.token().value;
- }
-
- tokenStream.match(Tokens.IDENT);
- functionText += tokenStream.token().value;
-
- tokenStream.match(Tokens.EQUALS);
- functionText += tokenStream.token().value;
-
- //functionText += this._term();
- lt = tokenStream.peek();
- while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){
- tokenStream.get();
- functionText += tokenStream.token().value;
- lt = tokenStream.peek();
- }
- } while(tokenStream.match([Tokens.COMMA, Tokens.S]));
-
- tokenStream.match(Tokens.RPAREN);
- functionText += ")";
- this._readWhitespace();
- }
-
- return functionText;
- },
-
- _hexcolor: function(){
- /*
- * There is a constraint on the color that it must
- * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F])
- * after the "#"; e.g., "#000" is OK, but "#abcd" is not.
- *
- * hexcolor
- * : HASH S*
- * ;
- */
-
- var tokenStream = this._tokenStream,
- token = null,
- color;
-
- if(tokenStream.match(Tokens.HASH)){
-
- //need to do some validation here
-
- token = tokenStream.token();
- color = token.value;
- if (!/#[a-f0-9]{3,6}/i.test(color)){
- throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol);
- }
- this._readWhitespace();
- }
-
- return token;
- },
-
- //-----------------------------------------------------------------
- // Animations methods
- //-----------------------------------------------------------------
-
- _keyframes: function(){
-
- /*
- * keyframes:
- * : KEYFRAMES_SYM S* keyframe_name S* '{' S* keyframe_rule* '}' {
- * ;
- */
- var tokenStream = this._tokenStream,
- token,
- tt,
- name;
-
- tokenStream.mustMatch(Tokens.KEYFRAMES_SYM);
- this._readWhitespace();
- name = this._keyframe_name();
-
- this._readWhitespace();
- tokenStream.mustMatch(Tokens.LBRACE);
-
- this.fire({
- type: "startkeyframes",
- name: name,
- line: name.line,
- col: name.col
- });
-
- this._readWhitespace();
- tt = tokenStream.peek();
-
- //check for key
- while(tt == Tokens.IDENT || tt == Tokens.PERCENTAGE) {
- this._keyframe_rule();
- this._readWhitespace();
- tt = tokenStream.peek();
- }
-
- this.fire({
- type: "endkeyframes",
- name: name,
- line: name.line,
- col: name.col
- });
-
- this._readWhitespace();
- tokenStream.mustMatch(Tokens.RBRACE);
-
- },
-
- _keyframe_name: function(){
-
- /*
- * keyframe_name:
- * : IDENT
- * | STRING
- * ;
- */
- var tokenStream = this._tokenStream,
- token;
-
- tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]);
- return SyntaxUnit.fromToken(tokenStream.token());
- },
-
- _keyframe_rule: function(){
-
- /*
- * keyframe_rule:
- * : key_list S*
- * '{' S* declaration [ ';' S* declaration ]* '}' S*
- * ;
- */
- var tokenStream = this._tokenStream,
- token,
- keyList = this._key_list();
-
- this.fire({
- type: "startkeyframerule",
- keys: keyList,
- line: keyList[0].line,
- col: keyList[0].col
- });
-
- this._readDeclarations(true);
-
- this.fire({
- type: "endkeyframerule",
- keys: keyList,
- line: keyList[0].line,
- col: keyList[0].col
- });
-
- },
-
- _key_list: function(){
-
- /*
- * key_list:
- * : key [ S* ',' S* key]*
- * ;
- */
- var tokenStream = this._tokenStream,
- token,
- key,
- keyList = [];
-
- //must be least one key
- keyList.push(this._key());
-
- this._readWhitespace();
-
- while(tokenStream.match(Tokens.COMMA)){
- this._readWhitespace();
- keyList.push(this._key());
- this._readWhitespace();
- }
-
- return keyList;
- },
-
- _key: function(){
- /*
- * There is a restriction that IDENT can be only "from" or "to".
- *
- * key
- * : PERCENTAGE
- * | IDENT
- * ;
- */
-
- var tokenStream = this._tokenStream,
- token;
-
- if (tokenStream.match(Tokens.PERCENTAGE)){
- return SyntaxUnit.fromToken(tokenStream.token());
- } else if (tokenStream.match(Tokens.IDENT)){
- token = tokenStream.token();
-
- if (/from|to/i.test(token.value)){
- return SyntaxUnit.fromToken(token);
- }
-
- tokenStream.unget();
- }
-
- //if it gets here, there wasn't a valid token, so time to explode
- this._unexpectedToken(tokenStream.LT(1));
- },
-
- //-----------------------------------------------------------------
- // Helper methods
- //-----------------------------------------------------------------
-
- /**
- * Not part of CSS grammar, but useful for skipping over
- * combination of white space and HTML-style comments.
- * @return {void}
- * @method _skipCruft
- * @private
- */
- _skipCruft: function(){
- while(this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])){
- //noop
- }
- },
-
- /**
- * Not part of CSS grammar, but this pattern occurs frequently
- * in the official CSS grammar. Split out here to eliminate
- * duplicate code.
- * @param {Boolean} checkStart Indicates if the rule should check
- * for the left brace at the beginning.
- * @param {Boolean} readMargins Indicates if the rule should check
- * for margin patterns.
- * @return {void}
- * @method _readDeclarations
- * @private
- */
- _readDeclarations: function(checkStart, readMargins){
- /*
- * Reads the pattern
- * S* '{' S* declaration [ ';' S* declaration ]* '}' S*
- * or
- * S* '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S*
- * Note that this is how it is described in CSS3 Paged Media, but is actually incorrect.
- * A semicolon is only necessary following a delcaration is there's another declaration
- * or margin afterwards.
- */
- var tokenStream = this._tokenStream,
- tt;
-
-
- this._readWhitespace();
-
- if (checkStart){
- tokenStream.mustMatch(Tokens.LBRACE);
- }
-
- this._readWhitespace();
-
- try {
-
- while(true){
-
- if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){
- //noop
- } else if (this._declaration()){
- if (!tokenStream.match(Tokens.SEMICOLON)){
- break;
- }
- } else {
- break;
- }
-
- //if ((!this._margin() && !this._declaration()) || !tokenStream.match(Tokens.SEMICOLON)){
- // break;
- //}
- this._readWhitespace();
- }
-
- tokenStream.mustMatch(Tokens.RBRACE);
- this._readWhitespace();
-
- } catch (ex) {
- if (ex instanceof SyntaxError && !this.options.strict){
-
- //fire error event
- this.fire({
- type: "error",
- error: ex,
- message: ex.message,
- line: ex.line,
- col: ex.col
- });
-
- //see if there's another declaration
- tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]);
- if (tt == Tokens.SEMICOLON){
- //if there's a semicolon, then there might be another declaration
- this._readDeclarations(false, readMargins);
- } else if (tt != Tokens.RBRACE){
- //if there's a right brace, the rule is finished so don't do anything
- //otherwise, rethrow the error because it wasn't handled properly
- throw ex;
- }
-
- } else {
- //not a syntax error, rethrow it
- throw ex;
- }
- }
-
- },
-
- /**
- * In some cases, you can end up with two white space tokens in a
- * row. Instead of making a change in every function that looks for
- * white space, this function is used to match as much white space
- * as necessary.
- * @method _readWhitespace
- * @return {String} The white space if found, empty string if not.
- * @private
- */
- _readWhitespace: function(){
-
- var tokenStream = this._tokenStream,
- ws = "";
-
- while(tokenStream.match(Tokens.S)){
- ws += tokenStream.token().value;
- }
-
- return ws;
- },
-
-
- /**
- * Throws an error when an unexpected token is found.
- * @param {Object} token The token that was found.
- * @method _unexpectedToken
- * @return {void}
- * @private
- */
- _unexpectedToken: function(token){
- throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol);
- },
-
- /**
- * Helper method used for parsing subparts of a style sheet.
- * @return {void}
- * @method _verifyEnd
- * @private
- */
- _verifyEnd: function(){
- if (this._tokenStream.LA(1) != Tokens.EOF){
- this._unexpectedToken(this._tokenStream.LT(1));
- }
- },
-
- //-----------------------------------------------------------------
- // Validation methods
- //-----------------------------------------------------------------
- _validateProperty: function(property, value){
- Validation.validate(property, value);
- },
-
- //-----------------------------------------------------------------
- // Parsing methods
- //-----------------------------------------------------------------
-
- parse: function(input){
- this._tokenStream = new TokenStream(input, Tokens);
- this._stylesheet();
- },
-
- parseStyleSheet: function(input){
- //just passthrough
- return this.parse(input);
- },
-
- parseMediaQuery: function(input){
- this._tokenStream = new TokenStream(input, Tokens);
- var result = this._media_query();
-
- //if there's anything more, then it's an invalid selector
- this._verifyEnd();
-
- //otherwise return result
- return result;
- },
-
- /**
- * Parses a property value (everything after the semicolon).
- * @return {parserlib.css.PropertyValue} The property value.
- * @throws parserlib.util.SyntaxError If an unexpected token is found.
- * @method parserPropertyValue
- */
- parsePropertyValue: function(input){
-
- this._tokenStream = new TokenStream(input, Tokens);
- this._readWhitespace();
-
- var result = this._expr();
-
- //okay to have a trailing white space
- this._readWhitespace();
-
- //if there's anything more, then it's an invalid selector
- this._verifyEnd();
-
- //otherwise return result
- return result;
- },
-
- /**
- * Parses a complete CSS rule, including selectors and
- * properties.
- * @param {String} input The text to parser.
- * @return {Boolean} True if the parse completed successfully, false if not.
- * @method parseRule
- */
- parseRule: function(input){
- this._tokenStream = new TokenStream(input, Tokens);
-
- //skip any leading white space
- this._readWhitespace();
-
- var result = this._ruleset();
-
- //skip any trailing white space
- this._readWhitespace();
-
- //if there's anything more, then it's an invalid selector
- this._verifyEnd();
-
- //otherwise return result
- return result;
- },
-
- /**
- * Parses a single CSS selector (no comma)
- * @param {String} input The text to parse as a CSS selector.
- * @return {Selector} An object representing the selector.
- * @throws parserlib.util.SyntaxError If an unexpected token is found.
- * @method parseSelector
- */
- parseSelector: function(input){
-
- this._tokenStream = new TokenStream(input, Tokens);
-
- //skip any leading white space
- this._readWhitespace();
-
- var result = this._selector();
-
- //skip any trailing white space
- this._readWhitespace();
-
- //if there's anything more, then it's an invalid selector
- this._verifyEnd();
-
- //otherwise return result
- return result;
- },
-
- /**
- * Parses an HTML style attribute: a set of CSS declarations
- * separated by semicolons.
- * @param {String} input The text to parse as a style attribute
- * @return {void}
- * @method parseStyleAttribute
- */
- parseStyleAttribute: function(input){
- input += "}"; // for error recovery in _readDeclarations()
- this._tokenStream = new TokenStream(input, Tokens);
- this._readDeclarations();
- }
- };
-
- //copy over onto prototype
- for (prop in additions){
- if (additions.hasOwnProperty(prop)){
- proto[prop] = additions[prop];
- }
- }
-
- return proto;
-}();
-/*global Validation, ValidationTypes, ValidationError*/
-var Properties = {
-
- //A
- "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>",
- "alignment-baseline" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",
- "animation" : 1,
- "animation-delay" : { multi: "<time>", comma: true },
- "animation-direction" : { multi: "normal | alternate", comma: true },
- "animation-duration" : { multi: "<time>", comma: true },
- "animation-iteration-count" : { multi: "<number> | infinite", comma: true },
- "animation-name" : { multi: "none | <ident>", comma: true },
- "animation-play-state" : { multi: "running | paused", comma: true },
- "animation-timing-function" : 1,
-
- //vendor prefixed
- "-moz-animation-delay" : { multi: "<time>", comma: true },
- "-moz-animation-direction" : { multi: "normal | alternate", comma: true },
- "-moz-animation-duration" : { multi: "<time>", comma: true },
- "-moz-animation-iteration-count" : { multi: "<number> | infinite", comma: true },
- "-moz-animation-name" : { multi: "none | <ident>", comma: true },
- "-moz-animation-play-state" : { multi: "running | paused", comma: true },
-
- "-ms-animation-delay" : { multi: "<time>", comma: true },
- "-ms-animation-direction" : { multi: "normal | alternate", comma: true },
- "-ms-animation-duration" : { multi: "<time>", comma: true },
- "-ms-animation-iteration-count" : { multi: "<number> | infinite", comma: true },
- "-ms-animation-name" : { multi: "none | <ident>", comma: true },
- "-ms-animation-play-state" : { multi: "running | paused", comma: true },
-
- "-webkit-animation-delay" : { multi: "<time>", comma: true },
- "-webkit-animation-direction" : { multi: "normal | alternate", comma: true },
- "-webkit-animation-duration" : { multi: "<time>", comma: true },
- "-webkit-animation-iteration-count" : { multi: "<number> | infinite", comma: true },
- "-webkit-animation-name" : { multi: "none | <ident>", comma: true },
- "-webkit-animation-play-state" : { multi: "running | paused", comma: true },
-
- "-o-animation-delay" : { multi: "<time>", comma: true },
- "-o-animation-direction" : { multi: "normal | alternate", comma: true },
- "-o-animation-duration" : { multi: "<time>", comma: true },
- "-o-animation-iteration-count" : { multi: "<number> | infinite", comma: true },
- "-o-animation-name" : { multi: "none | <ident>", comma: true },
- "-o-animation-play-state" : { multi: "running | paused", comma: true },
-
- "appearance" : "icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | inherit",
- "azimuth" : function (expression) {
- var simple = "<angle> | leftwards | rightwards | inherit",
- direction = "left-side | far-left | left | center-left | center | center-right | right | far-right | right-side",
- behind = false,
- valid = false,
- part;
-
- if (!ValidationTypes.isAny(expression, simple)) {
- if (ValidationTypes.isAny(expression, "behind")) {
- behind = true;
- valid = true;
- }
-
- if (ValidationTypes.isAny(expression, direction)) {
- valid = true;
- if (!behind) {
- ValidationTypes.isAny(expression, "behind");
- }
- }
- }
-
- if (expression.hasNext()) {
- part = expression.next();
- if (valid) {
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected (<'azimuth'>) but found '" + part + "'.", part.line, part.col);
- }
- }
- },
-
- //B
- "backface-visibility" : "visible | hidden",
- "background" : 1,
- "background-attachment" : { multi: "<attachment>", comma: true },
- "background-clip" : { multi: "<box>", comma: true },
- "background-color" : "<color> | inherit",
- "background-image" : { multi: "<bg-image>", comma: true },
- "background-origin" : { multi: "<box>", comma: true },
- "background-position" : { multi: "<bg-position>", comma: true },
- "background-repeat" : { multi: "<repeat-style>" },
- "background-size" : { multi: "<bg-size>", comma: true },
- "baseline-shift" : "baseline | sub | super | <percentage> | <length>",
- "binding" : 1,
- "bleed" : "<length>",
- "bookmark-label" : "<content> | <attr> | <string>",
- "bookmark-level" : "none | <integer>",
- "bookmark-state" : "open | closed",
- "bookmark-target" : "none | <uri> | <attr>",
- "border" : "<border-width> || <border-style> || <color>",
- "border-bottom" : "<border-width> || <border-style> || <color>",
- "border-bottom-color" : "<color>",
- "border-bottom-left-radius" : "<x-one-radius>",
- "border-bottom-right-radius" : "<x-one-radius>",
- "border-bottom-style" : "<border-style>",
- "border-bottom-width" : "<border-width>",
- "border-collapse" : "collapse | separate | inherit",
- "border-color" : { multi: "<color> | inherit", max: 4 },
- "border-image" : 1,
- "border-image-outset" : { multi: "<length> | <number>", max: 4 },
- "border-image-repeat" : { multi: "stretch | repeat | round", max: 2 },
- "border-image-slice" : function(expression) {
-
- var valid = false,
- numeric = "<number> | <percentage>",
- fill = false,
- count = 0,
- max = 4,
- part;
-
- if (ValidationTypes.isAny(expression, "fill")) {
- fill = true;
- valid = true;
- }
-
- while (expression.hasNext() && count < max) {
- valid = ValidationTypes.isAny(expression, numeric);
- if (!valid) {
- break;
- }
- count++;
- }
-
-
- if (!fill) {
- ValidationTypes.isAny(expression, "fill");
- } else {
- valid = true;
- }
-
- if (expression.hasNext()) {
- part = expression.next();
- if (valid) {
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '" + part + "'.", part.line, part.col);
- }
- }
- },
- "border-image-source" : "<image> | none",
- "border-image-width" : { multi: "<length> | <percentage> | <number> | auto", max: 4 },
- "border-left" : "<border-width> || <border-style> || <color>",
- "border-left-color" : "<color> | inherit",
- "border-left-style" : "<border-style>",
- "border-left-width" : "<border-width>",
- "border-radius" : function(expression) {
-
- var valid = false,
- numeric = "<length> | <percentage>",
- slash = false,
- fill = false,
- count = 0,
- max = 8,
- part;
-
- while (expression.hasNext() && count < max) {
- valid = ValidationTypes.isAny(expression, numeric);
- if (!valid) {
-
- if (expression.peek() == "/" && count > 1 && !slash) {
- slash = true;
- max = count + 5;
- expression.next();
- } else {
- break;
- }
- }
- count++;
- }
-
- if (expression.hasNext()) {
- part = expression.next();
- if (valid) {
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected (<'border-radius'>) but found '" + part + "'.", part.line, part.col);
- }
- }
- },
- "border-right" : "<border-width> || <border-style> || <color>",
- "border-right-color" : "<color> | inherit",
- "border-right-style" : "<border-style>",
- "border-right-width" : "<border-width>",
- "border-spacing" : { multi: "<length> | inherit", max: 2 },
- "border-style" : { multi: "<border-style>", max: 4 },
- "border-top" : "<border-width> || <border-style> || <color>",
- "border-top-color" : "<color> | inherit",
- "border-top-left-radius" : "<x-one-radius>",
- "border-top-right-radius" : "<x-one-radius>",
- "border-top-style" : "<border-style>",
- "border-top-width" : "<border-width>",
- "border-width" : { multi: "<border-width>", max: 4 },
- "bottom" : "<margin-width> | inherit",
- "box-align" : "start | end | center | baseline | stretch", //http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/
- "box-decoration-break" : "slice |clone",
- "box-direction" : "normal | reverse | inherit",
- "box-flex" : "<number>",
- "box-flex-group" : "<integer>",
- "box-lines" : "single | multiple",
- "box-ordinal-group" : "<integer>",
- "box-orient" : "horizontal | vertical | inline-axis | block-axis | inherit",
- "box-pack" : "start | end | center | justify",
- "box-shadow" : function (expression) {
- var result = false,
- part;
-
- if (!ValidationTypes.isAny(expression, "none")) {
- Validation.multiProperty("<shadow>", expression, true, Infinity);
- } else {
- if (expression.hasNext()) {
- part = expression.next();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- }
- }
- },
- "box-sizing" : "content-box | border-box | inherit",
- "break-after" : "auto | always | avoid | left | right | page | column | avoid-page | avoid-column",
- "break-before" : "auto | always | avoid | left | right | page | column | avoid-page | avoid-column",
- "break-inside" : "auto | avoid | avoid-page | avoid-column",
-
- //C
- "caption-side" : "top | bottom | inherit",
- "clear" : "none | right | left | both | inherit",
- "clip" : 1,
- "color" : "<color> | inherit",
- "color-profile" : 1,
- "column-count" : "<integer> | auto", //http://www.w3.org/TR/css3-multicol/
- "column-fill" : "auto | balance",
- "column-gap" : "<length> | normal",
- "column-rule" : "<border-width> || <border-style> || <color>",
- "column-rule-color" : "<color>",
- "column-rule-style" : "<border-style>",
- "column-rule-width" : "<border-width>",
- "column-span" : "none | all",
- "column-width" : "<length> | auto",
- "columns" : 1,
- "content" : 1,
- "counter-increment" : 1,
- "counter-reset" : 1,
- "crop" : "<shape> | auto",
- "cue" : "cue-after | cue-before | inherit",
- "cue-after" : 1,
- "cue-before" : 1,
- "cursor" : 1,
-
- //D
- "direction" : "ltr | rtl | inherit",
- "display" : "inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | box | inline-box | grid | inline-grid | none | inherit",
- "dominant-baseline" : 1,
- "drop-initial-after-adjust" : "central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>",
- "drop-initial-after-align" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",
- "drop-initial-before-adjust" : "before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>",
- "drop-initial-before-align" : "caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",
- "drop-initial-size" : "auto | line | <length> | <percentage>",
- "drop-initial-value" : "initial | <integer>",
-
- //E
- "elevation" : "<angle> | below | level | above | higher | lower | inherit",
- "empty-cells" : "show | hide | inherit",
-
- //F
- "filter" : 1,
- "fit" : "fill | hidden | meet | slice",
- "fit-position" : 1,
- "float" : "left | right | none | inherit",
- "float-offset" : 1,
- "font" : 1,
- "font-family" : 1,
- "font-size" : "<absolute-size> | <relative-size> | <length> | <percentage> | inherit",
- "font-size-adjust" : "<number> | none | inherit",
- "font-stretch" : "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit",
- "font-style" : "normal | italic | oblique | inherit",
- "font-variant" : "normal | small-caps | inherit",
- "font-weight" : "normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit",
-
- //G
- "grid-cell-stacking" : "columns | rows | layer",
- "grid-column" : 1,
- "grid-columns" : 1,
- "grid-column-align" : "start | end | center | stretch",
- "grid-column-sizing" : 1,
- "grid-column-span" : "<integer>",
- "grid-flow" : "none | rows | columns",
- "grid-layer" : "<integer>",
- "grid-row" : 1,
- "grid-rows" : 1,
- "grid-row-align" : "start | end | center | stretch",
- "grid-row-span" : "<integer>",
- "grid-row-sizing" : 1,
-
- //H
- "hanging-punctuation" : 1,
- "height" : "<margin-width> | inherit",
- "hyphenate-after" : "<integer> | auto",
- "hyphenate-before" : "<integer> | auto",
- "hyphenate-character" : "<string> | auto",
- "hyphenate-lines" : "no-limit | <integer>",
- "hyphenate-resource" : 1,
- "hyphens" : "none | manual | auto",
-
- //I
- "icon" : 1,
- "image-orientation" : "angle | auto",
- "image-rendering" : 1,
- "image-resolution" : 1,
- "inline-box-align" : "initial | last | <integer>",
-
- //L
- "left" : "<margin-width> | inherit",
- "letter-spacing" : "<length> | normal | inherit",
- "line-height" : "<number> | <length> | <percentage> | normal | inherit",
- "line-break" : "auto | loose | normal | strict",
- "line-stacking" : 1,
- "line-stacking-ruby" : "exclude-ruby | include-ruby",
- "line-stacking-shift" : "consider-shifts | disregard-shifts",
- "line-stacking-strategy" : "inline-line-height | block-line-height | max-height | grid-height",
- "list-style" : 1,
- "list-style-image" : "<uri> | none | inherit",
- "list-style-position" : "inside | outside | inherit",
- "list-style-type" : "disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit",
-
- //M
- "margin" : { multi: "<margin-width> | inherit", max: 4 },
- "margin-bottom" : "<margin-width> | inherit",
- "margin-left" : "<margin-width> | inherit",
- "margin-right" : "<margin-width> | inherit",
- "margin-top" : "<margin-width> | inherit",
- "mark" : 1,
- "mark-after" : 1,
- "mark-before" : 1,
- "marks" : 1,
- "marquee-direction" : 1,
- "marquee-play-count" : 1,
- "marquee-speed" : 1,
- "marquee-style" : 1,
- "max-height" : "<length> | <percentage> | none | inherit",
- "max-width" : "<length> | <percentage> | none | inherit",
- "min-height" : "<length> | <percentage> | inherit",
- "min-width" : "<length> | <percentage> | inherit",
- "move-to" : 1,
-
- //N
- "nav-down" : 1,
- "nav-index" : 1,
- "nav-left" : 1,
- "nav-right" : 1,
- "nav-up" : 1,
-
- //O
- "opacity" : "<number> | inherit",
- "orphans" : "<integer> | inherit",
- "outline" : 1,
- "outline-color" : "<color> | invert | inherit",
- "outline-offset" : 1,
- "outline-style" : "<border-style> | inherit",
- "outline-width" : "<border-width> | inherit",
- "overflow" : "visible | hidden | scroll | auto | inherit",
- "overflow-style" : 1,
- "overflow-x" : 1,
- "overflow-y" : 1,
-
- //P
- "padding" : { multi: "<padding-width> | inherit", max: 4 },
- "padding-bottom" : "<padding-width> | inherit",
- "padding-left" : "<padding-width> | inherit",
- "padding-right" : "<padding-width> | inherit",
- "padding-top" : "<padding-width> | inherit",
- "page" : 1,
- "page-break-after" : "auto | always | avoid | left | right | inherit",
- "page-break-before" : "auto | always | avoid | left | right | inherit",
- "page-break-inside" : "auto | avoid | inherit",
- "page-policy" : 1,
- "pause" : 1,
- "pause-after" : 1,
- "pause-before" : 1,
- "perspective" : 1,
- "perspective-origin" : 1,
- "phonemes" : 1,
- "pitch" : 1,
- "pitch-range" : 1,
- "play-during" : 1,
- "position" : "static | relative | absolute | fixed | inherit",
- "presentation-level" : 1,
- "punctuation-trim" : 1,
-
- //Q
- "quotes" : 1,
-
- //R
- "rendering-intent" : 1,
- "resize" : 1,
- "rest" : 1,
- "rest-after" : 1,
- "rest-before" : 1,
- "richness" : 1,
- "right" : "<margin-width> | inherit",
- "rotation" : 1,
- "rotation-point" : 1,
- "ruby-align" : 1,
- "ruby-overhang" : 1,
- "ruby-position" : 1,
- "ruby-span" : 1,
-
- //S
- "size" : 1,
- "speak" : "normal | none | spell-out | inherit",
- "speak-header" : "once | always | inherit",
- "speak-numeral" : "digits | continuous | inherit",
- "speak-punctuation" : "code | none | inherit",
- "speech-rate" : 1,
- "src" : 1,
- "stress" : 1,
- "string-set" : 1,
-
- "table-layout" : "auto | fixed | inherit",
- "tab-size" : "<integer> | <length>",
- "target" : 1,
- "target-name" : 1,
- "target-new" : 1,
- "target-position" : 1,
- "text-align" : "left | right | center | justify | inherit" ,
- "text-align-last" : 1,
- "text-decoration" : 1,
- "text-emphasis" : 1,
- "text-height" : 1,
- "text-indent" : "<length> | <percentage> | inherit",
- "text-justify" : "auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida",
- "text-outline" : 1,
- "text-overflow" : 1,
- "text-shadow" : 1,
- "text-transform" : "capitalize | uppercase | lowercase | none | inherit",
- "text-wrap" : "normal | none | avoid",
- "top" : "<margin-width> | inherit",
- "transform" : 1,
- "transform-origin" : 1,
- "transform-style" : 1,
- "transition" : 1,
- "transition-delay" : 1,
- "transition-duration" : 1,
- "transition-property" : 1,
- "transition-timing-function" : 1,
-
- //U
- "unicode-bidi" : "normal | embed | bidi-override | inherit",
- "user-modify" : "read-only | read-write | write-only | inherit",
- "user-select" : "none | text | toggle | element | elements | all | inherit",
-
- //V
- "vertical-align" : "<percentage> | <length> | baseline | sub | super | top | text-top | middle | bottom | text-bottom | inherit",
- "visibility" : "visible | hidden | collapse | inherit",
- "voice-balance" : 1,
- "voice-duration" : 1,
- "voice-family" : 1,
- "voice-pitch" : 1,
- "voice-pitch-range" : 1,
- "voice-rate" : 1,
- "voice-stress" : 1,
- "voice-volume" : 1,
- "volume" : 1,
-
- //W
- "white-space" : "normal | pre | nowrap | pre-wrap | pre-line | inherit",
- "white-space-collapse" : 1,
- "widows" : "<integer> | inherit",
- "width" : "<length> | <percentage> | auto | inherit" ,
- "word-break" : "normal | keep-all | break-all",
- "word-spacing" : "<length> | normal | inherit",
- "word-wrap" : 1,
-
- //Z
- "z-index" : "<integer> | auto | inherit",
- "zoom" : "<number> | <percentage> | normal"
-};
-/**
- * Represents a selector combinator (whitespace, +, >).
- * @namespace parserlib.css
- * @class PropertyName
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {String} text The text representation of the unit.
- * @param {String} hack The type of IE hack applied ("*", "_", or null).
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function PropertyName(text, hack, line, col){
-
- SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_NAME_TYPE);
- this.hack = hack;
-
-}
-
-PropertyName.prototype = new SyntaxUnit();
-PropertyName.prototype.constructor = PropertyName;
-PropertyName.prototype.toString = function(){
- return (this.hack ? this.hack : "") + this.text;
-};
-/**
- * Represents a single part of a CSS property value, meaning that it represents
- * just everything single part between ":" and ";". If there are multiple values
- * separated by commas, this type represents just one of the values.
- * @param {String[]} parts An array of value parts making up this value.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- * @namespace parserlib.css
- * @class PropertyValue
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- */
-function PropertyValue(parts, line, col){
-
- SyntaxUnit.call(this, parts.join(" "), line, col, Parser.PROPERTY_VALUE_TYPE);
- this.parts = parts;
-
-}
-
-PropertyValue.prototype = new SyntaxUnit();
-PropertyValue.prototype.constructor = PropertyValue;
-/**
- * A utility class that allows for easy iteration over the various parts of a
- * property value.
- * @param {parserlib.css.PropertyValue} value The property value to iterate over.
- * @namespace parserlib.css
- * @class PropertyValueIterator
- * @constructor
- */
-function PropertyValueIterator(value){
-
- /**
- * Iterator value
- * @type int
- * @property _i
- * @private
- */
- this._i = 0;
- this._parts = value.parts;
- this._marks = [];
- this.value = value;
-
-}
-
-/**
- * Returns the total number of parts in the value.
- * @return {int} The total number of parts in the value.
- * @method count
- */
-PropertyValueIterator.prototype.count = function(){
- return this._parts.length;
-};
-PropertyValueIterator.prototype.isFirst = function(){
- return this._i === 0;
-};
-PropertyValueIterator.prototype.hasNext = function(){
- return (this._i < this._parts.length);
-};
-PropertyValueIterator.prototype.mark = function(){
- this._marks.push(this._i);
-};
-PropertyValueIterator.prototype.peek = function(count){
- return this.hasNext() ? this._parts[this._i + (count || 0)] : null;
-};
-PropertyValueIterator.prototype.next = function(){
- return this.hasNext() ? this._parts[this._i++] : null;
-};
-PropertyValueIterator.prototype.previous = function(){
- return this._i > 0 ? this._parts[--this._i] : null;
-};
-PropertyValueIterator.prototype.restore = function(){
- if (this._marks.length){
- this._i = this._marks.pop();
- }
-};
-/**
- * Represents a single part of a CSS property value, meaning that it represents
- * just one part of the data between ":" and ";".
- * @param {String} text The text representation of the unit.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- * @namespace parserlib.css
- * @class PropertyValuePart
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- */
-function PropertyValuePart(text, line, col){
-
- SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_VALUE_PART_TYPE);
- this.type = "unknown";
-
- //figure out what type of data it is
-
- var temp;
-
- //it is a measurement?
- if (/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){ //dimension
- this.type = "dimension";
- this.value = +RegExp.$1;
- this.units = RegExp.$2;
-
- //try to narrow down
- switch(this.units.toLowerCase()){
-
- case "em":
- case "rem":
- case "ex":
- case "px":
- case "cm":
- case "mm":
- case "in":
- case "pt":
- case "pc":
- case "ch":
- this.type = "length";
- break;
-
- case "deg":
- case "rad":
- case "grad":
- this.type = "angle";
- break;
-
- case "ms":
- case "s":
- this.type = "time";
- break;
-
- case "hz":
- case "khz":
- this.type = "frequency";
- break;
-
- case "dpi":
- case "dpcm":
- this.type = "resolution";
- break;
-
- //default
-
- }
-
- } else if (/^([+\-]?[\d\.]+)%$/i.test(text)){ //percentage
- this.type = "percentage";
- this.value = +RegExp.$1;
- } else if (/^([+\-]?[\d\.]+)%$/i.test(text)){ //percentage
- this.type = "percentage";
- this.value = +RegExp.$1;
- } else if (/^([+\-]?\d+)$/i.test(text)){ //integer
- this.type = "integer";
- this.value = +RegExp.$1;
- } else if (/^([+\-]?[\d\.]+)$/i.test(text)){ //number
- this.type = "number";
- this.value = +RegExp.$1;
-
- } else if (/^#([a-f0-9]{3,6})/i.test(text)){ //hexcolor
- this.type = "color";
- temp = RegExp.$1;
- if (temp.length == 3){
- this.red = parseInt(temp.charAt(0)+temp.charAt(0),16);
- this.green = parseInt(temp.charAt(1)+temp.charAt(1),16);
- this.blue = parseInt(temp.charAt(2)+temp.charAt(2),16);
- } else {
- this.red = parseInt(temp.substring(0,2),16);
- this.green = parseInt(temp.substring(2,4),16);
- this.blue = parseInt(temp.substring(4,6),16);
- }
- } else if (/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)){ //rgb() color with absolute numbers
- this.type = "color";
- this.red = +RegExp.$1;
- this.green = +RegExp.$2;
- this.blue = +RegExp.$3;
- } else if (/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)){ //rgb() color with percentages
- this.type = "color";
- this.red = +RegExp.$1 * 255 / 100;
- this.green = +RegExp.$2 * 255 / 100;
- this.blue = +RegExp.$3 * 255 / 100;
- } else if (/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //rgba() color with absolute numbers
- this.type = "color";
- this.red = +RegExp.$1;
- this.green = +RegExp.$2;
- this.blue = +RegExp.$3;
- this.alpha = +RegExp.$4;
- } else if (/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //rgba() color with percentages
- this.type = "color";
- this.red = +RegExp.$1 * 255 / 100;
- this.green = +RegExp.$2 * 255 / 100;
- this.blue = +RegExp.$3 * 255 / 100;
- this.alpha = +RegExp.$4;
- } else if (/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)){ //hsl()
- this.type = "color";
- this.hue = +RegExp.$1;
- this.saturation = +RegExp.$2 / 100;
- this.lightness = +RegExp.$3 / 100;
- } else if (/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //hsla() color with percentages
- this.type = "color";
- this.hue = +RegExp.$1;
- this.saturation = +RegExp.$2 / 100;
- this.lightness = +RegExp.$3 / 100;
- this.alpha = +RegExp.$4;
- } else if (/^url\(["']?([^\)"']+)["']?\)/i.test(text)){ //URI
- this.type = "uri";
- this.uri = RegExp.$1;
- } else if (/^([^\(]+)\(/i.test(text)){
- this.type = "function";
- this.name = RegExp.$1;
- this.value = text;
- } else if (/^["'][^"']*["']/.test(text)){ //string
- this.type = "string";
- this.value = eval(text);
- } else if (Colors[text.toLowerCase()]){ //named color
- this.type = "color";
- temp = Colors[text.toLowerCase()].substring(1);
- this.red = parseInt(temp.substring(0,2),16);
- this.green = parseInt(temp.substring(2,4),16);
- this.blue = parseInt(temp.substring(4,6),16);
- } else if (/^[\,\/]$/.test(text)){
- this.type = "operator";
- this.value = text;
- } else if (/^[a-z\-\u0080-\uFFFF][a-z0-9\-\u0080-\uFFFF]*$/i.test(text)){
- this.type = "identifier";
- this.value = text;
- }
-
-}
-
-PropertyValuePart.prototype = new SyntaxUnit();
-PropertyValuePart.prototype.constructor = PropertyValuePart;
-PropertyValuePart.fromToken = function(token){
- return new PropertyValuePart(token.value, token.startLine, token.startCol);
-};
-var Pseudos = {
- ":first-letter": 1,
- ":first-line": 1,
- ":before": 1,
- ":after": 1
-};
-
-Pseudos.ELEMENT = 1;
-Pseudos.CLASS = 2;
-
-Pseudos.isElement = function(pseudo){
- return pseudo.indexOf("::") === 0 || Pseudos[pseudo.toLowerCase()] == Pseudos.ELEMENT;
-};
-/**
- * Represents an entire single selector, including all parts but not
- * including multiple selectors (those separated by commas).
- * @namespace parserlib.css
- * @class Selector
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {Array} parts Array of selectors parts making up this selector.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function Selector(parts, line, col){
-
- SyntaxUnit.call(this, parts.join(" "), line, col, Parser.SELECTOR_TYPE);
- this.parts = parts;
- this.specificity = Specificity.calculate(this);
-
-}
-
-Selector.prototype = new SyntaxUnit();
-Selector.prototype.constructor = Selector;
-/**
- * Represents a single part of a selector string, meaning a single set of
- * element name and modifiers. This does not include combinators such as
- * spaces, +, >, etc.
- * @namespace parserlib.css
- * @class SelectorPart
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {String} elementName The element name in the selector or null
- * if there is no element name.
- * @param {Array} modifiers Array of individual modifiers for the element.
- * May be empty if there are none.
- * @param {String} text The text representation of the unit.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function SelectorPart(elementName, modifiers, text, line, col){
-
- SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_PART_TYPE);
- this.elementName = elementName;
- this.modifiers = modifiers;
-
-}
-
-SelectorPart.prototype = new SyntaxUnit();
-SelectorPart.prototype.constructor = SelectorPart;
-/**
- * Represents a selector modifier string, meaning a class name, element name,
- * element ID, pseudo rule, etc.
- * @namespace parserlib.css
- * @class SelectorSubPart
- * @extends parserlib.util.SyntaxUnit
- * @constructor
- * @param {String} text The text representation of the unit.
- * @param {String} type The type of selector modifier.
- * @param {int} line The line of text on which the unit resides.
- * @param {int} col The column of text on which the unit resides.
- */
-function SelectorSubPart(text, type, line, col){
-
- SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_SUB_PART_TYPE);
- this.type = type;
- this.args = [];
-
-}
-
-SelectorSubPart.prototype = new SyntaxUnit();
-SelectorSubPart.prototype.constructor = SelectorSubPart;
-/**
- * Represents a selector's specificity.
- * @namespace parserlib.css
- * @class Specificity
- * @constructor
- * @param {int} a Should be 1 for inline styles, zero for stylesheet styles
- * @param {int} b Number of ID selectors
- * @param {int} c Number of classes and pseudo classes
- * @param {int} d Number of element names and pseudo elements
- */
-function Specificity(a, b, c, d){
- this.a = a;
- this.b = b;
- this.c = c;
- this.d = d;
-}
-
-Specificity.prototype = {
- constructor: Specificity,
-
- /**
- * Compare this specificity to another.
- * @param {Specificity} other The other specificity to compare to.
- * @return {int} -1 if the other specificity is larger, 1 if smaller, 0 if equal.
- * @method compare
- */
- compare: function(other){
- var comps = ["a", "b", "c", "d"],
- i, len;
-
- for (i=0, len=comps.length; i < len; i++){
- if (this[comps[i]] < other[comps[i]]){
- return -1;
- } else if (this[comps[i]] > other[comps[i]]){
- return 1;
- }
- }
-
- return 0;
- },
-
- /**
- * Creates a numeric value for the specificity.
- * @return {int} The numeric value for the specificity.
- * @method valueOf
- */
- valueOf: function(){
- return (this.a * 1000) + (this.b * 100) + (this.c * 10) + this.d;
- },
-
- /**
- * Returns a string representation for specificity.
- * @return {String} The string representation of specificity.
- * @method toString
- */
- toString: function(){
- return this.a + "," + this.b + "," + this.c + "," + this.d;
- }
-
-};
-Specificity.calculate = function(selector){
-
- var i, len,
- part,
- b=0, c=0, d=0;
-
- function updateValues(part){
-
- var i, j, len, num,
- elementName = part.elementName ? part.elementName.text : "",
- modifier;
-
- if (elementName && elementName.charAt(elementName.length-1) != "*") {
- d++;
- }
-
- for (i=0, len=part.modifiers.length; i < len; i++){
- modifier = part.modifiers[i];
- switch(modifier.type){
- case "class":
- case "attribute":
- c++;
- break;
-
- case "id":
- b++;
- break;
-
- case "pseudo":
- if (Pseudos.isElement(modifier.text)){
- d++;
- } else {
- c++;
- }
- break;
-
- case "not":
- for (j=0, num=modifier.args.length; j < num; j++){
- updateValues(modifier.args[j]);
- }
- }
- }
- }
-
- for (i=0, len=selector.parts.length; i < len; i++){
- part = selector.parts[i];
-
- if (part instanceof SelectorPart){
- updateValues(part);
- }
- }
-
- return new Specificity(0, b, c, d);
-};
-
-var h = /^[0-9a-fA-F]$/,
- nonascii = /^[\u0080-\uFFFF]$/,
- nl = /\n|\r\n|\r|\f/;
-
-//-----------------------------------------------------------------------------
-// Helper functions
-//-----------------------------------------------------------------------------
-
-
-function isHexDigit(c){
- return c !== null && h.test(c);
-}
-
-function isDigit(c){
- return c !== null && /\d/.test(c);
-}
-
-function isWhitespace(c){
- return c !== null && /\s/.test(c);
-}
-
-function isNewLine(c){
- return c !== null && nl.test(c);
-}
-
-function isNameStart(c){
- return c !== null && (/[a-z_\u0080-\uFFFF\\]/i.test(c));
-}
-
-function isNameChar(c){
- return c !== null && (isNameStart(c) || /[0-9\-\\]/.test(c));
-}
-
-function isIdentStart(c){
- return c !== null && (isNameStart(c) || /\-\\/.test(c));
-}
-
-function mix(receiver, supplier){
- for (var prop in supplier){
- if (supplier.hasOwnProperty(prop)){
- receiver[prop] = supplier[prop];
- }
- }
- return receiver;
-}
-
-//-----------------------------------------------------------------------------
-// CSS Token Stream
-//-----------------------------------------------------------------------------
-
-
-/**
- * A token stream that produces CSS tokens.
- * @param {String|Reader} input The source of text to tokenize.
- * @constructor
- * @class TokenStream
- * @namespace parserlib.css
- */
-function TokenStream(input){
- TokenStreamBase.call(this, input, Tokens);
-}
-
-TokenStream.prototype = mix(new TokenStreamBase(), {
-
- /**
- * Overrides the TokenStreamBase method of the same name
- * to produce CSS tokens.
- * @param {variant} channel The name of the channel to use
- * for the next token.
- * @return {Object} A token object representing the next token.
- * @method _getToken
- * @private
- */
- _getToken: function(channel){
-
- var c,
- reader = this._reader,
- token = null,
- startLine = reader.getLine(),
- startCol = reader.getCol();
-
- c = reader.read();
-
-
- while(c){
- switch(c){
-
- /*
- * Potential tokens:
- * - COMMENT
- * - SLASH
- * - CHAR
- */
- case "/":
-
- if(reader.peek() == "*"){
- token = this.commentToken(c, startLine, startCol);
- } else {
- token = this.charToken(c, startLine, startCol);
- }
- break;
- case "|":
- case "~":
- case "^":
- case "$":
- case "*":
- if(reader.peek() == "="){
- token = this.comparisonToken(c, startLine, startCol);
- } else {
- token = this.charToken(c, startLine, startCol);
- }
- break;
- case "\"":
- case "'":
- token = this.stringToken(c, startLine, startCol);
- break;
- case "#":
- if (isNameChar(reader.peek())){
- token = this.hashToken(c, startLine, startCol);
- } else {
- token = this.charToken(c, startLine, startCol);
- }
- break;
- case ".":
- if (isDigit(reader.peek())){
- token = this.numberToken(c, startLine, startCol);
- } else {
- token = this.charToken(c, startLine, startCol);
- }
- break;
- case "-":
- if (reader.peek() == "-"){ //could be closing HTML-style comment
- token = this.htmlCommentEndToken(c, startLine, startCol);
- } else if (isNameStart(reader.peek())){
- token = this.identOrFunctionToken(c, startLine, startCol);
- } else {
- token = this.charToken(c, startLine, startCol);
- }
- break;
- case "!":
- token = this.importantToken(c, startLine, startCol);
- break;
- case "@":
- token = this.atRuleToken(c, startLine, startCol);
- break;
- case ":":
- token = this.notToken(c, startLine, startCol);
- break;
- case "<":
- token = this.htmlCommentStartToken(c, startLine, startCol);
- break;
- case "U":
- case "u":
- if (reader.peek() == "+"){
- token = this.unicodeRangeToken(c, startLine, startCol);
- break;
- }
- /* falls through */
- default:
-
- /*
- * Potential tokens:
- * - NUMBER
- * - DIMENSION
- * - LENGTH
- * - FREQ
- * - TIME
- * - EMS
- * - EXS
- * - ANGLE
- */
- if (isDigit(c)){
- token = this.numberToken(c, startLine, startCol);
- } else
-
- /*
- * Potential tokens:
- * - S
- */
- if (isWhitespace(c)){
- token = this.whitespaceToken(c, startLine, startCol);
- } else
-
- /*
- * Potential tokens:
- * - IDENT
- */
- if (isIdentStart(c)){
- token = this.identOrFunctionToken(c, startLine, startCol);
- } else
-
- /*
- * Potential tokens:
- * - CHAR
- * - PLUS
- */
- {
- token = this.charToken(c, startLine, startCol);
- }
-
-
-
-
-
-
- }
-
- //make sure this token is wanted
- //TODO: check channel
- break;
- }
-
- if (!token && c === null){
- token = this.createToken(Tokens.EOF,null,startLine,startCol);
- }
-
- return token;
- },
-
- //-------------------------------------------------------------------------
- // Methods to create tokens
- //-------------------------------------------------------------------------
-
- /**
- * Produces a token based on available data and the current
- * reader position information. This method is called by other
- * private methods to create tokens and is never called directly.
- * @param {int} tt The token type.
- * @param {String} value The text value of the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @param {Object} options (Optional) Specifies a channel property
- * to indicate that a different channel should be scanned
- * and/or a hide property indicating that the token should
- * be hidden.
- * @return {Object} A token object.
- * @method createToken
- */
- createToken: function(tt, value, startLine, startCol, options){
- var reader = this._reader;
- options = options || {};
-
- return {
- value: value,
- type: tt,
- channel: options.channel,
- hide: options.hide || false,
- startLine: startLine,
- startCol: startCol,
- endLine: reader.getLine(),
- endCol: reader.getCol()
- };
- },
-
- //-------------------------------------------------------------------------
- // Methods to create specific tokens
- //-------------------------------------------------------------------------
-
- /**
- * Produces a token for any at-rule. If the at-rule is unknown, then
- * the token is for a single "@" character.
- * @param {String} first The first character for the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method atRuleToken
- */
- atRuleToken: function(first, startLine, startCol){
- var rule = first,
- reader = this._reader,
- tt = Tokens.CHAR,
- valid = false,
- ident,
- c;
- reader.mark();
-
- //try to find the at-keyword
- ident = this.readName();
- rule = first + ident;
- tt = Tokens.type(rule.toLowerCase());
-
- //if it's not valid, use the first character only and reset the reader
- if (tt == Tokens.CHAR || tt == Tokens.UNKNOWN){
- if (rule.length > 1){
- tt = Tokens.UNKNOWN_SYM;
- } else {
- tt = Tokens.CHAR;
- rule = first;
- reader.reset();
- }
- }
-
- return this.createToken(tt, rule, startLine, startCol);
- },
-
- /**
- * Produces a character token based on the given character
- * and location in the stream. If there's a special (non-standard)
- * token name, this is used; otherwise CHAR is used.
- * @param {String} c The character for the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method charToken
- */
- charToken: function(c, startLine, startCol){
- var tt = Tokens.type(c);
-
- if (tt == -1){
- tt = Tokens.CHAR;
- }
-
- return this.createToken(tt, c, startLine, startCol);
- },
-
- /**
- * Produces a character token based on the given character
- * and location in the stream. If there's a special (non-standard)
- * token name, this is used; otherwise CHAR is used.
- * @param {String} first The first character for the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method commentToken
- */
- commentToken: function(first, startLine, startCol){
- var reader = this._reader,
- comment = this.readComment(first);
-
- return this.createToken(Tokens.COMMENT, comment, startLine, startCol);
- },
-
- /**
- * Produces a comparison token based on the given character
- * and location in the stream. The next character must be
- * read and is already known to be an equals sign.
- * @param {String} c The character for the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method comparisonToken
- */
- comparisonToken: function(c, startLine, startCol){
- var reader = this._reader,
- comparison = c + reader.read(),
- tt = Tokens.type(comparison) || Tokens.CHAR;
-
- return this.createToken(tt, comparison, startLine, startCol);
- },
-
- /**
- * Produces a hash token based on the specified information. The
- * first character provided is the pound sign (#) and then this
- * method reads a name afterward.
- * @param {String} first The first character (#) in the hash name.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method hashToken
- */
- hashToken: function(first, startLine, startCol){
- var reader = this._reader,
- name = this.readName(first);
-
- return this.createToken(Tokens.HASH, name, startLine, startCol);
- },
-
- /**
- * Produces a CDO or CHAR token based on the specified information. The
- * first character is provided and the rest is read by the function to determine
- * the correct token to create.
- * @param {String} first The first character in the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method htmlCommentStartToken
- */
- htmlCommentStartToken: function(first, startLine, startCol){
- var reader = this._reader,
- text = first;
-
- reader.mark();
- text += reader.readCount(3);
-
- if (text == "<!--"){
- return this.createToken(Tokens.CDO, text, startLine, startCol);
- } else {
- reader.reset();
- return this.charToken(first, startLine, startCol);
- }
- },
-
- /**
- * Produces a CDC or CHAR token based on the specified information. The
- * first character is provided and the rest is read by the function to determine
- * the correct token to create.
- * @param {String} first The first character in the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method htmlCommentEndToken
- */
- htmlCommentEndToken: function(first, startLine, startCol){
- var reader = this._reader,
- text = first;
-
- reader.mark();
- text += reader.readCount(2);
-
- if (text == "-->"){
- return this.createToken(Tokens.CDC, text, startLine, startCol);
- } else {
- reader.reset();
- return this.charToken(first, startLine, startCol);
- }
- },
-
- /**
- * Produces an IDENT or FUNCTION token based on the specified information. The
- * first character is provided and the rest is read by the function to determine
- * the correct token to create.
- * @param {String} first The first character in the identifier.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method identOrFunctionToken
- */
- identOrFunctionToken: function(first, startLine, startCol){
- var reader = this._reader,
- ident = this.readName(first),
- tt = Tokens.IDENT;
-
- //if there's a left paren immediately after, it's a URI or function
- if (reader.peek() == "("){
- ident += reader.read();
- if (ident.toLowerCase() == "url("){
- tt = Tokens.URI;
- ident = this.readURI(ident);
-
- //didn't find a valid URL or there's no closing paren
- if (ident.toLowerCase() == "url("){
- tt = Tokens.FUNCTION;
- }
- } else {
- tt = Tokens.FUNCTION;
- }
- } else if (reader.peek() == ":"){ //might be an IE function
-
- //IE-specific functions always being with progid:
- if (ident.toLowerCase() == "progid"){
- ident += reader.readTo("(");
- tt = Tokens.IE_FUNCTION;
- }
- }
-
- return this.createToken(tt, ident, startLine, startCol);
- },
-
- /**
- * Produces an IMPORTANT_SYM or CHAR token based on the specified information. The
- * first character is provided and the rest is read by the function to determine
- * the correct token to create.
- * @param {String} first The first character in the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method importantToken
- */
- importantToken: function(first, startLine, startCol){
- var reader = this._reader,
- important = first,
- tt = Tokens.CHAR,
- temp,
- c;
-
- reader.mark();
- c = reader.read();
-
- while(c){
-
- //there can be a comment in here
- if (c == "/"){
-
- //if the next character isn't a star, then this isn't a valid !important token
- if (reader.peek() != "*"){
- break;
- } else {
- temp = this.readComment(c);
- if (temp === ""){ //broken!
- break;
- }
- }
- } else if (isWhitespace(c)){
- important += c + this.readWhitespace();
- } else if (/i/i.test(c)){
- temp = reader.readCount(8);
- if (/mportant/i.test(temp)){
- important += c + temp;
- tt = Tokens.IMPORTANT_SYM;
-
- }
- break; //we're done
- } else {
- break;
- }
-
- c = reader.read();
- }
-
- if (tt == Tokens.CHAR){
- reader.reset();
- return this.charToken(first, startLine, startCol);
- } else {
- return this.createToken(tt, important, startLine, startCol);
- }
-
-
- },
-
- /**
- * Produces a NOT or CHAR token based on the specified information. The
- * first character is provided and the rest is read by the function to determine
- * the correct token to create.
- * @param {String} first The first character in the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method notToken
- */
- notToken: function(first, startLine, startCol){
- var reader = this._reader,
- text = first;
-
- reader.mark();
- text += reader.readCount(4);
-
- if (text.toLowerCase() == ":not("){
- return this.createToken(Tokens.NOT, text, startLine, startCol);
- } else {
- reader.reset();
- return this.charToken(first, startLine, startCol);
- }
- },
-
- /**
- * Produces a number token based on the given character
- * and location in the stream. This may return a token of
- * NUMBER, EMS, EXS, LENGTH, ANGLE, TIME, FREQ, DIMENSION,
- * or PERCENTAGE.
- * @param {String} first The first character for the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method numberToken
- */
- numberToken: function(first, startLine, startCol){
- var reader = this._reader,
- value = this.readNumber(first),
- ident,
- tt = Tokens.NUMBER,
- c = reader.peek();
-
- if (isIdentStart(c)){
- ident = this.readName(reader.read());
- value += ident;
-
- if (/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vm$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(ident)){
- tt = Tokens.LENGTH;
- } else if (/^deg|^rad$|^grad$/i.test(ident)){
- tt = Tokens.ANGLE;
- } else if (/^ms$|^s$/i.test(ident)){
- tt = Tokens.TIME;
- } else if (/^hz$|^khz$/i.test(ident)){
- tt = Tokens.FREQ;
- } else if (/^dpi$|^dpcm$/i.test(ident)){
- tt = Tokens.RESOLUTION;
- } else {
- tt = Tokens.DIMENSION;
- }
-
- } else if (c == "%"){
- value += reader.read();
- tt = Tokens.PERCENTAGE;
- }
-
- return this.createToken(tt, value, startLine, startCol);
- },
-
- /**
- * Produces a string token based on the given character
- * and location in the stream. Since strings may be indicated
- * by single or double quotes, a failure to match starting
- * and ending quotes results in an INVALID token being generated.
- * The first character in the string is passed in and then
- * the rest are read up to and including the final quotation mark.
- * @param {String} first The first character in the string.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method stringToken
- */
- stringToken: function(first, startLine, startCol){
- var delim = first,
- string = first,
- reader = this._reader,
- prev = first,
- tt = Tokens.STRING,
- c = reader.read();
-
- while(c){
- string += c;
-
- //if the delimiter is found with an escapement, we're done.
- if (c == delim && prev != "\\"){
- break;
- }
-
- //if there's a newline without an escapement, it's an invalid string
- if (isNewLine(reader.peek()) && c != "\\"){
- tt = Tokens.INVALID;
- break;
- }
-
- //save previous and get next
- prev = c;
- c = reader.read();
- }
-
- //if c is null, that means we're out of input and the string was never closed
- if (c === null){
- tt = Tokens.INVALID;
- }
-
- return this.createToken(tt, string, startLine, startCol);
- },
-
- unicodeRangeToken: function(first, startLine, startCol){
- var reader = this._reader,
- value = first,
- temp,
- tt = Tokens.CHAR;
-
- //then it should be a unicode range
- if (reader.peek() == "+"){
- reader.mark();
- value += reader.read();
- value += this.readUnicodeRangePart(true);
-
- //ensure there's an actual unicode range here
- if (value.length == 2){
- reader.reset();
- } else {
-
- tt = Tokens.UNICODE_RANGE;
-
- //if there's a ? in the first part, there can't be a second part
- if (value.indexOf("?") == -1){
-
- if (reader.peek() == "-"){
- reader.mark();
- temp = reader.read();
- temp += this.readUnicodeRangePart(false);
-
- //if there's not another value, back up and just take the first
- if (temp.length == 1){
- reader.reset();
- } else {
- value += temp;
- }
- }
-
- }
- }
- }
-
- return this.createToken(tt, value, startLine, startCol);
- },
-
- /**
- * Produces a S token based on the specified information. Since whitespace
- * may have multiple characters, this consumes all whitespace characters
- * into a single token.
- * @param {String} first The first character in the token.
- * @param {int} startLine The beginning line for the character.
- * @param {int} startCol The beginning column for the character.
- * @return {Object} A token object.
- * @method whitespaceToken
- */
- whitespaceToken: function(first, startLine, startCol){
- var reader = this._reader,
- value = first + this.readWhitespace();
- return this.createToken(Tokens.S, value, startLine, startCol);
- },
-
-
-
-
- //-------------------------------------------------------------------------
- // Methods to read values from the string stream
- //-------------------------------------------------------------------------
-
- readUnicodeRangePart: function(allowQuestionMark){
- var reader = this._reader,
- part = "",
- c = reader.peek();
-
- //first read hex digits
- while(isHexDigit(c) && part.length < 6){
- reader.read();
- part += c;
- c = reader.peek();
- }
-
- //then read question marks if allowed
- if (allowQuestionMark){
- while(c == "?" && part.length < 6){
- reader.read();
- part += c;
- c = reader.peek();
- }
- }
-
- //there can't be any other characters after this point
-
- return part;
- },
-
- readWhitespace: function(){
- var reader = this._reader,
- whitespace = "",
- c = reader.peek();
-
- while(isWhitespace(c)){
- reader.read();
- whitespace += c;
- c = reader.peek();
- }
-
- return whitespace;
- },
- readNumber: function(first){
- var reader = this._reader,
- number = first,
- hasDot = (first == "."),
- c = reader.peek();
-
-
- while(c){
- if (isDigit(c)){
- number += reader.read();
- } else if (c == "."){
- if (hasDot){
- break;
- } else {
- hasDot = true;
- number += reader.read();
- }
- } else {
- break;
- }
-
- c = reader.peek();
- }
-
- return number;
- },
- readString: function(){
- var reader = this._reader,
- delim = reader.read(),
- string = delim,
- prev = delim,
- c = reader.peek();
-
- while(c){
- c = reader.read();
- string += c;
-
- //if the delimiter is found with an escapement, we're done.
- if (c == delim && prev != "\\"){
- break;
- }
-
- //if there's a newline without an escapement, it's an invalid string
- if (isNewLine(reader.peek()) && c != "\\"){
- string = "";
- break;
- }
-
- //save previous and get next
- prev = c;
- c = reader.peek();
- }
-
- //if c is null, that means we're out of input and the string was never closed
- if (c === null){
- string = "";
- }
-
- return string;
- },
- readURI: function(first){
- var reader = this._reader,
- uri = first,
- inner = "",
- c = reader.peek();
-
- reader.mark();
-
- //skip whitespace before
- while(c && isWhitespace(c)){
- reader.read();
- c = reader.peek();
- }
-
- //it's a string
- if (c == "'" || c == "\""){
- inner = this.readString();
- } else {
- inner = this.readURL();
- }
-
- c = reader.peek();
-
- //skip whitespace after
- while(c && isWhitespace(c)){
- reader.read();
- c = reader.peek();
- }
-
- //if there was no inner value or the next character isn't closing paren, it's not a URI
- if (inner === "" || c != ")"){
- uri = first;
- reader.reset();
- } else {
- uri += inner + reader.read();
- }
-
- return uri;
- },
- readURL: function(){
- var reader = this._reader,
- url = "",
- c = reader.peek();
-
- //TODO: Check for escape and nonascii
- while (/^[!#$%&\\*-~]$/.test(c)){
- url += reader.read();
- c = reader.peek();
- }
-
- return url;
-
- },
- readName: function(first){
- var reader = this._reader,
- ident = first || "",
- c = reader.peek();
-
- while(true){
- if (c == "\\"){
- ident += this.readEscape(reader.read());
- c = reader.peek();
- } else if(c && isNameChar(c)){
- ident += reader.read();
- c = reader.peek();
- } else {
- break;
- }
- }
-
- return ident;
- },
-
- readEscape: function(first){
- var reader = this._reader,
- cssEscape = first || "",
- i = 0,
- c = reader.peek();
-
- if (isHexDigit(c)){
- do {
- cssEscape += reader.read();
- c = reader.peek();
- } while(c && isHexDigit(c) && ++i < 6);
- }
-
- if (cssEscape.length == 3 && /\s/.test(c) ||
- cssEscape.length == 7 || cssEscape.length == 1){
- reader.read();
- } else {
- c = "";
- }
-
- return cssEscape + c;
- },
-
- readComment: function(first){
- var reader = this._reader,
- comment = first || "",
- c = reader.read();
-
- if (c == "*"){
- while(c){
- comment += c;
-
- //look for end of comment
- if (comment.length > 2 && c == "*" && reader.peek() == "/"){
- comment += reader.read();
- break;
- }
-
- c = reader.read();
- }
-
- return comment;
- } else {
- return "";
- }
-
- }
-});
-
-
-var Tokens = [
-
- /*
- * The following token names are defined in CSS3 Grammar: http://www.w3.org/TR/css3-syntax/#lexical
- */
-
- //HTML-style comments
- { name: "CDO"},
- { name: "CDC"},
-
- //ignorables
- { name: "S", whitespace: true/*, channel: "ws"*/},
- { name: "COMMENT", comment: true, hide: true, channel: "comment" },
-
- //attribute equality
- { name: "INCLUDES", text: "~="},
- { name: "DASHMATCH", text: "|="},
- { name: "PREFIXMATCH", text: "^="},
- { name: "SUFFIXMATCH", text: "$="},
- { name: "SUBSTRINGMATCH", text: "*="},
-
- //identifier types
- { name: "STRING"},
- { name: "IDENT"},
- { name: "HASH"},
-
- //at-keywords
- { name: "IMPORT_SYM", text: "@import"},
- { name: "PAGE_SYM", text: "@page"},
- { name: "MEDIA_SYM", text: "@media"},
- { name: "FONT_FACE_SYM", text: "@font-face"},
- { name: "CHARSET_SYM", text: "@charset"},
- { name: "NAMESPACE_SYM", text: "@namespace"},
- { name: "UNKNOWN_SYM" },
- //{ name: "ATKEYWORD"},
-
- //CSS3 animations
- { name: "KEYFRAMES_SYM", text: [ "@keyframes", "@-webkit-keyframes", "@-moz-keyframes", "@-ms-keyframes" ] },
-
- //important symbol
- { name: "IMPORTANT_SYM"},
-
- //measurements
- { name: "LENGTH"},
- { name: "ANGLE"},
- { name: "TIME"},
- { name: "FREQ"},
- { name: "DIMENSION"},
- { name: "PERCENTAGE"},
- { name: "NUMBER"},
-
- //functions
- { name: "URI"},
- { name: "FUNCTION"},
-
- //Unicode ranges
- { name: "UNICODE_RANGE"},
-
- /*
- * The following token names are defined in CSS3 Selectors: http://www.w3.org/TR/css3-selectors/#selector-syntax
- */
-
- //invalid string
- { name: "INVALID"},
-
- //combinators
- { name: "PLUS", text: "+" },
- { name: "GREATER", text: ">"},
- { name: "COMMA", text: ","},
- { name: "TILDE", text: "~"},
-
- //modifier
- { name: "NOT"},
-
- /*
- * Defined in CSS3 Paged Media
- */
- { name: "TOPLEFTCORNER_SYM", text: "@top-left-corner"},
- { name: "TOPLEFT_SYM", text: "@top-left"},
- { name: "TOPCENTER_SYM", text: "@top-center"},
- { name: "TOPRIGHT_SYM", text: "@top-right"},
- { name: "TOPRIGHTCORNER_SYM", text: "@top-right-corner"},
- { name: "BOTTOMLEFTCORNER_SYM", text: "@bottom-left-corner"},
- { name: "BOTTOMLEFT_SYM", text: "@bottom-left"},
- { name: "BOTTOMCENTER_SYM", text: "@bottom-center"},
- { name: "BOTTOMRIGHT_SYM", text: "@bottom-right"},
- { name: "BOTTOMRIGHTCORNER_SYM", text: "@bottom-right-corner"},
- { name: "LEFTTOP_SYM", text: "@left-top"},
- { name: "LEFTMIDDLE_SYM", text: "@left-middle"},
- { name: "LEFTBOTTOM_SYM", text: "@left-bottom"},
- { name: "RIGHTTOP_SYM", text: "@right-top"},
- { name: "RIGHTMIDDLE_SYM", text: "@right-middle"},
- { name: "RIGHTBOTTOM_SYM", text: "@right-bottom"},
-
- /*
- * The following token names are defined in CSS3 Media Queries: http://www.w3.org/TR/css3-mediaqueries/#syntax
- */
- /*{ name: "MEDIA_ONLY", state: "media"},
- { name: "MEDIA_NOT", state: "media"},
- { name: "MEDIA_AND", state: "media"},*/
- { name: "RESOLUTION", state: "media"},
-
- /*
- * The following token names are not defined in any CSS specification but are used by the lexer.
- */
-
- //not a real token, but useful for stupid IE filters
- { name: "IE_FUNCTION" },
-
- //part of CSS3 grammar but not the Flex code
- { name: "CHAR" },
-
- //TODO: Needed?
- //Not defined as tokens, but might as well be
- {
- name: "PIPE",
- text: "|"
- },
- {
- name: "SLASH",
- text: "/"
- },
- {
- name: "MINUS",
- text: "-"
- },
- {
- name: "STAR",
- text: "*"
- },
-
- {
- name: "LBRACE",
- text: "{"
- },
- {
- name: "RBRACE",
- text: "}"
- },
- {
- name: "LBRACKET",
- text: "["
- },
- {
- name: "RBRACKET",
- text: "]"
- },
- {
- name: "EQUALS",
- text: "="
- },
- {
- name: "COLON",
- text: ":"
- },
- {
- name: "SEMICOLON",
- text: ";"
- },
-
- {
- name: "LPAREN",
- text: "("
- },
- {
- name: "RPAREN",
- text: ")"
- },
- {
- name: "DOT",
- text: "."
- }
-];
-
-(function(){
-
- var nameMap = [],
- typeMap = {};
-
- Tokens.UNKNOWN = -1;
- Tokens.unshift({name:"EOF"});
- for (var i=0, len = Tokens.length; i < len; i++){
- nameMap.push(Tokens[i].name);
- Tokens[Tokens[i].name] = i;
- if (Tokens[i].text){
- if (Tokens[i].text instanceof Array){
- for (var j=0; j < Tokens[i].text.length; j++){
- typeMap[Tokens[i].text[j]] = i;
- }
- } else {
- typeMap[Tokens[i].text] = i;
- }
- }
- }
-
- Tokens.name = function(tt){
- return nameMap[tt];
- };
-
- Tokens.type = function(c){
- return typeMap[c] || -1;
- };
-
-})();
-
-
-
-
-//This file will likely change a lot! Very experimental!
-/*global Properties, ValidationTypes, ValidationError, PropertyValueIterator */
-var Validation = {
-
- validate: function(property, value){
-
- //normalize name
- var name = property.toString().toLowerCase(),
- parts = value.parts,
- expression = new PropertyValueIterator(value),
- spec = Properties[name],
- part,
- valid,
- j, count,
- msg,
- types,
- last,
- literals,
- max, multi, group;
-
- if (!spec) {
- if (name.indexOf("-") !== 0){ //vendor prefixed are ok
- throw new ValidationError("Unknown property '" + property + "'.", property.line, property.col);
- }
- } else if (typeof spec != "number"){
-
- //initialization
- if (typeof spec == "string"){
- if (spec.indexOf("||") > -1) {
- this.groupProperty(spec, expression);
- } else {
- this.singleProperty(spec, expression, 1);
- }
-
- } else if (spec.multi) {
- this.multiProperty(spec.multi, expression, spec.comma, spec.max || Infinity);
- } else if (typeof spec == "function") {
- spec(expression);
- }
-
- }
-
- },
-
- singleProperty: function(types, expression, max, partial) {
-
- var result = false,
- value = expression.value,
- count = 0,
- part;
-
- while (expression.hasNext() && count < max) {
- result = ValidationTypes.isAny(expression, types);
- if (!result) {
- break;
- }
- count++;
- }
-
- if (!result) {
- if (expression.hasNext() && !expression.isFirst()) {
- part = expression.peek();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col);
- }
- } else if (expression.hasNext()) {
- part = expression.next();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- }
-
- },
-
- multiProperty: function (types, expression, comma, max) {
-
- var result = false,
- value = expression.value,
- count = 0,
- sep = false,
- part;
-
- while(expression.hasNext() && !result && count < max) {
- if (ValidationTypes.isAny(expression, types)) {
- count++;
- if (!expression.hasNext()) {
- result = true;
-
- } else if (comma) {
- if (expression.peek() == ",") {
- part = expression.next();
- } else {
- break;
- }
- }
- } else {
- break;
-
- }
- }
-
- if (!result) {
- if (expression.hasNext() && !expression.isFirst()) {
- part = expression.peek();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- part = expression.previous();
- if (comma && part == ",") {
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col);
- }
- }
-
- } else if (expression.hasNext()) {
- part = expression.next();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- }
-
- },
-
- groupProperty: function (types, expression, comma) {
-
- var result = false,
- value = expression.value,
- typeCount = types.split("||").length,
- groups = { count: 0 },
- partial = false,
- name,
- part;
-
- while(expression.hasNext() && !result) {
- name = ValidationTypes.isAnyOfGroup(expression, types);
- if (name) {
-
- //no dupes
- if (groups[name]) {
- break;
- } else {
- groups[name] = 1;
- groups.count++;
- partial = true;
-
- if (groups.count == typeCount || !expression.hasNext()) {
- result = true;
- }
- }
- } else {
- break;
- }
- }
-
- if (!result) {
- if (partial && expression.hasNext()) {
- part = expression.peek();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- } else {
- throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col);
- }
- } else if (expression.hasNext()) {
- part = expression.next();
- throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col);
- }
- }
-
-
-
-};
-function ValidationError(message, line, col){
-
- /**
- * The column at which the error occurred.
- * @type int
- * @property col
- */
- this.col = col;
- this.line = line;
- this.message = message;
-
-}
-
-//inherit from Error
-ValidationError.prototype = new Error();
-//This file will likely change a lot! Very experimental!
-/*global Properties, Validation, ValidationError, PropertyValueIterator, console*/
-var ValidationTypes = {
-
- isLiteral: function (part, literals) {
- var text = part.text.toString().toLowerCase(),
- args = literals.split(" | "),
- i, len, found = false;
-
- for (i=0,len=args.length; i < len && !found; i++){
- if (text == args[i]){
- found = true;
- }
- }
-
- return found;
- },
-
- isSimple: function(type) {
- return !!this.simple[type];
- },
-
- isComplex: function(type) {
- return !!this.complex[type];
- },
-
- /**
- * Determines if the next part(s) of the given expression
- * are any of the given types.
- */
- isAny: function (expression, types) {
- var args = types.split(" | "),
- i, len, found = false;
-
- for (i=0,len=args.length; i < len && !found && expression.hasNext(); i++){
- found = this.isType(expression, args[i]);
- }
-
- return found;
- },
-
- /**
- * Determines if the next part(s) of the given expresion
- * are one of a group.
- */
- isAnyOfGroup: function(expression, types) {
- var args = types.split(" || "),
- i, len, found = false;
-
- for (i=0,len=args.length; i < len && !found; i++){
- found = this.isType(expression, args[i]);
- }
-
- return found ? args[i-1] : false;
- },
-
- /**
- * Determines if the next part(s) of the given expression
- * are of a given type.
- */
- isType: function (expression, type) {
- var part = expression.peek(),
- result = false;
-
- if (type.charAt(0) != "<") {
- result = this.isLiteral(part, type);
- if (result) {
- expression.next();
- }
- } else if (this.simple[type]) {
- result = this.simple[type](part);
- if (result) {
- expression.next();
- }
- } else {
- result = this.complex[type](expression);
- }
-
- return result;
- },
-
-
-
- simple: {
-
- "<absolute-size>": function(part){
- return ValidationTypes.isLiteral(part, "xx-small | x-small | small | medium | large | x-large | xx-large");
- },
-
- "<attachment>": function(part){
- return ValidationTypes.isLiteral(part, "scroll | fixed | local");
- },
-
- "<attr>": function(part){
- return part.type == "function" && part.name == "attr";
- },
-
- "<bg-image>": function(part){
- return this["<image>"](part) || this["<gradient>"](part) || part == "none";
- },
-
- "<gradient>": function(part) {
- return part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial|linear)\-gradient/i.test(part);
- },
-
- "<box>": function(part){
- return ValidationTypes.isLiteral(part, "padding-box | border-box | content-box");
- },
-
- "<content>": function(part){
- return part.type == "function" && part.name == "content";
- },
-
- "<relative-size>": function(part){
- return ValidationTypes.isLiteral(part, "smaller | larger");
- },
-
- //any identifier
- "<ident>": function(part){
- return part.type == "identifier";
- },
-
- "<length>": function(part){
- return part.type == "length" || part.type == "number" || part.type == "integer" || part == "0";
- },
-
- "<color>": function(part){
- return part.type == "color" || part == "transparent";
- },
-
- "<number>": function(part){
- return part.type == "number" || this["<integer>"](part);
- },
-
- "<integer>": function(part){
- return part.type == "integer";
- },
-
- "<line>": function(part){
- return part.type == "integer";
- },
-
- "<angle>": function(part){
- return part.type == "angle";
- },
-
- "<uri>": function(part){
- return part.type == "uri";
- },
-
- "<image>": function(part){
- return this["<uri>"](part);
- },
-
- "<percentage>": function(part){
- return part.type == "percentage" || part == "0";
- },
-
- "<border-width>": function(part){
- return this["<length>"](part) || ValidationTypes.isLiteral(part, "thin | medium | thick");
- },
-
- "<border-style>": function(part){
- return ValidationTypes.isLiteral(part, "none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset");
- },
-
- "<margin-width>": function(part){
- return this["<length>"](part) || this["<percentage>"](part) || ValidationTypes.isLiteral(part, "auto");
- },
-
- "<padding-width>": function(part){
- return this["<length>"](part) || this["<percentage>"](part);
- },
-
- "<shape>": function(part){
- return part.type == "function" && (part.name == "rect" || part.name == "inset-rect");
- },
-
- "<time>": function(part) {
- return part.type == "time";
- }
- },
-
- complex: {
-
- "<bg-position>": function(expression){
- var types = this,
- result = false,
- numeric = "<percentage> | <length>",
- xDir = "left | center | right",
- yDir = "top | center | bottom",
- part,
- i, len;
-
-
- if (ValidationTypes.isAny(expression, "top | bottom")) {
- result = true;
- } else {
-
- //must be two-part
- if (ValidationTypes.isAny(expression, numeric)){
- if (expression.hasNext()){
- result = ValidationTypes.isAny(expression, numeric + " | " + yDir);
- }
- } else if (ValidationTypes.isAny(expression, xDir)){
- if (expression.hasNext()){
-
- //two- or three-part
- if (ValidationTypes.isAny(expression, yDir)){
- result = true;
-
- ValidationTypes.isAny(expression, numeric);
-
- } else if (ValidationTypes.isAny(expression, numeric)){
-
- //could also be two-part, so check the next part
- if (ValidationTypes.isAny(expression, yDir)){
- ValidationTypes.isAny(expression, numeric);
- }
-
- result = true;
- }
- }
- }
- }
-
-
- return result;
- },
-
- "<bg-size>": function(expression){
- //<bg-size> = [ <length> | <percentage> | auto ]{1,2} | cover | contain
- var types = this,
- result = false,
- numeric = "<percentage> | <length> | auto",
- part,
- i, len;
-
- if (ValidationTypes.isAny(expression, "cover | contain")) {
- result = true;
- } else if (ValidationTypes.isAny(expression, numeric)) {
- result = true;
- ValidationTypes.isAny(expression, numeric);
- }
-
- return result;
- },
-
- "<repeat-style>": function(expression){
- //repeat-x | repeat-y | [repeat | space | round | no-repeat]{1,2}
- var result = false,
- values = "repeat | space | round | no-repeat",
- part;
-
- if (expression.hasNext()){
- part = expression.next();
-
- if (ValidationTypes.isLiteral(part, "repeat-x | repeat-y")) {
- result = true;
- } else if (ValidationTypes.isLiteral(part, values)) {
- result = true;
-
- if (expression.hasNext() && ValidationTypes.isLiteral(expression.peek(), values)) {
- expression.next();
- }
- }
- }
-
- return result;
-
- },
-
- "<shadow>": function(expression) {
- //inset? && [ <length>{2,4} && <color>? ]
- var result = false,
- count = 0,
- inset = false,
- color = false,
- part;
-
- if (expression.hasNext()) {
-
- if (ValidationTypes.isAny(expression, "inset")){
- inset = true;
- }
-
- if (ValidationTypes.isAny(expression, "<color>")) {
- color = true;
- }
-
- while (ValidationTypes.isAny(expression, "<length>") && count < 4) {
- count++;
- }
-
-
- if (expression.hasNext()) {
- if (!color) {
- ValidationTypes.isAny(expression, "<color>");
- }
-
- if (!inset) {
- ValidationTypes.isAny(expression, "inset");
- }
-
- }
-
- result = (count >= 2 && count <= 4);
-
- }
-
- return result;
- },
-
- "<x-one-radius>": function(expression) {
- //[ <length> | <percentage> ] [ <length> | <percentage> ]?
- var result = false,
- count = 0,
- numeric = "<length> | <percentage>",
- part;
-
- if (ValidationTypes.isAny(expression, numeric)){
- result = true;
-
- ValidationTypes.isAny(expression, numeric);
- }
-
- return result;
- }
- }
-};
-
-
-parserlib.css = {
-Colors :Colors,
-Combinator :Combinator,
-Parser :Parser,
-PropertyName :PropertyName,
-PropertyValue :PropertyValue,
-PropertyValuePart :PropertyValuePart,
-MediaFeature :MediaFeature,
-MediaQuery :MediaQuery,
-Selector :Selector,
-SelectorPart :SelectorPart,
-SelectorSubPart :SelectorSubPart,
-Specificity :Specificity,
-TokenStream :TokenStream,
-Tokens :Tokens,
-ValidationError :ValidationError
-};
-})();
-/*global parserlib, Reporter*/
-var CSSLint = (function(){
-
- var rules = [],
- formatters = [],
- api = new parserlib.util.EventTarget();
-
- api.version = "0.9.7";
-
- //-------------------------------------------------------------------------
- // Rule Management
- //-------------------------------------------------------------------------
-
- /**
- * Adds a new rule to the engine.
- * @param {Object} rule The rule to add.
- * @method addRule
- */
- api.addRule = function(rule){
- rules.push(rule);
- rules[rule.id] = rule;
- };
- api.clearRules = function(){
- rules = [];
- };
- api.getRules = function(){
- return [].concat(rules).sort(function(a,b){
- return a.id > b.id ? 1 : 0;
- });
- };
-
- //-------------------------------------------------------------------------
- // Formatters
- //-------------------------------------------------------------------------
-
- /**
- * Adds a new formatter to the engine.
- * @param {Object} formatter The formatter to add.
- * @method addFormatter
- */
- api.addFormatter = function(formatter) {
- // formatters.push(formatter);
- formatters[formatter.id] = formatter;
- };
- api.getFormatter = function(formatId){
- return formatters[formatId];
- };
- api.format = function(results, filename, formatId, options) {
- var formatter = this.getFormatter(formatId),
- result = null;
-
- if (formatter){
- result = formatter.startFormat();
- result += formatter.formatResults(results, filename, options || {});
- result += formatter.endFormat();
- }
-
- return result;
- };
- api.hasFormat = function(formatId){
- return formatters.hasOwnProperty(formatId);
- };
-
- //-------------------------------------------------------------------------
- // Verification
- //-------------------------------------------------------------------------
-
- /**
- * Starts the verification process for the given CSS text.
- * @param {String} text The CSS text to verify.
- * @param {Object} ruleset (Optional) List of rules to apply. If null, then
- * all rules are used. If a rule has a value of 1 then it's a warning,
- * a value of 2 means it's an error.
- * @return {Object} Results of the verification.
- * @method verify
- */
- api.verify = function(text, ruleset){
-
- var i = 0,
- len = rules.length,
- reporter,
- lines,
- report,
- parser = new parserlib.css.Parser({ starHack: true, ieFilters: true,
- underscoreHack: true, strict: false });
-
- lines = text.replace(/\n\r?/g, "$split$").split('$split$');
-
- if (!ruleset){
- ruleset = {};
- while (i < len){
- ruleset[rules[i++].id] = 1; //by default, everything is a warning
- }
- }
-
- reporter = new Reporter(lines, ruleset);
-
- ruleset.errors = 2; //always report parsing errors as errors
- for (i in ruleset){
- if(ruleset.hasOwnProperty(i)){
- if (rules[i]){
- rules[i].init(parser, reporter);
- }
- }
- }
-
-
- //capture most horrible error type
- try {
- parser.parse(text);
- } catch (ex) {
- reporter.error("Fatal error, cannot continue: " + ex.message, ex.line, ex.col, {});
- }
-
- report = {
- messages : reporter.messages,
- stats : reporter.stats
- };
-
- //sort by line numbers, rollups at the bottom
- report.messages.sort(function (a, b){
- if (a.rollup && !b.rollup){
- return 1;
- } else if (!a.rollup && b.rollup){
- return -1;
- } else {
- return a.line - b.line;
- }
- });
-
- return report;
- };
-
- //-------------------------------------------------------------------------
- // Publish the API
- //-------------------------------------------------------------------------
-
- return api;
-
-})();
-/**
- * An instance of Report is used to report results of the
- * verification back to the main API.
- * @class Reporter
- * @constructor
- * @param {String[]} lines The text lines of the source.
- * @param {Object} ruleset The set of rules to work with, including if
- * they are errors or warnings.
- */
-function Reporter(lines, ruleset){
-
- /**
- * List of messages being reported.
- * @property messages
- * @type String[]
- */
- this.messages = [];
- this.stats = [];
- this.lines = lines;
- this.ruleset = ruleset;
-}
-
-Reporter.prototype = {
-
- //restore constructor
- constructor: Reporter,
-
- /**
- * Report an error.
- * @param {String} message The message to store.
- * @param {int} line The line number.
- * @param {int} col The column number.
- * @param {Object} rule The rule this message relates to.
- * @method error
- */
- error: function(message, line, col, rule){
- this.messages.push({
- type : "error",
- line : line,
- col : col,
- message : message,
- evidence: this.lines[line-1],
- rule : rule || {}
- });
- },
-
- /**
- * Report an warning.
- * @param {String} message The message to store.
- * @param {int} line The line number.
- * @param {int} col The column number.
- * @param {Object} rule The rule this message relates to.
- * @method warn
- * @deprecated Use report instead.
- */
- warn: function(message, line, col, rule){
- this.report(message, line, col, rule);
- },
-
- /**
- * Report an issue.
- * @param {String} message The message to store.
- * @param {int} line The line number.
- * @param {int} col The column number.
- * @param {Object} rule The rule this message relates to.
- * @method report
- */
- report: function(message, line, col, rule){
- this.messages.push({
- type : this.ruleset[rule.id] == 2 ? "error" : "warning",
- line : line,
- col : col,
- message : message,
- evidence: this.lines[line-1],
- rule : rule
- });
- },
-
- /**
- * Report some informational text.
- * @param {String} message The message to store.
- * @param {int} line The line number.
- * @param {int} col The column number.
- * @param {Object} rule The rule this message relates to.
- * @method info
- */
- info: function(message, line, col, rule){
- this.messages.push({
- type : "info",
- line : line,
- col : col,
- message : message,
- evidence: this.lines[line-1],
- rule : rule
- });
- },
-
- /**
- * Report some rollup error information.
- * @param {String} message The message to store.
- * @param {Object} rule The rule this message relates to.
- * @method rollupError
- */
- rollupError: function(message, rule){
- this.messages.push({
- type : "error",
- rollup : true,
- message : message,
- rule : rule
- });
- },
-
- /**
- * Report some rollup warning information.
- * @param {String} message The message to store.
- * @param {Object} rule The rule this message relates to.
- * @method rollupWarn
- */
- rollupWarn: function(message, rule){
- this.messages.push({
- type : "warning",
- rollup : true,
- message : message,
- rule : rule
- });
- },
-
- /**
- * Report a statistic.
- * @param {String} name The name of the stat to store.
- * @param {Variant} value The value of the stat.
- * @method stat
- */
- stat: function(name, value){
- this.stats[name] = value;
- }
-};
-
-//expose for testing purposes
-CSSLint._Reporter = Reporter;
-
-/*
- * Utility functions that make life easier.
- */
-CSSLint.Util = {
- /*
- * Adds all properties from supplier onto receiver,
- * overwriting if the same name already exists on
- * reciever.
- * @param {Object} The object to receive the properties.
- * @param {Object} The object to provide the properties.
- * @return {Object} The receiver
- */
- mix: function(receiver, supplier){
- var prop;
-
- for (prop in supplier){
- if (supplier.hasOwnProperty(prop)){
- receiver[prop] = supplier[prop];
- }
- }
-
- return prop;
- },
-
- /*
- * Polyfill for array indexOf() method.
- * @param {Array} values The array to search.
- * @param {Variant} value The value to search for.
- * @return {int} The index of the value if found, -1 if not.
- */
- indexOf: function(values, value){
- if (values.indexOf){
- return values.indexOf(value);
- } else {
- for (var i=0, len=values.length; i < len; i++){
- if (values[i] === value){
- return i;
- }
- }
- return -1;
- }
- },
-
- /*
- * Polyfill for array forEach() method.
- * @param {Array} values The array to operate on.
- * @param {Function} func The function to call on each item.
- * @return {void}
- */
- forEach: function(values, func) {
- if (values.forEach){
- return values.forEach(func);
- } else {
- for (var i=0, len=values.length; i < len; i++){
- func(values[i], i, values);
- }
- }
- }
-};
-/*
- * Rule: Don't use adjoining classes (.foo.bar).
- */
-CSSLint.addRule({
-
- //rule information
- id: "adjoining-classes",
- name: "Disallow adjoining classes",
- desc: "Don't use adjoining classes.",
- browsers: "IE6",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- classCount,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
- for (j=0; j < selector.parts.length; j++){
- part = selector.parts[j];
- if (part.type == parser.SELECTOR_PART_TYPE){
- classCount = 0;
- for (k=0; k < part.modifiers.length; k++){
- modifier = part.modifiers[k];
- if (modifier.type == "class"){
- classCount++;
- }
- if (classCount > 1){
- reporter.report("Don't use adjoining classes.", part.line, part.col, rule);
- }
- }
- }
- }
- }
- });
- }
-
-});
-
-/*
- * Rule: Don't use width or height when using padding or border.
- */
-CSSLint.addRule({
-
- //rule information
- id: "box-model",
- name: "Beware of broken box size",
- desc: "Don't use width or height when using padding or border.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- widthProperties = {
- border: 1,
- "border-left": 1,
- "border-right": 1,
- padding: 1,
- "padding-left": 1,
- "padding-right": 1
- },
- heightProperties = {
- border: 1,
- "border-bottom": 1,
- "border-top": 1,
- padding: 1,
- "padding-bottom": 1,
- "padding-top": 1
- },
- properties;
-
- function startRule(){
- properties = {};
- }
-
- function endRule(){
- var prop;
- if (properties.height){
- for (prop in heightProperties){
- if (heightProperties.hasOwnProperty(prop) && properties[prop]){
-
- //special case for padding
- if (!(prop == "padding" && properties[prop].value.parts.length === 2 && properties[prop].value.parts[0].value === 0)){
- reporter.report("Using height with " + prop + " can sometimes make elements larger than you expect.", properties[prop].line, properties[prop].col, rule);
- }
- }
- }
- }
-
- if (properties.width){
- for (prop in widthProperties){
- if (widthProperties.hasOwnProperty(prop) && properties[prop]){
-
- if (!(prop == "padding" && properties[prop].value.parts.length === 2 && properties[prop].value.parts[1].value === 0)){
- reporter.report("Using width with " + prop + " can sometimes make elements larger than you expect.", properties[prop].line, properties[prop].col, rule);
- }
- }
- }
- }
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startpage", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startkeyframerule", startRule);
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase();
-
- if (heightProperties[name] || widthProperties[name]){
- if (!/^0\S*$/.test(event.value) && !(name == "border" && event.value == "none")){
- properties[name] = { line: event.property.line, col: event.property.col, value: event.value };
- }
- } else {
- if (name == "width" || name == "height"){
- properties[name] = 1;
- }
- }
-
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
- parser.addListener("endpage", endRule);
- parser.addListener("endpagemargin", endRule);
- parser.addListener("endkeyframerule", endRule);
- }
-
-});
-
-/*
- * Rule: box-sizing doesn't work in IE6 and IE7.
- */
-CSSLint.addRule({
-
- //rule information
- id: "box-sizing",
- name: "Disallow use of box-sizing",
- desc: "The box-sizing properties isn't supported in IE6 and IE7.",
- browsers: "IE6, IE7",
- tags: ["Compatibility"],
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase();
-
- if (name == "box-sizing"){
- reporter.report("The box-sizing property isn't supported in IE6 and IE7.", event.line, event.col, rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "compatible-vendor-prefixes",
- name: "Require compatible vendor prefixes",
- desc: "Include all compatible vendor prefixes to reach a wider range of users.",
- browsers: "All",
-
- //initialization
- init: function (parser, reporter) {
- var rule = this,
- compatiblePrefixes,
- properties,
- prop,
- variations,
- prefixed,
- i,
- len,
- arrayPush = Array.prototype.push,
- applyTo = [];
-
- // See http://peter.sh/experiments/vendor-prefixed-css-property-overview/ for details
- compatiblePrefixes = {
- "animation" : "webkit moz ms",
- "animation-delay" : "webkit moz ms",
- "animation-direction" : "webkit moz ms",
- "animation-duration" : "webkit moz ms",
- "animation-fill-mode" : "webkit moz ms",
- "animation-iteration-count" : "webkit moz ms",
- "animation-name" : "webkit moz ms",
- "animation-play-state" : "webkit moz ms",
- "animation-timing-function" : "webkit moz ms",
- "appearance" : "webkit moz",
- "border-end" : "webkit moz",
- "border-end-color" : "webkit moz",
- "border-end-style" : "webkit moz",
- "border-end-width" : "webkit moz",
- "border-image" : "webkit moz o",
- "border-radius" : "webkit moz",
- "border-start" : "webkit moz",
- "border-start-color" : "webkit moz",
- "border-start-style" : "webkit moz",
- "border-start-width" : "webkit moz",
- "box-align" : "webkit moz ms",
- "box-direction" : "webkit moz ms",
- "box-flex" : "webkit moz ms",
- "box-lines" : "webkit ms",
- "box-ordinal-group" : "webkit moz ms",
- "box-orient" : "webkit moz ms",
- "box-pack" : "webkit moz ms",
- "box-sizing" : "webkit moz",
- "box-shadow" : "webkit moz",
- "column-count" : "webkit moz ms",
- "column-gap" : "webkit moz ms",
- "column-rule" : "webkit moz ms",
- "column-rule-color" : "webkit moz ms",
- "column-rule-style" : "webkit moz ms",
- "column-rule-width" : "webkit moz ms",
- "column-width" : "webkit moz ms",
- "hyphens" : "epub moz",
- "line-break" : "webkit ms",
- "margin-end" : "webkit moz",
- "margin-start" : "webkit moz",
- "marquee-speed" : "webkit wap",
- "marquee-style" : "webkit wap",
- "padding-end" : "webkit moz",
- "padding-start" : "webkit moz",
- "tab-size" : "moz o",
- "text-size-adjust" : "webkit ms",
- "transform" : "webkit moz ms o",
- "transform-origin" : "webkit moz ms o",
- "transition" : "webkit moz o ms",
- "transition-delay" : "webkit moz o ms",
- "transition-duration" : "webkit moz o ms",
- "transition-property" : "webkit moz o ms",
- "transition-timing-function" : "webkit moz o ms",
- "user-modify" : "webkit moz",
- "user-select" : "webkit moz ms",
- "word-break" : "epub ms",
- "writing-mode" : "epub ms"
- };
-
-
- for (prop in compatiblePrefixes) {
- if (compatiblePrefixes.hasOwnProperty(prop)) {
- variations = [];
- prefixed = compatiblePrefixes[prop].split(' ');
- for (i = 0, len = prefixed.length; i < len; i++) {
- variations.push('-' + prefixed[i] + '-' + prop);
- }
- compatiblePrefixes[prop] = variations;
- arrayPush.apply(applyTo, variations);
- }
- }
- parser.addListener("startrule", function () {
- properties = [];
- });
-
- parser.addListener("property", function (event) {
- var name = event.property;
- if (CSSLint.Util.indexOf(applyTo, name.text) > -1) {
- properties.push(name);
- }
- });
-
- parser.addListener("endrule", function (event) {
- if (!properties.length) {
- return;
- }
-
- var propertyGroups = {},
- i,
- len,
- name,
- prop,
- variations,
- value,
- full,
- actual,
- item,
- propertiesSpecified;
-
- for (i = 0, len = properties.length; i < len; i++) {
- name = properties[i];
-
- for (prop in compatiblePrefixes) {
- if (compatiblePrefixes.hasOwnProperty(prop)) {
- variations = compatiblePrefixes[prop];
- if (CSSLint.Util.indexOf(variations, name.text) > -1) {
- if (!propertyGroups[prop]) {
- propertyGroups[prop] = {
- full : variations.slice(0),
- actual : [],
- actualNodes: []
- };
- }
- if (CSSLint.Util.indexOf(propertyGroups[prop].actual, name.text) === -1) {
- propertyGroups[prop].actual.push(name.text);
- propertyGroups[prop].actualNodes.push(name);
- }
- }
- }
- }
- }
-
- for (prop in propertyGroups) {
- if (propertyGroups.hasOwnProperty(prop)) {
- value = propertyGroups[prop];
- full = value.full;
- actual = value.actual;
-
- if (full.length > actual.length) {
- for (i = 0, len = full.length; i < len; i++) {
- item = full[i];
- if (CSSLint.Util.indexOf(actual, item) === -1) {
- propertiesSpecified = (actual.length === 1) ? actual[0] : (actual.length == 2) ? actual.join(" and ") : actual.join(", ");
- reporter.report("The property " + item + " is compatible with " + propertiesSpecified + " and should be included as well.", value.actualNodes[0].line, value.actualNodes[0].col, rule);
- }
- }
-
- }
- }
- }
- });
- }
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "display-property-grouping",
- name: "Require properties appropriate for display",
- desc: "Certain properties shouldn't be used with certain display property values.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- var propertiesToCheck = {
- display: 1,
- "float": "none",
- height: 1,
- width: 1,
- margin: 1,
- "margin-left": 1,
- "margin-right": 1,
- "margin-bottom": 1,
- "margin-top": 1,
- padding: 1,
- "padding-left": 1,
- "padding-right": 1,
- "padding-bottom": 1,
- "padding-top": 1,
- "vertical-align": 1
- },
- properties;
-
- function reportProperty(name, display, msg){
- if (properties[name]){
- if (typeof propertiesToCheck[name] != "string" || properties[name].value.toLowerCase() != propertiesToCheck[name]){
- reporter.report(msg || name + " can't be used with display: " + display + ".", properties[name].line, properties[name].col, rule);
- }
- }
- }
-
- function startRule(){
- properties = {};
- }
-
- function endRule(){
-
- var display = properties.display ? properties.display.value : null;
- if (display){
- switch(display){
-
- case "inline":
- //height, width, margin-top, margin-bottom, float should not be used with inline
- reportProperty("height", display);
- reportProperty("width", display);
- reportProperty("margin", display);
- reportProperty("margin-top", display);
- reportProperty("margin-bottom", display);
- reportProperty("float", display, "display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");
- break;
-
- case "block":
- //vertical-align should not be used with block
- reportProperty("vertical-align", display);
- break;
-
- case "inline-block":
- //float should not be used with inline-block
- reportProperty("float", display);
- break;
-
- default:
- //margin, float should not be used with table
- if (display.indexOf("table-") === 0){
- reportProperty("margin", display);
- reportProperty("margin-left", display);
- reportProperty("margin-right", display);
- reportProperty("margin-top", display);
- reportProperty("margin-bottom", display);
- reportProperty("float", display);
- }
-
- //otherwise do nothing
- }
- }
-
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startkeyframerule", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startpage", startRule);
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase();
-
- if (propertiesToCheck[name]){
- properties[name] = { value: event.value.text, line: event.property.line, col: event.property.col };
- }
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
- parser.addListener("endkeyframerule", endRule);
- parser.addListener("endpagemargin", endRule);
- parser.addListener("endpage", endRule);
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "duplicate-background-images",
- name: "Disallow duplicate background images",
- desc: "Every background-image should be unique. Use a common class for e.g. sprites.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- stack = {};
-
- parser.addListener("property", function(event){
- var name = event.property.text,
- value = event.value,
- i, len;
-
- if (name.match(/background/i)) {
- for (i=0, len=value.parts.length; i < len; i++) {
- if (value.parts[i].type == 'uri') {
- if (typeof stack[value.parts[i].uri] === 'undefined') {
- stack[value.parts[i].uri] = event;
- }
- else {
- reporter.report("Background image '" + value.parts[i].uri + "' was used multiple times, first declared at line " + stack[value.parts[i].uri].line + ", col " + stack[value.parts[i].uri].col + ".", event.line, event.col, rule);
- }
- }
- }
- }
- });
- }
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "duplicate-properties",
- name: "Disallow duplicate properties",
- desc: "Duplicate properties must appear one after the other.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- properties,
- lastProperty;
-
- function startRule(event){
- properties = {};
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startpage", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startkeyframerule", startRule);
-
- parser.addListener("property", function(event){
- var property = event.property,
- name = property.text.toLowerCase();
-
- if (properties[name] && (lastProperty != name || properties[name] == event.value.text)){
- reporter.report("Duplicate property '" + event.property + "' found.", event.line, event.col, rule);
- }
-
- properties[name] = event.value.text;
- lastProperty = name;
-
- });
-
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "empty-rules",
- name: "Disallow empty rules",
- desc: "Rules without any properties specified should be removed.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- count = 0;
-
- parser.addListener("startrule", function(){
- count=0;
- });
-
- parser.addListener("property", function(){
- count++;
- });
-
- parser.addListener("endrule", function(event){
- var selectors = event.selectors;
- if (count === 0){
- reporter.report("Rule is empty.", selectors[0].line, selectors[0].col, rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "errors",
- name: "Parsing Errors",
- desc: "This rule looks for recoverable syntax errors.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("error", function(event){
- reporter.error(event.message, event.line, event.col, rule);
- });
-
- }
-
-});
-CSSLint.addRule({
-
- //rule information
- id: "fallback-colors",
- name: "Require fallback colors",
- desc: "For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.",
- browsers: "IE6,IE7,IE8",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- lastProperty,
- propertiesToCheck = {
- color: 1,
- background: 1,
- "background-color": 1
- },
- properties;
-
- function startRule(event){
- properties = {};
- lastProperty = null;
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startpage", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startkeyframerule", startRule);
-
- parser.addListener("property", function(event){
- var property = event.property,
- name = property.text.toLowerCase(),
- parts = event.value.parts,
- i = 0,
- colorType = "",
- len = parts.length;
-
- if(propertiesToCheck[name]){
- while(i < len){
- if (parts[i].type == "color"){
- if ("alpha" in parts[i] || "hue" in parts[i]){
-
- if (/([^\)]+)\(/.test(parts[i])){
- colorType = RegExp.$1.toUpperCase();
- }
-
- if (!lastProperty || (lastProperty.property.text.toLowerCase() != name || lastProperty.colorType != "compat")){
- reporter.report("Fallback " + name + " (hex or RGB) should precede " + colorType + " " + name + ".", event.line, event.col, rule);
- }
- } else {
- event.colorType = "compat";
- }
- }
-
- i++;
- }
- }
-
- lastProperty = event;
- });
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "floats",
- name: "Disallow too many floats",
- desc: "This rule tests if the float property is used too many times",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
- var count = 0;
-
- //count how many times "float" is used
- parser.addListener("property", function(event){
- if (event.property.text.toLowerCase() == "float" &&
- event.value.text.toLowerCase() != "none"){
- count++;
- }
- });
-
- //report the results
- parser.addListener("endstylesheet", function(){
- reporter.stat("floats", count);
- if (count >= 10){
- reporter.rollupWarn("Too many floats (" + count + "), you're probably using them for layout. Consider using a grid system instead.", rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "font-faces",
- name: "Don't use too many web fonts",
- desc: "Too many different web fonts in the same stylesheet.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- count = 0;
-
-
- parser.addListener("startfontface", function(){
- count++;
- });
-
- parser.addListener("endstylesheet", function(){
- if (count > 5){
- reporter.rollupWarn("Too many @font-face declarations (" + count + ").", rule);
- }
- });
- }
-
-});
-
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "font-sizes",
- name: "Disallow too many font sizes",
- desc: "Checks the number of font-size declarations.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- count = 0;
-
- //check for use of "font-size"
- parser.addListener("property", function(event){
- if (event.property == "font-size"){
- count++;
- }
- });
-
- //report the results
- parser.addListener("endstylesheet", function(){
- reporter.stat("font-sizes", count);
- if (count >= 10){
- reporter.rollupWarn("Too many font-size declarations (" + count + "), abstraction needed.", rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "gradients",
- name: "Require all gradient definitions",
- desc: "When using a vendor-prefixed gradient, make sure to use them all.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- gradients;
-
- parser.addListener("startrule", function(){
- gradients = {
- moz: 0,
- webkit: 0,
- oldWebkit: 0,
- ms: 0,
- o: 0
- };
- });
-
- parser.addListener("property", function(event){
-
- if (/\-(moz|ms|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(event.value)){
- gradients[RegExp.$1] = 1;
- } else if (/\-webkit\-gradient/i.test(event.value)){
- gradients.oldWebkit = 1;
- }
-
- });
-
- parser.addListener("endrule", function(event){
- var missing = [];
-
- if (!gradients.moz){
- missing.push("Firefox 3.6+");
- }
-
- if (!gradients.webkit){
- missing.push("Webkit (Safari 5+, Chrome)");
- }
-
- if (!gradients.oldWebkit){
- missing.push("Old Webkit (Safari 4+, Chrome)");
- }
-
- if (!gradients.ms){
- missing.push("Internet Explorer 10+");
- }
-
- if (!gradients.o){
- missing.push("Opera 11.1+");
- }
-
- if (missing.length && missing.length < 5){
- reporter.report("Missing vendor-prefixed CSS gradients for " + missing.join(", ") + ".", event.selectors[0].line, event.selectors[0].col, rule);
- }
-
- });
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "ids",
- name: "Disallow IDs in selectors",
- desc: "Selectors should not contain IDs.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- idCount,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
- idCount = 0;
-
- for (j=0; j < selector.parts.length; j++){
- part = selector.parts[j];
- if (part.type == parser.SELECTOR_PART_TYPE){
- for (k=0; k < part.modifiers.length; k++){
- modifier = part.modifiers[k];
- if (modifier.type == "id"){
- idCount++;
- }
- }
- }
- }
-
- if (idCount == 1){
- reporter.report("Don't use IDs in selectors.", selector.line, selector.col, rule);
- } else if (idCount > 1){
- reporter.report(idCount + " IDs in the selector, really?", selector.line, selector.col, rule);
- }
- }
-
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "import",
- name: "Disallow @import",
- desc: "Don't use @import, use <link> instead.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("import", function(event){
- reporter.report("@import prevents parallel downloads, use <link> instead.", event.line, event.col, rule);
- });
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "important",
- name: "Disallow !important",
- desc: "Be careful when using !important declaration",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- count = 0;
-
- //warn that important is used and increment the declaration counter
- parser.addListener("property", function(event){
- if (event.important === true){
- count++;
- reporter.report("Use of !important", event.line, event.col, rule);
- }
- });
-
- //if there are more than 10, show an error
- parser.addListener("endstylesheet", function(){
- reporter.stat("important", count);
- if (count >= 10){
- reporter.rollupWarn("Too many !important declarations (" + count + "), try to use less than 10 to avoid specifity issues.", rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "known-properties",
- name: "Require use of known properties",
- desc: "Properties should be known (listed in CSS specification) or be a vendor-prefixed property.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- properties = {
-
- "alignment-adjust": 1,
- "alignment-baseline": 1,
- "animation": 1,
- "animation-delay": 1,
- "animation-direction": 1,
- "animation-duration": 1,
- "animation-fill-mode": 1,
- "animation-iteration-count": 1,
- "animation-name": 1,
- "animation-play-state": 1,
- "animation-timing-function": 1,
- "appearance": 1,
- "azimuth": 1,
- "backface-visibility": 1,
- "background": 1,
- "background-attachment": 1,
- "background-break": 1,
- "background-clip": 1,
- "background-color": 1,
- "background-image": 1,
- "background-origin": 1,
- "background-position": 1,
- "background-repeat": 1,
- "background-size": 1,
- "baseline-shift": 1,
- "binding": 1,
- "bleed": 1,
- "bookmark-label": 1,
- "bookmark-level": 1,
- "bookmark-state": 1,
- "bookmark-target": 1,
- "border": 1,
- "border-bottom": 1,
- "border-bottom-color": 1,
- "border-bottom-left-radius": 1,
- "border-bottom-right-radius": 1,
- "border-bottom-style": 1,
- "border-bottom-width": 1,
- "border-collapse": 1,
- "border-color": 1,
- "border-image": 1,
- "border-image-outset": 1,
- "border-image-repeat": 1,
- "border-image-slice": 1,
- "border-image-source": 1,
- "border-image-width": 1,
- "border-left": 1,
- "border-left-color": 1,
- "border-left-style": 1,
- "border-left-width": 1,
- "border-radius": 1,
- "border-right": 1,
- "border-right-color": 1,
- "border-right-style": 1,
- "border-right-width": 1,
- "border-spacing": 1,
- "border-style": 1,
- "border-top": 1,
- "border-top-color": 1,
- "border-top-left-radius": 1,
- "border-top-right-radius": 1,
- "border-top-style": 1,
- "border-top-width": 1,
- "border-width": 1,
- "bottom": 1,
- "box-align": 1,
- "box-decoration-break": 1,
- "box-direction": 1,
- "box-flex": 1,
- "box-flex-group": 1,
- "box-lines": 1,
- "box-ordinal-group": 1,
- "box-orient": 1,
- "box-pack": 1,
- "box-shadow": 1,
- "box-sizing": 1,
- "break-after": 1,
- "break-before": 1,
- "break-inside": 1,
- "caption-side": 1,
- "clear": 1,
- "clip": 1,
- "color": 1,
- "color-profile": 1,
- "column-count": 1,
- "column-fill": 1,
- "column-gap": 1,
- "column-rule": 1,
- "column-rule-color": 1,
- "column-rule-style": 1,
- "column-rule-width": 1,
- "column-span": 1,
- "column-width": 1,
- "columns": 1,
- "content": 1,
- "counter-increment": 1,
- "counter-reset": 1,
- "crop": 1,
- "cue": 1,
- "cue-after": 1,
- "cue-before": 1,
- "cursor": 1,
- "direction": 1,
- "display": 1,
- "dominant-baseline": 1,
- "drop-initial-after-adjust": 1,
- "drop-initial-after-align": 1,
- "drop-initial-before-adjust": 1,
- "drop-initial-before-align": 1,
- "drop-initial-size": 1,
- "drop-initial-value": 1,
- "elevation": 1,
- "empty-cells": 1,
- "fit": 1,
- "fit-position": 1,
- "float": 1,
- "float-offset": 1,
- "font": 1,
- "font-family": 1,
- "font-size": 1,
- "font-size-adjust": 1,
- "font-stretch": 1,
- "font-style": 1,
- "font-variant": 1,
- "font-weight": 1,
- "grid-columns": 1,
- "grid-rows": 1,
- "hanging-punctuation": 1,
- "height": 1,
- "hyphenate-after": 1,
- "hyphenate-before": 1,
- "hyphenate-character": 1,
- "hyphenate-lines": 1,
- "hyphenate-resource": 1,
- "hyphens": 1,
- "icon": 1,
- "image-orientation": 1,
- "image-rendering": 1,
- "image-resolution": 1,
- "inline-box-align": 1,
- "left": 1,
- "letter-spacing": 1,
- "line-height": 1,
- "line-stacking": 1,
- "line-stacking-ruby": 1,
- "line-stacking-shift": 1,
- "line-stacking-strategy": 1,
- "list-style": 1,
- "list-style-image": 1,
- "list-style-position": 1,
- "list-style-type": 1,
- "margin": 1,
- "margin-bottom": 1,
- "margin-left": 1,
- "margin-right": 1,
- "margin-top": 1,
- "mark": 1,
- "mark-after": 1,
- "mark-before": 1,
- "marks": 1,
- "marquee-direction": 1,
- "marquee-play-count": 1,
- "marquee-speed": 1,
- "marquee-style": 1,
- "max-height": 1,
- "max-width": 1,
- "min-height": 1,
- "min-width": 1,
- "move-to": 1,
- "nav-down": 1,
- "nav-index": 1,
- "nav-left": 1,
- "nav-right": 1,
- "nav-up": 1,
- "opacity": 1,
- "orphans": 1,
- "outline": 1,
- "outline-color": 1,
- "outline-offset": 1,
- "outline-style": 1,
- "outline-width": 1,
- "overflow": 1,
- "overflow-style": 1,
- "overflow-x": 1,
- "overflow-y": 1,
- "padding": 1,
- "padding-bottom": 1,
- "padding-left": 1,
- "padding-right": 1,
- "padding-top": 1,
- "page": 1,
- "page-break-after": 1,
- "page-break-before": 1,
- "page-break-inside": 1,
- "page-policy": 1,
- "pause": 1,
- "pause-after": 1,
- "pause-before": 1,
- "perspective": 1,
- "perspective-origin": 1,
- "phonemes": 1,
- "pitch": 1,
- "pitch-range": 1,
- "play-during": 1,
- "position": 1,
- "presentation-level": 1,
- "punctuation-trim": 1,
- "quotes": 1,
- "rendering-intent": 1,
- "resize": 1,
- "rest": 1,
- "rest-after": 1,
- "rest-before": 1,
- "richness": 1,
- "right": 1,
- "rotation": 1,
- "rotation-point": 1,
- "ruby-align": 1,
- "ruby-overhang": 1,
- "ruby-position": 1,
- "ruby-span": 1,
- "size": 1,
- "speak": 1,
- "speak-header": 1,
- "speak-numeral": 1,
- "speak-punctuation": 1,
- "speech-rate": 1,
- "stress": 1,
- "string-set": 1,
- "table-layout": 1,
- "target": 1,
- "target-name": 1,
- "target-new": 1,
- "target-position": 1,
- "text-align": 1,
- "text-align-last": 1,
- "text-decoration": 1,
- "text-emphasis": 1,
- "text-height": 1,
- "text-indent": 1,
- "text-justify": 1,
- "text-outline": 1,
- "text-shadow": 1,
- "text-transform": 1,
- "text-wrap": 1,
- "top": 1,
- "transform": 1,
- "transform-origin": 1,
- "transform-style": 1,
- "transition": 1,
- "transition-delay": 1,
- "transition-duration": 1,
- "transition-property": 1,
- "transition-timing-function": 1,
- "unicode-bidi": 1,
- "user-modify": 1,
- "user-select": 1,
- "vertical-align": 1,
- "visibility": 1,
- "voice-balance": 1,
- "voice-duration": 1,
- "voice-family": 1,
- "voice-pitch": 1,
- "voice-pitch-range": 1,
- "voice-rate": 1,
- "voice-stress": 1,
- "voice-volume": 1,
- "volume": 1,
- "white-space": 1,
- "white-space-collapse": 1,
- "widows": 1,
- "width": 1,
- "word-break": 1,
- "word-spacing": 1,
- "word-wrap": 1,
- "z-index": 1,
-
- //IE
- "filter": 1,
- "zoom": 1,
-
- //@font-face
- "src": 1
- };
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase();
-
- if (event.invalid) {
- reporter.report(event.invalid.message, event.line, event.col, rule);
- }
- //if (!properties[name] && name.charAt(0) != "-"){
- // reporter.error("Unknown property '" + event.property + "'.", event.line, event.col, rule);
- //}
-
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "outline-none",
- name: "Disallow outline: none",
- desc: "Use of outline: none or outline: 0 should be limited to :focus rules.",
- browsers: "All",
- tags: ["Accessibility"],
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- lastRule;
-
- function startRule(event){
- if (event.selectors){
- lastRule = {
- line: event.line,
- col: event.col,
- selectors: event.selectors,
- propCount: 0,
- outline: false
- };
- } else {
- lastRule = null;
- }
- }
-
- function endRule(event){
- if (lastRule){
- if (lastRule.outline){
- if (lastRule.selectors.toString().toLowerCase().indexOf(":focus") == -1){
- reporter.report("Outlines should only be modified using :focus.", lastRule.line, lastRule.col, rule);
- } else if (lastRule.propCount == 1) {
- reporter.report("Outlines shouldn't be hidden unless other visual changes are made.", lastRule.line, lastRule.col, rule);
- }
- }
- }
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startpage", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startkeyframerule", startRule);
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase(),
- value = event.value;
-
- if (lastRule){
- lastRule.propCount++;
- if (name == "outline" && (value == "none" || value == "0")){
- lastRule.outline = true;
- }
- }
-
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
- parser.addListener("endpage", endRule);
- parser.addListener("endpagemargin", endRule);
- parser.addListener("endkeyframerule", endRule);
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "overqualified-elements",
- name: "Disallow overqualified elements",
- desc: "Don't use classes or IDs with elements (a.foo or a#foo).",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- classes = {};
-
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
-
- for (j=0; j < selector.parts.length; j++){
- part = selector.parts[j];
- if (part.type == parser.SELECTOR_PART_TYPE){
- for (k=0; k < part.modifiers.length; k++){
- modifier = part.modifiers[k];
- if (part.elementName && modifier.type == "id"){
- reporter.report("Element (" + part + ") is overqualified, just use " + modifier + " without element name.", part.line, part.col, rule);
- } else if (modifier.type == "class"){
-
- if (!classes[modifier]){
- classes[modifier] = [];
- }
- classes[modifier].push({ modifier: modifier, part: part });
- }
- }
- }
- }
- }
- });
-
- parser.addListener("endstylesheet", function(){
-
- var prop;
- for (prop in classes){
- if (classes.hasOwnProperty(prop)){
-
- //one use means that this is overqualified
- if (classes[prop].length == 1 && classes[prop][0].part.elementName){
- reporter.report("Element (" + classes[prop][0].part + ") is overqualified, just use " + classes[prop][0].modifier + " without element name.", classes[prop][0].part.line, classes[prop][0].part.col, rule);
- }
- }
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "qualified-headings",
- name: "Disallow qualified headings",
- desc: "Headings should not be qualified (namespaced).",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- i, j;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
-
- for (j=0; j < selector.parts.length; j++){
- part = selector.parts[j];
- if (part.type == parser.SELECTOR_PART_TYPE){
- if (part.elementName && /h[1-6]/.test(part.elementName.toString()) && j > 0){
- reporter.report("Heading (" + part.elementName + ") should not be qualified.", part.line, part.col, rule);
- }
- }
- }
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "regex-selectors",
- name: "Disallow selectors that look like regexs",
- desc: "Selectors that look like regular expressions are slow and should be avoided.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
- for (j=0; j < selector.parts.length; j++){
- part = selector.parts[j];
- if (part.type == parser.SELECTOR_PART_TYPE){
- for (k=0; k < part.modifiers.length; k++){
- modifier = part.modifiers[k];
- if (modifier.type == "attribute"){
- if (/([\~\|\^\$\*]=)/.test(modifier)){
- reporter.report("Attribute selectors with " + RegExp.$1 + " are slow!", modifier.line, modifier.col, rule);
- }
- }
-
- }
- }
- }
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "rules-count",
- name: "Rules Count",
- desc: "Track how many rules there are.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- count = 0;
-
- //count each rule
- parser.addListener("startrule", function(){
- count++;
- });
-
- parser.addListener("endstylesheet", function(){
- reporter.stat("rule-count", count);
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "shorthand",
- name: "Require shorthand properties",
- desc: "Use shorthand properties where possible.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- prop, i, len,
- propertiesToCheck = {},
- properties,
- mapping = {
- "margin": [
- "margin-top",
- "margin-bottom",
- "margin-left",
- "margin-right"
- ],
- "padding": [
- "padding-top",
- "padding-bottom",
- "padding-left",
- "padding-right"
- ]
- };
-
- //initialize propertiesToCheck
- for (prop in mapping){
- if (mapping.hasOwnProperty(prop)){
- for (i=0, len=mapping[prop].length; i < len; i++){
- propertiesToCheck[mapping[prop][i]] = prop;
- }
- }
- }
-
- function startRule(event){
- properties = {};
- }
-
- //event handler for end of rules
- function endRule(event){
-
- var prop, i, len, total;
-
- //check which properties this rule has
- for (prop in mapping){
- if (mapping.hasOwnProperty(prop)){
- total=0;
-
- for (i=0, len=mapping[prop].length; i < len; i++){
- total += properties[mapping[prop][i]] ? 1 : 0;
- }
-
- if (total == mapping[prop].length){
- reporter.report("The properties " + mapping[prop].join(", ") + " can be replaced by " + prop + ".", event.line, event.col, rule);
- }
- }
- }
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
-
- //check for use of "font-size"
- parser.addListener("property", function(event){
- var name = event.property.toString().toLowerCase(),
- value = event.value.parts[0].value;
-
- if (propertiesToCheck[name]){
- properties[name] = 1;
- }
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "text-indent",
- name: "Disallow negative text-indent",
- desc: "Checks for text indent less than -99px",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- textIndent = false;
-
-
- function startRule(event){
- textIndent = false;
- }
-
- //event handler for end of rules
- function endRule(event){
- if (textIndent){
- reporter.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.", textIndent.line, textIndent.col, rule);
- }
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
-
- //check for use of "font-size"
- parser.addListener("property", function(event){
- var name = event.property.toString().toLowerCase(),
- value = event.value;
-
- if (name == "text-indent" && value.parts[0].value < -99){
- textIndent = event.property;
- } else if (name == "direction" && value == "ltr"){
- textIndent = false;
- }
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
-
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "unique-headings",
- name: "Headings should only be defined once",
- desc: "Headings should be defined only once.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- var headings = {
- h1: 0,
- h2: 0,
- h3: 0,
- h4: 0,
- h5: 0,
- h6: 0
- };
-
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- pseudo,
- i, j;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
- part = selector.parts[selector.parts.length-1];
-
- if (part.elementName && /(h[1-6])/i.test(part.elementName.toString())){
-
- for (j=0; j < part.modifiers.length; j++){
- if (part.modifiers[j].type == "pseudo"){
- pseudo = true;
- break;
- }
- }
-
- if (!pseudo){
- headings[RegExp.$1]++;
- if (headings[RegExp.$1] > 1) {
- reporter.report("Heading (" + part.elementName + ") has already been defined.", part.line, part.col, rule);
- }
- }
- }
- }
- });
-
- parser.addListener("endstylesheet", function(event){
- var prop,
- messages = [];
-
- for (prop in headings){
- if (headings.hasOwnProperty(prop)){
- if (headings[prop] > 1){
- messages.push(headings[prop] + " " + prop + "s");
- }
- }
- }
-
- if (messages.length){
- reporter.rollupWarn("You have " + messages.join(", ") + " defined in this stylesheet.", rule);
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "universal-selector",
- name: "Disallow universal selector",
- desc: "The universal selector (*) is known to be slow.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("startrule", function(event){
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
-
- part = selector.parts[selector.parts.length-1];
- if (part.elementName == "*"){
- reporter.report(rule.desc, part.line, part.col, rule);
- }
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "unqualified-attributes",
- name: "Disallow unqualified attribute selectors",
- desc: "Unqualified attribute selectors are known to be slow.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- parser.addListener("startrule", function(event){
-
- var selectors = event.selectors,
- selector,
- part,
- modifier,
- i, j, k;
-
- for (i=0; i < selectors.length; i++){
- selector = selectors[i];
-
- part = selector.parts[selector.parts.length-1];
- if (part.type == parser.SELECTOR_PART_TYPE){
- for (k=0; k < part.modifiers.length; k++){
- modifier = part.modifiers[k];
- if (modifier.type == "attribute" && (!part.elementName || part.elementName == "*")){
- reporter.report(rule.desc, part.line, part.col, rule);
- }
- }
- }
-
- }
- });
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "vendor-prefix",
- name: "Require standard property with vendor prefix",
- desc: "When using a vendor-prefixed property, make sure to include the standard one.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this,
- properties,
- num,
- propertiesToCheck = {
- "-webkit-border-radius": "border-radius",
- "-webkit-border-top-left-radius": "border-top-left-radius",
- "-webkit-border-top-right-radius": "border-top-right-radius",
- "-webkit-border-bottom-left-radius": "border-bottom-left-radius",
- "-webkit-border-bottom-right-radius": "border-bottom-right-radius",
-
- "-o-border-radius": "border-radius",
- "-o-border-top-left-radius": "border-top-left-radius",
- "-o-border-top-right-radius": "border-top-right-radius",
- "-o-border-bottom-left-radius": "border-bottom-left-radius",
- "-o-border-bottom-right-radius": "border-bottom-right-radius",
-
- "-moz-border-radius": "border-radius",
- "-moz-border-radius-topleft": "border-top-left-radius",
- "-moz-border-radius-topright": "border-top-right-radius",
- "-moz-border-radius-bottomleft": "border-bottom-left-radius",
- "-moz-border-radius-bottomright": "border-bottom-right-radius",
-
- "-moz-column-count": "column-count",
- "-webkit-column-count": "column-count",
-
- "-moz-column-gap": "column-gap",
- "-webkit-column-gap": "column-gap",
-
- "-moz-column-rule": "column-rule",
- "-webkit-column-rule": "column-rule",
-
- "-moz-column-rule-style": "column-rule-style",
- "-webkit-column-rule-style": "column-rule-style",
-
- "-moz-column-rule-color": "column-rule-color",
- "-webkit-column-rule-color": "column-rule-color",
-
- "-moz-column-rule-width": "column-rule-width",
- "-webkit-column-rule-width": "column-rule-width",
-
- "-moz-column-width": "column-width",
- "-webkit-column-width": "column-width",
-
- "-webkit-column-span": "column-span",
- "-webkit-columns": "columns",
-
- "-moz-box-shadow": "box-shadow",
- "-webkit-box-shadow": "box-shadow",
-
- "-moz-transform" : "transform",
- "-webkit-transform" : "transform",
- "-o-transform" : "transform",
- "-ms-transform" : "transform",
-
- "-moz-transform-origin" : "transform-origin",
- "-webkit-transform-origin" : "transform-origin",
- "-o-transform-origin" : "transform-origin",
- "-ms-transform-origin" : "transform-origin",
-
- "-moz-box-sizing" : "box-sizing",
- "-webkit-box-sizing" : "box-sizing",
-
- "-moz-user-select" : "user-select",
- "-khtml-user-select" : "user-select",
- "-webkit-user-select" : "user-select"
- };
-
- //event handler for beginning of rules
- function startRule(){
- properties = {};
- num=1;
- }
-
- //event handler for end of rules
- function endRule(event){
- var prop,
- i, len,
- standard,
- needed,
- actual,
- needsStandard = [];
-
- for (prop in properties){
- if (propertiesToCheck[prop]){
- needsStandard.push({ actual: prop, needed: propertiesToCheck[prop]});
- }
- }
-
- for (i=0, len=needsStandard.length; i < len; i++){
- needed = needsStandard[i].needed;
- actual = needsStandard[i].actual;
-
- if (!properties[needed]){
- reporter.report("Missing standard property '" + needed + "' to go along with '" + actual + "'.", properties[actual][0].name.line, properties[actual][0].name.col, rule);
- } else {
- //make sure standard property is last
- if (properties[needed][0].pos < properties[actual][0].pos){
- reporter.report("Standard property '" + needed + "' should come after vendor-prefixed property '" + actual + "'.", properties[actual][0].name.line, properties[actual][0].name.col, rule);
- }
- }
- }
-
- }
-
- parser.addListener("startrule", startRule);
- parser.addListener("startfontface", startRule);
- parser.addListener("startpage", startRule);
- parser.addListener("startpagemargin", startRule);
- parser.addListener("startkeyframerule", startRule);
-
- parser.addListener("property", function(event){
- var name = event.property.text.toLowerCase();
-
- if (!properties[name]){
- properties[name] = [];
- }
-
- properties[name].push({ name: event.property, value : event.value, pos:num++ });
- });
-
- parser.addListener("endrule", endRule);
- parser.addListener("endfontface", endRule);
- parser.addListener("endpage", endRule);
- parser.addListener("endpagemargin", endRule);
- parser.addListener("endkeyframerule", endRule);
- }
-
-});
-/*global CSSLint*/
-CSSLint.addRule({
-
- //rule information
- id: "zero-units",
- name: "Disallow units for 0 values",
- desc: "You don't need to specify units when a value is 0.",
- browsers: "All",
-
- //initialization
- init: function(parser, reporter){
- var rule = this;
-
- //count how many times "float" is used
- parser.addListener("property", function(event){
- var parts = event.value.parts,
- i = 0,
- len = parts.length;
-
- while(i < len){
- if ((parts[i].units || parts[i].type == "percentage") && parts[i].value === 0 && parts[i].type != "time"){
- reporter.report("Values of 0 shouldn't have units specified.", parts[i].line, parts[i].col, rule);
- }
- i++;
- }
-
- });
-
- }
-
-});
-CSSLint.addFormatter({
- //format information
- id: "checkstyle-xml",
- name: "Checkstyle XML format",
-
- /**
- * Return opening root XML tag.
- * @return {String} to prepend before all results
- */
- startFormat: function(){
- return "<?xml version=\"1.0\" encoding=\"utf-8\"?><checkstyle>";
- },
-
- /**
- * Return closing root XML tag.
- * @return {String} to append after all results
- */
- endFormat: function(){
- return "</checkstyle>";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (UNUSED for now) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = [];
- var generateSource = function(rule) {
- if (!rule || !('name' in rule)) {
- return "";
- }
- return 'net.csslint.' + rule.name.replace(/\s/g,'');
- };
- var escapeSpecialCharacters = function(str) {
- if (!str || str.constructor !== String) {
- return "";
- }
- return str.replace(/\"/g, "'").replace(/</g, "&lt;").replace(/>/g, "&gt;");
- };
-
- if (messages.length > 0) {
- output.push("<file name=\""+filename+"\">");
- CSSLint.Util.forEach(messages, function (message, i) {
- //ignore rollups for now
- if (!message.rollup) {
- output.push("<error line=\"" + message.line + "\" column=\"" + message.col + "\" severity=\"" + message.type + "\"" +
- " message=\"" + escapeSpecialCharacters(message.message) + "\" source=\"" + generateSource(message.rule) +"\"/>");
- }
- });
- output.push("</file>");
- }
-
- return output.join("");
- }
-});
-CSSLint.addFormatter({
- //format information
- id: "compact",
- name: "Compact, 'porcelain' format",
-
- /**
- * Return content to be printed before all file results.
- * @return {String} to prepend before all results
- */
- startFormat: function() {
- return "";
- },
-
- /**
- * Return content to be printed after all file results.
- * @return {String} to append after all results
- */
- endFormat: function() {
- return "";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (Optional) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = "";
- options = options || {};
- var capitalize = function(str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- };
-
- if (messages.length === 0) {
- return options.quiet ? "" : filename + ": Lint Free!";
- }
-
- CSSLint.Util.forEach(messages, function(message, i) {
- if (message.rollup) {
- output += filename + ": " + capitalize(message.type) + " - " + message.message + "\n";
- } else {
- output += filename + ": " + "line " + message.line +
- ", col " + message.col + ", " + capitalize(message.type) + " - " + message.message + "\n";
- }
- });
-
- return output;
- }
-});
-CSSLint.addFormatter({
- //format information
- id: "csslint-xml",
- name: "CSSLint XML format",
-
- /**
- * Return opening root XML tag.
- * @return {String} to prepend before all results
- */
- startFormat: function(){
- return "<?xml version=\"1.0\" encoding=\"utf-8\"?><csslint>";
- },
-
- /**
- * Return closing root XML tag.
- * @return {String} to append after all results
- */
- endFormat: function(){
- return "</csslint>";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (UNUSED for now) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = [];
- var escapeSpecialCharacters = function(str) {
- if (!str || str.constructor !== String) {
- return "";
- }
- return str.replace(/\"/g, "'").replace(/</g, "&lt;").replace(/>/g, "&gt;");
- };
-
- if (messages.length > 0) {
- output.push("<file name=\""+filename+"\">");
- CSSLint.Util.forEach(messages, function (message, i) {
- if (message.rollup) {
- output.push("<issue severity=\"" + message.type + "\" reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>");
- } else {
- output.push("<issue line=\"" + message.line + "\" char=\"" + message.col + "\" severity=\"" + message.type + "\"" +
- " reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>");
- }
- });
- output.push("</file>");
- }
-
- return output.join("");
- }
-});
-CSSLint.addFormatter({
- //format information
- id: "lint-xml",
- name: "Lint XML format",
-
- /**
- * Return opening root XML tag.
- * @return {String} to prepend before all results
- */
- startFormat: function(){
- return "<?xml version=\"1.0\" encoding=\"utf-8\"?><lint>";
- },
-
- /**
- * Return closing root XML tag.
- * @return {String} to append after all results
- */
- endFormat: function(){
- return "</lint>";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (UNUSED for now) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = [];
- var escapeSpecialCharacters = function(str) {
- if (!str || str.constructor !== String) {
- return "";
- }
- return str.replace(/\"/g, "'").replace(/</g, "&lt;").replace(/>/g, "&gt;");
- };
-
- if (messages.length > 0) {
-
- output.push("<file name=\""+filename+"\">");
- CSSLint.Util.forEach(messages, function (message, i) {
- if (message.rollup) {
- output.push("<issue severity=\"" + message.type + "\" reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>");
- } else {
- output.push("<issue line=\"" + message.line + "\" char=\"" + message.col + "\" severity=\"" + message.type + "\"" +
- " reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>");
- }
- });
- output.push("</file>");
- }
-
- return output.join("");
- }
-});
-CSSLint.addFormatter({
- //format information
- id: "text",
- name: "Plain Text",
-
- /**
- * Return content to be printed before all file results.
- * @return {String} to prepend before all results
- */
- startFormat: function() {
- return "";
- },
-
- /**
- * Return content to be printed after all file results.
- * @return {String} to append after all results
- */
- endFormat: function() {
- return "";
- },
-
- /**
- * Given CSS Lint results for a file, return output for this format.
- * @param results {Object} with error and warning messages
- * @param filename {String} relative file path
- * @param options {Object} (Optional) specifies special handling of output
- * @return {String} output for results
- */
- formatResults: function(results, filename, options) {
- var messages = results.messages,
- output = "";
- options = options || {};
-
- if (messages.length === 0) {
- return options.quiet ? "" : "\n\ncsslint: No errors in " + filename + ".";
- }
-
- output = "\n\ncsslint: There are " + messages.length + " problems in " + filename + ".";
- var pos = filename.lastIndexOf("/"),
- shortFilename = filename;
-
- if (pos === -1){
- pos = filename.lastIndexOf("\\");
- }
- if (pos > -1){
- shortFilename = filename.substring(pos+1);
- }
-
- CSSLint.Util.forEach(messages, function (message, i) {
- output = output + "\n\n" + shortFilename;
- if (message.rollup) {
- output += "\n" + (i+1) + ": " + message.type;
- output += "\n" + message.message;
- } else {
- output += "\n" + (i+1) + ": " + message.type + " at line " + message.line + ", col " + message.col;
- output += "\n" + message.message;
- output += "\n" + message.evidence;
- }
- });
-
- return output;
- }
-});
-
-
-exports.CSSLint = CSSLint;
-
-
-}); \ No newline at end of file
diff --git a/vendor/assets/javascripts/ace-src-noconflict/worker-javascript.js b/vendor/assets/javascripts/ace-src-noconflict/worker-javascript.js
deleted file mode 100644
index 671d7bec547..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/worker-javascript.js
+++ /dev/null
@@ -1,10319 +0,0 @@
-"no use strict";
-
-var console = {
- log: function(msgs) {
- postMessage({type: "log", data: arguments.join(" ")});
- }
-};
-var window = {
- console: console
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- var moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-
-var require = function(parentId, id) {
- if (!id.charAt)
- throw new Error("worker.js require() accepts only (parentId, id) as arguments");
-
- var id = normalizeModule(parentId, id);
-
- var module = require.modules[id];
- if (module) {
- if (!module.initialized) {
- module.initialized = true;
- module.exports = module.factory().exports;
- }
- return module.exports;
- }
-
- var chunks = id.split("/");
- chunks[0] = require.tlns[chunks[0]] || chunks[0];
- var path = chunks.join("/") + ".js";
-
- require.id = id;
- importScripts(path);
- return require(parentId, id);
-};
-
-require.modules = {};
-require.tlns = {};
-
-var define = function(id, deps, factory) {
- if (arguments.length == 2) {
- factory = deps;
- if (typeof id != "string") {
- deps = id;
- id = require.id;
- }
- } else if (arguments.length == 1) {
- factory = id;
- id = require.id;
- }
-
- if (id.indexOf("text!") === 0)
- return;
-
- var req = function(deps, factory) {
- return require(id, deps, factory);
- };
-
- require.modules[id] = {
- factory: function() {
- var module = {
- exports: {}
- };
- var returnExports = factory(req, module.exports, module);
- if (returnExports)
- module.exports = returnExports;
- return module;
- }
- };
-};
-
-function initBaseUrls(topLevelNamespaces) {
- require.tlns = topLevelNamespaces;
-}
-
-function initSender() {
-
- var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
- var oop = require(null, "ace/lib/oop");
-
- var Sender = function() {};
-
- (function() {
-
- oop.implement(this, EventEmitter);
-
- this.callback = function(data, callbackId) {
- postMessage({
- type: "call",
- id: callbackId,
- data: data
- });
- };
-
- this.emit = function(name, data) {
- postMessage({
- type: "event",
- name: name,
- data: data
- });
- };
-
- }).call(Sender.prototype);
-
- return new Sender();
-}
-
-var main;
-var sender;
-
-onmessage = function(e) {
- var msg = e.data;
- if (msg.command) {
- main[msg.command].apply(main, msg.args);
- }
- else if (msg.init) {
- initBaseUrls(msg.tlns);
- require(null, "ace/lib/fixoldbrowsers");
- sender = initSender();
- var clazz = require(null, msg.module)[msg.classname];
- main = new clazz(sender);
- }
- else if (msg.event && sender) {
- sender._emit(msg.event, msg.data);
- }
-};
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-define('ace/mode/javascript_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/worker/jshint', 'ace/narcissus/parser'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var Mirror = require("../worker/mirror").Mirror;
-var lint = require("../worker/jshint").JSHINT;
-var parser = require("../narcissus/parser");
-
-var JavaScriptWorker = exports.JavaScriptWorker = function(sender) {
- Mirror.call(this, sender);
- this.setTimeout(500);
-};
-
-oop.inherits(JavaScriptWorker, Mirror);
-
-(function() {
-
- this.onUpdate = function() {
- var value = this.doc.getValue();
- value = value.replace(/^#!.*\n/, "\n");
-
-// var start = new Date();
- try {
- parser.parse(value);
- } catch(e) {
-// console.log("narcissus")
-// console.log(e);
- var chunks = e.message.split(":")
- var message = chunks.pop().trim();
- var lineNumber = parseInt(chunks.pop().trim()) - 1;
- this.sender.emit("narcissus", {
- row: lineNumber,
- column: null, // TODO convert e.cursor
- text: message,
- type: "error"
- });
- return;
- } finally {
-// console.log("parse time: " + (new Date() - start));
- }
-
-// var start = new Date();
-// console.log("jslint")
- lint(value, {undef: false, onevar: false, passfail: false});
- this.sender.emit("jslint", lint.errors);
-// console.log("lint time: " + (new Date() - start));
- }
-
-}).call(JavaScriptWorker.prototype);
-
-});
-define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
-
-
-var Document = require("../document").Document;
-var lang = require("../lib/lang");
-
-var Mirror = exports.Mirror = function(sender) {
- this.sender = sender;
- var doc = this.doc = new Document("");
-
- var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
-
- var _self = this;
- sender.on("change", function(e) {
- doc.applyDeltas([e.data]);
- deferredUpdate.schedule(_self.$timeout);
- });
-};
-
-(function() {
-
- this.$timeout = 500;
-
- this.setTimeout = function(timeout) {
- this.$timeout = timeout;
- };
-
- this.setValue = function(value) {
- this.doc.setValue(value);
- this.deferredUpdate.schedule(this.$timeout);
- };
-
- this.getValue = function(callbackId) {
- this.sender.callback(this.doc.getValue(), callbackId);
- };
-
- this.onUpdate = function() {
- // abstract method
- };
-
-}).call(Mirror.prototype);
-
-});
-
-define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-define('ace/worker/jshint', ['require', 'exports', 'module' ], function(require, exports, module) {
-/*!
- * JSHint, by JSHint Community.
- *
- * Licensed under the same slightly modified MIT license that JSLint is.
- * It stops evil-doers everywhere.
- *
- * JSHint is a derivative work of JSLint:
- *
- * Copyright (c) 2002 Douglas Crockford (www.JSLint.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 shall be used for Good, not Evil.
- *
- * 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.
- *
- * JSHint was forked from 2010-12-16 edition of JSLint.
- *
- */
-
-/*
- JSHINT is a global function. It takes two parameters.
-
- var myResult = JSHINT(source, option);
-
- The first parameter is either a string or an array of strings. If it is a
- string, it will be split on '\n' or '\r'. If it is an array of strings, it
- is assumed that each string represents one line. The source can be a
- JavaScript text or a JSON text.
-
- The second parameter is an optional object of options which control the
- operation of JSHINT. Most of the options are booleans: They are all
- optional and have a default value of false. One of the options, predef,
- can be an array of names, which will be used to declare global variables,
- or an object whose keys are used as global names, with a boolean value
- that determines if they are assignable.
-
- If it checks out, JSHINT returns true. Otherwise, it returns false.
-
- If false, you can inspect JSHINT.errors to find out the problems.
- JSHINT.errors is an array of objects containing these members:
-
- {
- line : The line (relative to 0) at which the lint was found
- character : The character (relative to 0) at which the lint was found
- reason : The problem
- evidence : The text line in which the problem occurred
- raw : The raw message before the details were inserted
- a : The first detail
- b : The second detail
- c : The third detail
- d : The fourth detail
- }
-
- If a fatal error was found, a null will be the last element of the
- JSHINT.errors array.
-
- You can request a Function Report, which shows all of the functions
- and the parameters and vars that they use. This can be used to find
- implied global variables and other problems. The report is in HTML and
- can be inserted in an HTML <body>.
-
- var myReport = JSHINT.report(limited);
-
- If limited is true, then the report will be limited to only errors.
-
- You can request a data structure which contains JSHint's results.
-
- var myData = JSHINT.data();
-
- It returns a structure with this form:
-
- {
- errors: [
- {
- line: NUMBER,
- character: NUMBER,
- reason: STRING,
- evidence: STRING
- }
- ],
- functions: [
- name: STRING,
- line: NUMBER,
- last: NUMBER,
- param: [
- STRING
- ],
- closure: [
- STRING
- ],
- var: [
- STRING
- ],
- exception: [
- STRING
- ],
- outer: [
- STRING
- ],
- unused: [
- STRING
- ],
- global: [
- STRING
- ],
- label: [
- STRING
- ]
- ],
- globals: [
- STRING
- ],
- member: {
- STRING: NUMBER
- },
- unused: [
- {
- name: STRING,
- line: NUMBER
- }
- ],
- implieds: [
- {
- name: STRING,
- line: NUMBER
- }
- ],
- urls: [
- STRING
- ],
- json: BOOLEAN
- }
-
- Empty arrays will not be included.
-
-*/
-
-/*jshint
- evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true,
- undef: true, maxlen: 100, indent:4
-*/
-
-/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%", "(begin)",
- "(breakage)", "(context)", "(error)", "(global)", "(identifier)", "(last)",
- "(line)", "(loopage)", "(name)", "(onevar)", "(params)", "(scope)",
- "(statement)", "(verb)", "*", "+", "++", "-", "--", "\/", "<", "<=", "==",
- "===", ">", ">=", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax,
- __filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio,
- Autocompleter, Assets, Boolean, Builder, Buffer, Browser, COM, CScript, Canvas,
- CustomAnimation, Class, Control, Chain, Color, Cookie, Core, DataView, Date,
- Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMReady, DOMParser, Drag,
- E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event,
- Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form,
- FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey,
- HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement,
- HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLCanvasElement, HTMLDirectoryElement,
- HTMLDivElement, HTMLDListElement, HTMLFieldSetElement,
- HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement,
- HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement,
- HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement,
- HTMLLabelElement, HTMLLayerElement, HTMLLegendElement, HTMLLIElement,
- HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement,
- HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement,
- HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement,
- HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement,
- HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement,
- HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement,
- HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement,
- Iframe, IframeShim, Image, Int16Array, Int32Array, Int8Array,
- Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E,
- MAX_VALUE, MIN_VALUE, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort,
- MoveAnimation, MooTools, Native, NEGATIVE_INFINITY, Number, Object, ObjectRange, Option,
- Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype,
- RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation,
- SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion,
- ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller,
- Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables,
- SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template,
- Timer, Tips, Type, TypeError, Toggle, Try, "use strict", unescape, URI, URIError, URL,
- VBArray, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer,
- XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult,
- "\\", a, addEventListener, address, alert, apply, applicationCache, arguments, arity, asi, atob,
- b, basic, basicToken, bitwise, block, blur, boolOptions, boss, browser, btoa, c, call, callee,
- caller, cases, charAt, charCodeAt, character, clearInterval, clearTimeout,
- close, closed, closure, comment, condition, confirm, console, constructor,
- content, couch, create, css, curly, d, data, datalist, dd, debug, decodeURI,
- decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document,
- dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent,
- entityify, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil,
- ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus,
- forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions,
- g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict,
- hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include,
- indent, indexOf, init, ins, instanceOf, isAlpha, isApplicationRunning, isArray,
- isDigit, isFinite, isNaN, iterator, java, join, jshint,
- JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastsemic, laxbreak, laxcomma,
- latedef, lbp, led, left, length, line, load, loadClass, localStorage, location,
- log, loopfunc, m, match, maxerr, maxlen, member,message, meta, module, moveBy,
- moveTo, mootools, multistr, name, navigator, new, newcap, noarg, node, noempty, nomen,
- nonew, nonstandard, nud, onbeforeunload, onblur, onerror, onevar, onecase, onfocus,
- onload, onresize, onunload, open, openDatabase, openURL, opener, opera, options, outer, param,
- parent, parseFloat, parseInt, passfail, plusplus, predef, print, process, prompt,
- proto, prototype, prototypejs, provides, push, quit, range, raw, reach, reason, regexp,
- readFile, readUrl, regexdash, removeEventListener, replace, report, require,
- reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, respond, rhino, right,
- runCommand, scroll, screen, scripturl, scrollBy, scrollTo, scrollbar, search, seal,
- send, serialize, sessionStorage, setInterval, setTimeout, setter, setterToken, shift, slice,
- smarttabs, sort, spawn, split, stack, status, start, strict, sub, substr, supernew, shadow,
- supplant, sum, sync, test, toLowerCase, toString, toUpperCase, toint32, token, top, trailing,
- type, typeOf, Uint16Array, Uint32Array, Uint8Array, undef, undefs, unused, urls, validthis,
- value, valueOf, var, version, WebSocket, withstmt, white, window, Worker, wsh*/
-
-/*global exports: false */
-
-// We build the application inside a function so that we produce only a single
-// global variable. That function will be invoked immediately, and its return
-// value is the JSHINT function itself.
-
-var JSHINT = (function () {
-
-
- var anonname, // The guessed name for anonymous functions.
-
-// These are operators that should not be used with the ! operator.
-
- bang = {
- '<' : true,
- '<=' : true,
- '==' : true,
- '===': true,
- '!==': true,
- '!=' : true,
- '>' : true,
- '>=' : true,
- '+' : true,
- '-' : true,
- '*' : true,
- '/' : true,
- '%' : true
- },
-
- // These are the JSHint boolean options.
- boolOptions = {
- asi : true, // if automatic semicolon insertion should be tolerated
- bitwise : true, // if bitwise operators should not be allowed
- boss : true, // if advanced usage of assignments should be allowed
- browser : true, // if the standard browser globals should be predefined
- couch : true, // if CouchDB globals should be predefined
- curly : true, // if curly braces around all blocks should be required
- debug : true, // if debugger statements should be allowed
- devel : true, // if logging globals should be predefined (console,
- // alert, etc.)
- dojo : true, // if Dojo Toolkit globals should be predefined
- eqeqeq : true, // if === should be required
- eqnull : true, // if == null comparisons should be tolerated
- es5 : true, // if ES5 syntax should be allowed
- esnext : true, // if es.next specific syntax should be allowed
- evil : true, // if eval should be allowed
- expr : true, // if ExpressionStatement should be allowed as Programs
- forin : true, // if for in statements must filter
- funcscope : true, // if only function scope should be used for scope tests
- globalstrict: true, // if global should be allowed (also
- // enables 'strict')
- immed : true, // if immediate invocations must be wrapped in parens
- iterator : true, // if the `__iterator__` property should be allowed
- jquery : true, // if jQuery globals should be predefined
- lastsemic : true, // if semicolons may be omitted for the trailing
- // statements inside of a one-line blocks.
- latedef : true, // if the use before definition should not be tolerated
- laxbreak : true, // if line breaks should not be checked
- laxcomma : true, // if line breaks should not be checked around commas
- loopfunc : true, // if functions should be allowed to be defined within
- // loops
- mootools : true, // if MooTools globals should be predefined
- multistr : true, // allow multiline strings
- newcap : true, // if constructor names must be capitalized
- noarg : true, // if arguments.caller and arguments.callee should be
- // disallowed
- node : true, // if the Node.js environment globals should be
- // predefined
- noempty : true, // if empty blocks should be disallowed
- nonew : true, // if using `new` for side-effects should be disallowed
- nonstandard : true, // if non-standard (but widely adopted) globals should
- // be predefined
- nomen : true, // if names should be checked
- onevar : true, // if only one var statement per function should be
- // allowed
- onecase : true, // if one case switch statements should be allowed
- passfail : true, // if the scan should stop on first error
- plusplus : true, // if increment/decrement should not be allowed
- proto : true, // if the `__proto__` property should be allowed
- prototypejs : true, // if Prototype and Scriptaculous globals should be
- // predefined
- regexdash : true, // if unescaped first/last dash (-) inside brackets
- // should be tolerated
- regexp : true, // if the . should not be allowed in regexp literals
- rhino : true, // if the Rhino environment globals should be predefined
- undef : true, // if variables should be declared before used
- scripturl : true, // if script-targeted URLs should be tolerated
- shadow : true, // if variable shadowing should be tolerated
- smarttabs : true, // if smarttabs should be tolerated
- // (http://www.emacswiki.org/emacs/SmartTabs)
- strict : true, // require the pragma
- sub : true, // if all forms of subscript notation are tolerated
- supernew : true, // if `new function () { ... };` and `new Object;`
- // should be tolerated
- trailing : true, // if trailing whitespace rules apply
- validthis : true, // if 'this' inside a non-constructor function is valid.
- // This is a function scoped option only.
- withstmt : true, // if with statements should be allowed
- white : true, // if strict whitespace rules apply
- wsh : true // if the Windows Scripting Host environment globals
- // should be predefined
- },
-
- // These are the JSHint options that can take any value
- // (we use this object to detect invalid options)
- valOptions = {
- maxlen: false,
- indent: false,
- maxerr: false,
- predef: false
- },
-
-
- // browser contains a set of global names which are commonly provided by a
- // web browser environment.
- browser = {
- ArrayBuffer : false,
- ArrayBufferView : false,
- Audio : false,
- addEventListener : false,
- applicationCache : false,
- atob : false,
- blur : false,
- btoa : false,
- clearInterval : false,
- clearTimeout : false,
- close : false,
- closed : false,
- DataView : false,
- DOMParser : false,
- defaultStatus : false,
- document : false,
- event : false,
- FileReader : false,
- Float32Array : false,
- Float64Array : false,
- FormData : false,
- focus : false,
- frames : false,
- getComputedStyle : false,
- HTMLElement : false,
- HTMLAnchorElement : false,
- HTMLBaseElement : false,
- HTMLBlockquoteElement : false,
- HTMLBodyElement : false,
- HTMLBRElement : false,
- HTMLButtonElement : false,
- HTMLCanvasElement : false,
- HTMLDirectoryElement : false,
- HTMLDivElement : false,
- HTMLDListElement : false,
- HTMLFieldSetElement : false,
- HTMLFontElement : false,
- HTMLFormElement : false,
- HTMLFrameElement : false,
- HTMLFrameSetElement : false,
- HTMLHeadElement : false,
- HTMLHeadingElement : false,
- HTMLHRElement : false,
- HTMLHtmlElement : false,
- HTMLIFrameElement : false,
- HTMLImageElement : false,
- HTMLInputElement : false,
- HTMLIsIndexElement : false,
- HTMLLabelElement : false,
- HTMLLayerElement : false,
- HTMLLegendElement : false,
- HTMLLIElement : false,
- HTMLLinkElement : false,
- HTMLMapElement : false,
- HTMLMenuElement : false,
- HTMLMetaElement : false,
- HTMLModElement : false,
- HTMLObjectElement : false,
- HTMLOListElement : false,
- HTMLOptGroupElement : false,
- HTMLOptionElement : false,
- HTMLParagraphElement : false,
- HTMLParamElement : false,
- HTMLPreElement : false,
- HTMLQuoteElement : false,
- HTMLScriptElement : false,
- HTMLSelectElement : false,
- HTMLStyleElement : false,
- HTMLTableCaptionElement : false,
- HTMLTableCellElement : false,
- HTMLTableColElement : false,
- HTMLTableElement : false,
- HTMLTableRowElement : false,
- HTMLTableSectionElement : false,
- HTMLTextAreaElement : false,
- HTMLTitleElement : false,
- HTMLUListElement : false,
- HTMLVideoElement : false,
- history : false,
- Int16Array : false,
- Int32Array : false,
- Int8Array : false,
- Image : false,
- length : false,
- localStorage : false,
- location : false,
- MessageChannel : false,
- MessageEvent : false,
- MessagePort : false,
- moveBy : false,
- moveTo : false,
- name : false,
- navigator : false,
- onbeforeunload : true,
- onblur : true,
- onerror : true,
- onfocus : true,
- onload : true,
- onresize : true,
- onunload : true,
- open : false,
- openDatabase : false,
- opener : false,
- Option : false,
- parent : false,
- print : false,
- removeEventListener : false,
- resizeBy : false,
- resizeTo : false,
- screen : false,
- scroll : false,
- scrollBy : false,
- scrollTo : false,
- sessionStorage : false,
- setInterval : false,
- setTimeout : false,
- SharedWorker : false,
- status : false,
- top : false,
- Uint16Array : false,
- Uint32Array : false,
- Uint8Array : false,
- WebSocket : false,
- window : false,
- Worker : false,
- XMLHttpRequest : false,
- XMLSerializer : false,
- XPathEvaluator : false,
- XPathException : false,
- XPathExpression : false,
- XPathNamespace : false,
- XPathNSResolver : false,
- XPathResult : false
- },
-
- couch = {
- "require" : false,
- respond : false,
- getRow : false,
- emit : false,
- send : false,
- start : false,
- sum : false,
- log : false,
- exports : false,
- module : false,
- provides : false
- },
-
- devel = {
- alert : false,
- confirm : false,
- console : false,
- Debug : false,
- opera : false,
- prompt : false
- },
-
- dojo = {
- dojo : false,
- dijit : false,
- dojox : false,
- define : false,
- "require" : false
- },
-
- escapes = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '/' : '\\/',
- '\\': '\\\\'
- },
-
- funct, // The current function
-
- functionicity = [
- 'closure', 'exception', 'global', 'label',
- 'outer', 'unused', 'var'
- ],
-
- functions, // All of the functions
-
- global, // The global scope
- implied, // Implied globals
- inblock,
- indent,
- jsonmode,
-
- jquery = {
- '$' : false,
- jQuery : false
- },
-
- lines,
- lookahead,
- member,
- membersOnly,
-
- mootools = {
- '$' : false,
- '$$' : false,
- Assets : false,
- Browser : false,
- Chain : false,
- Class : false,
- Color : false,
- Cookie : false,
- Core : false,
- Document : false,
- DomReady : false,
- DOMReady : false,
- Drag : false,
- Element : false,
- Elements : false,
- Event : false,
- Events : false,
- Fx : false,
- Group : false,
- Hash : false,
- HtmlTable : false,
- Iframe : false,
- IframeShim : false,
- InputValidator : false,
- instanceOf : false,
- Keyboard : false,
- Locale : false,
- Mask : false,
- MooTools : false,
- Native : false,
- Options : false,
- OverText : false,
- Request : false,
- Scroller : false,
- Slick : false,
- Slider : false,
- Sortables : false,
- Spinner : false,
- Swiff : false,
- Tips : false,
- Type : false,
- typeOf : false,
- URI : false,
- Window : false
- },
-
- nexttoken,
-
- node = {
- __filename : false,
- __dirname : false,
- Buffer : false,
- console : false,
- exports : false,
- GLOBAL : false,
- global : false,
- module : false,
- process : false,
- require : false,
- setTimeout : false,
- clearTimeout : false,
- setInterval : false,
- clearInterval : false
- },
-
- noreach,
- option,
- predefined, // Global variables defined by option
- prereg,
- prevtoken,
-
- prototypejs = {
- '$' : false,
- '$$' : false,
- '$A' : false,
- '$F' : false,
- '$H' : false,
- '$R' : false,
- '$break' : false,
- '$continue' : false,
- '$w' : false,
- Abstract : false,
- Ajax : false,
- Class : false,
- Enumerable : false,
- Element : false,
- Event : false,
- Field : false,
- Form : false,
- Hash : false,
- Insertion : false,
- ObjectRange : false,
- PeriodicalExecuter: false,
- Position : false,
- Prototype : false,
- Selector : false,
- Template : false,
- Toggle : false,
- Try : false,
- Autocompleter : false,
- Builder : false,
- Control : false,
- Draggable : false,
- Draggables : false,
- Droppables : false,
- Effect : false,
- Sortable : false,
- SortableObserver : false,
- Sound : false,
- Scriptaculous : false
- },
-
- rhino = {
- defineClass : false,
- deserialize : false,
- gc : false,
- help : false,
- importPackage: false,
- "java" : false,
- load : false,
- loadClass : false,
- print : false,
- quit : false,
- readFile : false,
- readUrl : false,
- runCommand : false,
- seal : false,
- serialize : false,
- spawn : false,
- sync : false,
- toint32 : false,
- version : false
- },
-
- scope, // The current scope
- stack,
-
- // standard contains the global names that are provided by the
- // ECMAScript standard.
- standard = {
- Array : false,
- Boolean : false,
- Date : false,
- decodeURI : false,
- decodeURIComponent : false,
- encodeURI : false,
- encodeURIComponent : false,
- Error : false,
- 'eval' : false,
- EvalError : false,
- Function : false,
- hasOwnProperty : false,
- isFinite : false,
- isNaN : false,
- JSON : false,
- Math : false,
- Number : false,
- Object : false,
- parseInt : false,
- parseFloat : false,
- RangeError : false,
- ReferenceError : false,
- RegExp : false,
- String : false,
- SyntaxError : false,
- TypeError : false,
- URIError : false
- },
-
- // widely adopted global names that are not part of ECMAScript standard
- nonstandard = {
- escape : false,
- unescape : false
- },
-
- standard_member = {
- E : true,
- LN2 : true,
- LN10 : true,
- LOG2E : true,
- LOG10E : true,
- MAX_VALUE : true,
- MIN_VALUE : true,
- NEGATIVE_INFINITY : true,
- PI : true,
- POSITIVE_INFINITY : true,
- SQRT1_2 : true,
- SQRT2 : true
- },
-
- directive,
- syntax = {},
- tab,
- token,
- urls,
- useESNextSyntax,
- warnings,
-
- wsh = {
- ActiveXObject : true,
- Enumerator : true,
- GetObject : true,
- ScriptEngine : true,
- ScriptEngineBuildVersion : true,
- ScriptEngineMajorVersion : true,
- ScriptEngineMinorVersion : true,
- VBArray : true,
- WSH : true,
- WScript : true,
- XDomainRequest : true
- };
-
- // Regular expressions. Some of these are stupidly long.
- var ax, cx, tx, nx, nxg, lx, ix, jx, ft;
- (function () {
- /*jshint maxlen:300 */
-
- // unsafe comment or string
- ax = /@cc|<\/?|script|\]\s*\]|<\s*!|&lt/i;
-
- // unsafe characters that are silently deleted by one or more browsers
- cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
-
- // token
- tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jshint|jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/;
-
- // characters in strings that need escapement
- nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
- nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
-
- // star slash
- lx = /\*\/|\/\*/;
-
- // identifier
- ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;
-
- // javascript url
- jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;
-
- // catches /* falls through */ comments
- ft = /^\s*\/\*\s*falls\sthrough\s*\*\/\s*$/;
- }());
-
- function F() {} // Used by Object.create
-
- function is_own(object, name) {
-
-// The object.hasOwnProperty method fails when the property under consideration
-// is named 'hasOwnProperty'. So we have to use this more convoluted form.
-
- return Object.prototype.hasOwnProperty.call(object, name);
- }
-
- function checkOption(name, t) {
- if (valOptions[name] === undefined && boolOptions[name] === undefined) {
- warning("Bad option: '" + name + "'.", t);
- }
- }
-
-// Provide critical ES5 functions to ES3.
-
- if (typeof Array.isArray !== 'function') {
- Array.isArray = function (o) {
- return Object.prototype.toString.apply(o) === '[object Array]';
- };
- }
-
- if (typeof Object.create !== 'function') {
- Object.create = function (o) {
- F.prototype = o;
- return new F();
- };
- }
-
- if (typeof Object.keys !== 'function') {
- Object.keys = function (o) {
- var a = [], k;
- for (k in o) {
- if (is_own(o, k)) {
- a.push(k);
- }
- }
- return a;
- };
- }
-
-// Non standard methods
-
- if (typeof String.prototype.entityify !== 'function') {
- String.prototype.entityify = function () {
- return this
- .replace(/&/g, '&amp;')
- .replace(/</g, '&lt;')
- .replace(/>/g, '&gt;');
- };
- }
-
- if (typeof String.prototype.isAlpha !== 'function') {
- String.prototype.isAlpha = function () {
- return (this >= 'a' && this <= 'z\uffff') ||
- (this >= 'A' && this <= 'Z\uffff');
- };
- }
-
- if (typeof String.prototype.isDigit !== 'function') {
- String.prototype.isDigit = function () {
- return (this >= '0' && this <= '9');
- };
- }
-
- if (typeof String.prototype.supplant !== 'function') {
- String.prototype.supplant = function (o) {
- return this.replace(/\{([^{}]*)\}/g, function (a, b) {
- var r = o[b];
- return typeof r === 'string' || typeof r === 'number' ? r : a;
- });
- };
- }
-
- if (typeof String.prototype.name !== 'function') {
- String.prototype.name = function () {
-
-// If the string looks like an identifier, then we can return it as is.
-// If the string contains no control characters, no quote characters, and no
-// backslash characters, then we can simply slap some quotes around it.
-// Otherwise we must also replace the offending characters with safe
-// sequences.
-
- if (ix.test(this)) {
- return this;
- }
- if (nx.test(this)) {
- return '"' + this.replace(nxg, function (a) {
- var c = escapes[a];
- if (c) {
- return c;
- }
- return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4);
- }) + '"';
- }
- return '"' + this + '"';
- };
- }
-
-
- function combine(t, o) {
- var n;
- for (n in o) {
- if (is_own(o, n)) {
- t[n] = o[n];
- }
- }
- }
-
- function assume() {
- if (option.couch) {
- combine(predefined, couch);
- }
-
- if (option.rhino) {
- combine(predefined, rhino);
- }
-
- if (option.prototypejs) {
- combine(predefined, prototypejs);
- }
-
- if (option.node) {
- combine(predefined, node);
- option.globalstrict = true;
- }
-
- if (option.devel) {
- combine(predefined, devel);
- }
-
- if (option.dojo) {
- combine(predefined, dojo);
- }
-
- if (option.browser) {
- combine(predefined, browser);
- }
-
- if (option.nonstandard) {
- combine(predefined, nonstandard);
- }
-
- if (option.jquery) {
- combine(predefined, jquery);
- }
-
- if (option.mootools) {
- combine(predefined, mootools);
- }
-
- if (option.wsh) {
- combine(predefined, wsh);
- }
-
- if (option.esnext) {
- useESNextSyntax();
- }
-
- if (option.globalstrict && option.strict !== false) {
- option.strict = true;
- }
- }
-
-
- // Produce an error warning.
- function quit(message, line, chr) {
- var percentage = Math.floor((line / lines.length) * 100);
-
- throw {
- name: 'JSHintError',
- line: line,
- character: chr,
- message: message + " (" + percentage + "% scanned).",
- raw: message
- };
- }
-
- function isundef(scope, m, t, a) {
- return JSHINT.undefs.push([scope, m, t, a]);
- }
-
- function warning(m, t, a, b, c, d) {
- var ch, l, w;
- t = t || nexttoken;
- if (t.id === '(end)') { // `~
- t = token;
- }
- l = t.line || 0;
- ch = t.from || 0;
- w = {
- id: '(error)',
- raw: m,
- evidence: lines[l - 1] || '',
- line: l,
- character: ch,
- a: a,
- b: b,
- c: c,
- d: d
- };
- w.reason = m.supplant(w);
- JSHINT.errors.push(w);
- if (option.passfail) {
- quit('Stopping. ', l, ch);
- }
- warnings += 1;
- if (warnings >= option.maxerr) {
- quit("Too many errors.", l, ch);
- }
- return w;
- }
-
- function warningAt(m, l, ch, a, b, c, d) {
- return warning(m, {
- line: l,
- from: ch
- }, a, b, c, d);
- }
-
- function error(m, t, a, b, c, d) {
- var w = warning(m, t, a, b, c, d);
- }
-
- function errorAt(m, l, ch, a, b, c, d) {
- return error(m, {
- line: l,
- from: ch
- }, a, b, c, d);
- }
-
-
-
-// lexical analysis and token construction
-
- var lex = (function lex() {
- var character, from, line, s;
-
-// Private lex methods
-
- function nextLine() {
- var at,
- tw; // trailing whitespace check
-
- if (line >= lines.length)
- return false;
-
- character = 1;
- s = lines[line];
- line += 1;
-
- // If smarttabs option is used check for spaces followed by tabs only.
- // Otherwise check for any occurrence of mixed tabs and spaces.
- if (option.smarttabs)
- at = s.search(/ \t/);
- else
- at = s.search(/ \t|\t /);
-
- if (at >= 0)
- warningAt("Mixed spaces and tabs.", line, at + 1);
-
- s = s.replace(/\t/g, tab);
- at = s.search(cx);
-
- if (at >= 0)
- warningAt("Unsafe character.", line, at);
-
- if (option.maxlen && option.maxlen < s.length)
- warningAt("Line too long.", line, s.length);
-
- // Check for trailing whitespaces
- tw = option.trailing && s.match(/^(.*?)\s+$/);
- if (tw && !/^\s+$/.test(s)) {
- warningAt("Trailing whitespace.", line, tw[1].length + 1);
- }
- return true;
- }
-
-// Produce a token object. The token inherits from a syntax symbol.
-
- function it(type, value) {
- var i, t;
- if (type === '(color)' || type === '(range)') {
- t = {type: type};
- } else if (type === '(punctuator)' ||
- (type === '(identifier)' && is_own(syntax, value))) {
- t = syntax[value] || syntax['(error)'];
- } else {
- t = syntax[type];
- }
- t = Object.create(t);
- if (type === '(string)' || type === '(range)') {
- if (!option.scripturl && jx.test(value)) {
- warningAt("Script URL.", line, from);
- }
- }
- if (type === '(identifier)') {
- t.identifier = true;
- if (value === '__proto__' && !option.proto) {
- warningAt("The '{a}' property is deprecated.",
- line, from, value);
- } else if (value === '__iterator__' && !option.iterator) {
- warningAt("'{a}' is only available in JavaScript 1.7.",
- line, from, value);
- } else if (option.nomen && (value.charAt(0) === '_' ||
- value.charAt(value.length - 1) === '_')) {
- if (!option.node || token.id === '.' ||
- (value !== '__dirname' && value !== '__filename')) {
- warningAt("Unexpected {a} in '{b}'.", line, from, "dangling '_'", value);
- }
- }
- }
- t.value = value;
- t.line = line;
- t.character = character;
- t.from = from;
- i = t.id;
- if (i !== '(endline)') {
- prereg = i &&
- (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
- i === 'return' ||
- i === 'case');
- }
- return t;
- }
-
- // Public lex methods
- return {
- init: function (source) {
- if (typeof source === 'string') {
- lines = source
- .replace(/\r\n/g, '\n')
- .replace(/\r/g, '\n')
- .split('\n');
- } else {
- lines = source;
- }
-
- // If the first line is a shebang (#!), make it a blank and move on.
- // Shebangs are used by Node scripts.
- if (lines[0] && lines[0].substr(0, 2) === '#!')
- lines[0] = '';
-
- line = 0;
- nextLine();
- from = 1;
- },
-
- range: function (begin, end) {
- var c, value = '';
- from = character;
- if (s.charAt(0) !== begin) {
- errorAt("Expected '{a}' and instead saw '{b}'.",
- line, character, begin, s.charAt(0));
- }
- for (;;) {
- s = s.slice(1);
- character += 1;
- c = s.charAt(0);
- switch (c) {
- case '':
- errorAt("Missing '{a}'.", line, character, c);
- break;
- case end:
- s = s.slice(1);
- character += 1;
- return it('(range)', value);
- case '\\':
- warningAt("Unexpected '{a}'.", line, character, c);
- }
- value += c;
- }
-
- },
-
-
- // token -- this is called by advance to get the next token
- token: function () {
- var b, c, captures, d, depth, high, i, l, low, q, t, isLiteral, isInRange, n;
-
- function match(x) {
- var r = x.exec(s), r1;
- if (r) {
- l = r[0].length;
- r1 = r[1];
- c = r1.charAt(0);
- s = s.substr(l);
- from = character + l - r1.length;
- character += l;
- return r1;
- }
- }
-
- function string(x) {
- var c, j, r = '', allowNewLine = false;
-
- if (jsonmode && x !== '"') {
- warningAt("Strings must use doublequote.",
- line, character);
- }
-
- function esc(n) {
- var i = parseInt(s.substr(j + 1, n), 16);
- j += n;
- if (i >= 32 && i <= 126 &&
- i !== 34 && i !== 92 && i !== 39) {
- warningAt("Unnecessary escapement.", line, character);
- }
- character += n;
- c = String.fromCharCode(i);
- }
- j = 0;
-unclosedString: for (;;) {
- while (j >= s.length) {
- j = 0;
-
- var cl = line, cf = from;
- if (!nextLine()) {
- errorAt("Unclosed string.", cl, cf);
- break unclosedString;
- }
-
- if (allowNewLine) {
- allowNewLine = false;
- } else {
- warningAt("Unclosed string.", cl, cf);
- }
- }
- c = s.charAt(j);
- if (c === x) {
- character += 1;
- s = s.substr(j + 1);
- return it('(string)', r, x);
- }
- if (c < ' ') {
- if (c === '\n' || c === '\r') {
- break;
- }
- warningAt("Control character in string: {a}.",
- line, character + j, s.slice(0, j));
- } else if (c === '\\') {
- j += 1;
- character += 1;
- c = s.charAt(j);
- n = s.charAt(j + 1);
- switch (c) {
- case '\\':
- case '"':
- case '/':
- break;
- case '\'':
- if (jsonmode) {
- warningAt("Avoid \\'.", line, character);
- }
- break;
- case 'b':
- c = '\b';
- break;
- case 'f':
- c = '\f';
- break;
- case 'n':
- c = '\n';
- break;
- case 'r':
- c = '\r';
- break;
- case 't':
- c = '\t';
- break;
- case '0':
- c = '\0';
- // Octal literals fail in strict mode
- // check if the number is between 00 and 07
- // where 'n' is the token next to 'c'
- if (n >= 0 && n <= 7 && directive["use strict"]) {
- warningAt(
- "Octal literals are not allowed in strict mode.",
- line, character);
- }
- break;
- case 'u':
- esc(4);
- break;
- case 'v':
- if (jsonmode) {
- warningAt("Avoid \\v.", line, character);
- }
- c = '\v';
- break;
- case 'x':
- if (jsonmode) {
- warningAt("Avoid \\x-.", line, character);
- }
- esc(2);
- break;
- case '':
- // last character is escape character
- // always allow new line if escaped, but show
- // warning if option is not set
- allowNewLine = true;
- if (option.multistr) {
- if (jsonmode) {
- warningAt("Avoid EOL escapement.", line, character);
- }
- c = '';
- character -= 1;
- break;
- }
- warningAt("Bad escapement of EOL. Use option multistr if needed.",
- line, character);
- break;
- default:
- warningAt("Bad escapement.", line, character);
- }
- }
- r += c;
- character += 1;
- j += 1;
- }
- }
-
- for (;;) {
- if (!s) {
- return it(nextLine() ? '(endline)' : '(end)', '');
- }
- t = match(tx);
- if (!t) {
- t = '';
- c = '';
- while (s && s < '!') {
- s = s.substr(1);
- }
- if (s) {
- errorAt("Unexpected '{a}'.", line, character, s.substr(0, 1));
- s = '';
- }
- } else {
-
- // identifier
-
- if (c.isAlpha() || c === '_' || c === '$') {
- return it('(identifier)', t);
- }
-
- // number
-
- if (c.isDigit()) {
- if (!isFinite(Number(t))) {
- warningAt("Bad number '{a}'.",
- line, character, t);
- }
- if (s.substr(0, 1).isAlpha()) {
- warningAt("Missing space after '{a}'.",
- line, character, t);
- }
- if (c === '0') {
- d = t.substr(1, 1);
- if (d.isDigit()) {
- if (token.id !== '.') {
- warningAt("Don't use extra leading zeros '{a}'.",
- line, character, t);
- }
- } else if (jsonmode && (d === 'x' || d === 'X')) {
- warningAt("Avoid 0x-. '{a}'.",
- line, character, t);
- }
- }
- if (t.substr(t.length - 1) === '.') {
- warningAt(
-"A trailing decimal point can be confused with a dot '{a}'.", line, character, t);
- }
- return it('(number)', t);
- }
- switch (t) {
-
- // string
-
- case '"':
- case "'":
- return string(t);
-
- // // comment
-
- case '//':
- s = '';
- token.comment = true;
- break;
-
- // /* comment
-
- case '/*':
- for (;;) {
- i = s.search(lx);
- if (i >= 0) {
- break;
- }
- if (!nextLine()) {
- errorAt("Unclosed comment.", line, character);
- }
- }
- character += i + 2;
- if (s.substr(i, 1) === '/') {
- errorAt("Nested comment.", line, character);
- }
- s = s.substr(i + 2);
- token.comment = true;
- break;
-
- // /*members /*jshint /*global
-
- case '/*members':
- case '/*member':
- case '/*jshint':
- case '/*jslint':
- case '/*global':
- case '*/':
- return {
- value: t,
- type: 'special',
- line: line,
- character: character,
- from: from
- };
-
- case '':
- break;
- // /
- case '/':
- if (token.id === '/=') {
- errorAt("A regular expression literal can be confused with '/='.",
- line, from);
- }
- if (prereg) {
- depth = 0;
- captures = 0;
- l = 0;
- for (;;) {
- b = true;
- c = s.charAt(l);
- l += 1;
- switch (c) {
- case '':
- errorAt("Unclosed regular expression.", line, from);
- return quit('Stopping.', line, from);
- case '/':
- if (depth > 0) {
- warningAt("{a} unterminated regular expression " +
- "group(s).", line, from + l, depth);
- }
- c = s.substr(0, l - 1);
- q = {
- g: true,
- i: true,
- m: true
- };
- while (q[s.charAt(l)] === true) {
- q[s.charAt(l)] = false;
- l += 1;
- }
- character += l;
- s = s.substr(l);
- q = s.charAt(0);
- if (q === '/' || q === '*') {
- errorAt("Confusing regular expression.",
- line, from);
- }
- return it('(regexp)', c);
- case '\\':
- c = s.charAt(l);
- if (c < ' ') {
- warningAt(
-"Unexpected control character in regular expression.", line, from + l);
- } else if (c === '<') {
- warningAt(
-"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
- }
- l += 1;
- break;
- case '(':
- depth += 1;
- b = false;
- if (s.charAt(l) === '?') {
- l += 1;
- switch (s.charAt(l)) {
- case ':':
- case '=':
- case '!':
- l += 1;
- break;
- default:
- warningAt(
-"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l));
- }
- } else {
- captures += 1;
- }
- break;
- case '|':
- b = false;
- break;
- case ')':
- if (depth === 0) {
- warningAt("Unescaped '{a}'.",
- line, from + l, ')');
- } else {
- depth -= 1;
- }
- break;
- case ' ':
- q = 1;
- while (s.charAt(l) === ' ') {
- l += 1;
- q += 1;
- }
- if (q > 1) {
- warningAt(
-"Spaces are hard to count. Use {{a}}.", line, from + l, q);
- }
- break;
- case '[':
- c = s.charAt(l);
- if (c === '^') {
- l += 1;
- if (option.regexp) {
- warningAt("Insecure '{a}'.",
- line, from + l, c);
- } else if (s.charAt(l) === ']') {
- errorAt("Unescaped '{a}'.",
- line, from + l, '^');
- }
- }
- if (c === ']') {
- warningAt("Empty class.", line,
- from + l - 1);
- }
- isLiteral = false;
- isInRange = false;
-klass: do {
- c = s.charAt(l);
- l += 1;
- switch (c) {
- case '[':
- case '^':
- warningAt("Unescaped '{a}'.",
- line, from + l, c);
- if (isInRange) {
- isInRange = false;
- } else {
- isLiteral = true;
- }
- break;
- case '-':
- if (isLiteral && !isInRange) {
- isLiteral = false;
- isInRange = true;
- } else if (isInRange) {
- isInRange = false;
- } else if (s.charAt(l) === ']') {
- isInRange = true;
- } else {
- if (option.regexdash !== (l === 2 || (l === 3 &&
- s.charAt(1) === '^'))) {
- warningAt("Unescaped '{a}'.",
- line, from + l - 1, '-');
- }
- isLiteral = true;
- }
- break;
- case ']':
- if (isInRange && !option.regexdash) {
- warningAt("Unescaped '{a}'.",
- line, from + l - 1, '-');
- }
- break klass;
- case '\\':
- c = s.charAt(l);
- if (c < ' ') {
- warningAt(
-"Unexpected control character in regular expression.", line, from + l);
- } else if (c === '<') {
- warningAt(
-"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
- }
- l += 1;
-
- // \w, \s and \d are never part of a character range
- if (/[wsd]/i.test(c)) {
- if (isInRange) {
- warningAt("Unescaped '{a}'.",
- line, from + l, '-');
- isInRange = false;
- }
- isLiteral = false;
- } else if (isInRange) {
- isInRange = false;
- } else {
- isLiteral = true;
- }
- break;
- case '/':
- warningAt("Unescaped '{a}'.",
- line, from + l - 1, '/');
-
- if (isInRange) {
- isInRange = false;
- } else {
- isLiteral = true;
- }
- break;
- case '<':
- if (isInRange) {
- isInRange = false;
- } else {
- isLiteral = true;
- }
- break;
- default:
- if (isInRange) {
- isInRange = false;
- } else {
- isLiteral = true;
- }
- }
- } while (c);
- break;
- case '.':
- if (option.regexp) {
- warningAt("Insecure '{a}'.", line,
- from + l, c);
- }
- break;
- case ']':
- case '?':
- case '{':
- case '}':
- case '+':
- case '*':
- warningAt("Unescaped '{a}'.", line,
- from + l, c);
- }
- if (b) {
- switch (s.charAt(l)) {
- case '?':
- case '+':
- case '*':
- l += 1;
- if (s.charAt(l) === '?') {
- l += 1;
- }
- break;
- case '{':
- l += 1;
- c = s.charAt(l);
- if (c < '0' || c > '9') {
- warningAt(
-"Expected a number and instead saw '{a}'.", line, from + l, c);
- }
- l += 1;
- low = +c;
- for (;;) {
- c = s.charAt(l);
- if (c < '0' || c > '9') {
- break;
- }
- l += 1;
- low = +c + (low * 10);
- }
- high = low;
- if (c === ',') {
- l += 1;
- high = Infinity;
- c = s.charAt(l);
- if (c >= '0' && c <= '9') {
- l += 1;
- high = +c;
- for (;;) {
- c = s.charAt(l);
- if (c < '0' || c > '9') {
- break;
- }
- l += 1;
- high = +c + (high * 10);
- }
- }
- }
- if (s.charAt(l) !== '}') {
- warningAt(
-"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c);
- } else {
- l += 1;
- }
- if (s.charAt(l) === '?') {
- l += 1;
- }
- if (low > high) {
- warningAt(
-"'{a}' should not be greater than '{b}'.", line, from + l, low, high);
- }
- }
- }
- }
- c = s.substr(0, l - 1);
- character += l;
- s = s.substr(l);
- return it('(regexp)', c);
- }
- return it('(punctuator)', t);
-
- // punctuator
-
- case '#':
- return it('(punctuator)', t);
- default:
- return it('(punctuator)', t);
- }
- }
- }
- }
- };
- }());
-
-
- function addlabel(t, type) {
-
- if (t === 'hasOwnProperty') {
- warning("'hasOwnProperty' is a really bad name.");
- }
-
-// Define t in the current function in the current scope.
- if (is_own(funct, t) && !funct['(global)']) {
- if (funct[t] === true) {
- if (option.latedef)
- warning("'{a}' was used before it was defined.", nexttoken, t);
- } else {
- if (!option.shadow && type !== "exception")
- warning("'{a}' is already defined.", nexttoken, t);
- }
- }
-
- funct[t] = type;
- if (funct['(global)']) {
- global[t] = funct;
- if (is_own(implied, t)) {
- if (option.latedef)
- warning("'{a}' was used before it was defined.", nexttoken, t);
- delete implied[t];
- }
- } else {
- scope[t] = funct;
- }
- }
-
-
- function doOption() {
- var b, obj, filter, o = nexttoken.value, t, v;
-
- switch (o) {
- case '*/':
- error("Unbegun comment.");
- break;
- case '/*members':
- case '/*member':
- o = '/*members';
- if (!membersOnly) {
- membersOnly = {};
- }
- obj = membersOnly;
- break;
- case '/*jshint':
- case '/*jslint':
- obj = option;
- filter = boolOptions;
- break;
- case '/*global':
- obj = predefined;
- break;
- default:
- error("What?");
- }
-
- t = lex.token();
-loop: for (;;) {
- for (;;) {
- if (t.type === 'special' && t.value === '*/') {
- break loop;
- }
- if (t.id !== '(endline)' && t.id !== ',') {
- break;
- }
- t = lex.token();
- }
- if (t.type !== '(string)' && t.type !== '(identifier)' &&
- o !== '/*members') {
- error("Bad option.", t);
- }
-
- v = lex.token();
- if (v.id === ':') {
- v = lex.token();
-
- if (obj === membersOnly) {
- error("Expected '{a}' and instead saw '{b}'.",
- t, '*/', ':');
- }
-
- if (o === '/*jshint') {
- checkOption(t.value, t);
- }
-
- if (t.value === 'indent' && (o === '/*jshint' || o === '/*jslint')) {
- b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
- Math.floor(b) !== b) {
- error("Expected a small integer and instead saw '{a}'.",
- v, v.value);
- }
- obj.white = true;
- obj.indent = b;
- } else if (t.value === 'maxerr' && (o === '/*jshint' || o === '/*jslint')) {
- b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
- Math.floor(b) !== b) {
- error("Expected a small integer and instead saw '{a}'.",
- v, v.value);
- }
- obj.maxerr = b;
- } else if (t.value === 'maxlen' && (o === '/*jshint' || o === '/*jslint')) {
- b = +v.value;
- if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
- Math.floor(b) !== b) {
- error("Expected a small integer and instead saw '{a}'.",
- v, v.value);
- }
- obj.maxlen = b;
- } else if (t.value === 'validthis') {
- if (funct['(global)']) {
- error("Option 'validthis' can't be used in a global scope.");
- } else {
- if (v.value === 'true' || v.value === 'false')
- obj[t.value] = v.value === 'true';
- else
- error("Bad option value.", v);
- }
- } else if (v.value === 'true') {
- obj[t.value] = true;
- } else if (v.value === 'false') {
- obj[t.value] = false;
- } else {
- error("Bad option value.", v);
- }
- t = lex.token();
- } else {
- if (o === '/*jshint' || o === '/*jslint') {
- error("Missing option value.", t);
- }
- obj[t.value] = false;
- t = v;
- }
- }
- if (filter) {
- assume();
- }
- }
-
-
-// We need a peek function. If it has an argument, it peeks that much farther
-// ahead. It is used to distinguish
-// for ( var i in ...
-// from
-// for ( var i = ...
-
- function peek(p) {
- var i = p || 0, j = 0, t;
-
- while (j <= i) {
- t = lookahead[j];
- if (!t) {
- t = lookahead[j] = lex.token();
- }
- j += 1;
- }
- return t;
- }
-
-
-
-// Produce the next token. It looks for programming errors.
-
- function advance(id, t) {
- switch (token.id) {
- case '(number)':
- if (nexttoken.id === '.') {
- warning("A dot following a number can be confused with a decimal point.", token);
- }
- break;
- case '-':
- if (nexttoken.id === '-' || nexttoken.id === '--') {
- warning("Confusing minusses.");
- }
- break;
- case '+':
- if (nexttoken.id === '+' || nexttoken.id === '++') {
- warning("Confusing plusses.");
- }
- break;
- }
-
- if (token.type === '(string)' || token.identifier) {
- anonname = token.value;
- }
-
- if (id && nexttoken.id !== id) {
- if (t) {
- if (nexttoken.id === '(end)') {
- warning("Unmatched '{a}'.", t, t.id);
- } else {
- warning("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
- nexttoken, id, t.id, t.line, nexttoken.value);
- }
- } else if (nexttoken.type !== '(identifier)' ||
- nexttoken.value !== id) {
- warning("Expected '{a}' and instead saw '{b}'.",
- nexttoken, id, nexttoken.value);
- }
- }
-
- prevtoken = token;
- token = nexttoken;
- for (;;) {
- nexttoken = lookahead.shift() || lex.token();
- if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
- return;
- }
- if (nexttoken.type === 'special') {
- doOption();
- } else {
- if (nexttoken.id !== '(endline)') {
- break;
- }
- }
- }
- }
-
-
-// This is the heart of JSHINT, the Pratt parser. In addition to parsing, it
-// is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is
-// like .nud except that it is only used on the first token of a statement.
-// Having .fud makes it much easier to define statement-oriented languages like
-// JavaScript. I retained Pratt's nomenclature.
-
-// .nud Null denotation
-// .fud First null denotation
-// .led Left denotation
-// lbp Left binding power
-// rbp Right binding power
-
-// They are elements of the parsing method called Top Down Operator Precedence.
-
- function expression(rbp, initial) {
- var left, isArray = false, isObject = false;
-
- if (nexttoken.id === '(end)')
- error("Unexpected early end of program.", token);
-
- advance();
- if (initial) {
- anonname = 'anonymous';
- funct['(verb)'] = token.value;
- }
- if (initial === true && token.fud) {
- left = token.fud();
- } else {
- if (token.nud) {
- left = token.nud();
- } else {
- if (nexttoken.type === '(number)' && token.id === '.') {
- warning("A leading decimal point can be confused with a dot: '.{a}'.",
- token, nexttoken.value);
- advance();
- return token;
- } else {
- error("Expected an identifier and instead saw '{a}'.",
- token, token.id);
- }
- }
- while (rbp < nexttoken.lbp) {
- isArray = token.value === 'Array';
- isObject = token.value === 'Object';
- advance();
- if (isArray && token.id === '(' && nexttoken.id === ')')
- warning("Use the array literal notation [].", token);
- if (isObject && token.id === '(' && nexttoken.id === ')')
- warning("Use the object literal notation {}.", token);
- if (token.led) {
- left = token.led(left);
- } else {
- error("Expected an operator and instead saw '{a}'.",
- token, token.id);
- }
- }
- }
- return left;
- }
-
-
-// Functions for conformance of style.
-
- function adjacent(left, right) {
- left = left || token;
- right = right || nexttoken;
- if (option.white) {
- if (left.character !== right.from && left.line === right.line) {
- left.from += (left.character - left.from);
- warning("Unexpected space after '{a}'.", left, left.value);
- }
- }
- }
-
- function nobreak(left, right) {
- left = left || token;
- right = right || nexttoken;
- if (option.white && (left.character !== right.from || left.line !== right.line)) {
- warning("Unexpected space before '{a}'.", right, right.value);
- }
- }
-
- function nospace(left, right) {
- left = left || token;
- right = right || nexttoken;
- if (option.white && !left.comment) {
- if (left.line === right.line) {
- adjacent(left, right);
- }
- }
- }
-
- function nonadjacent(left, right) {
- if (option.white) {
- left = left || token;
- right = right || nexttoken;
- if (left.line === right.line && left.character === right.from) {
- left.from += (left.character - left.from);
- warning("Missing space after '{a}'.",
- left, left.value);
- }
- }
- }
-
- function nobreaknonadjacent(left, right) {
- left = left || token;
- right = right || nexttoken;
- if (!option.laxbreak && left.line !== right.line) {
- warning("Bad line breaking before '{a}'.", right, right.id);
- } else if (option.white) {
- left = left || token;
- right = right || nexttoken;
- if (left.character === right.from) {
- left.from += (left.character - left.from);
- warning("Missing space after '{a}'.",
- left, left.value);
- }
- }
- }
-
- function indentation(bias) {
- var i;
- if (option.white && nexttoken.id !== '(end)') {
- i = indent + (bias || 0);
- if (nexttoken.from !== i) {
- warning(
-"Expected '{a}' to have an indentation at {b} instead at {c}.",
- nexttoken, nexttoken.value, i, nexttoken.from);
- }
- }
- }
-
- function nolinebreak(t) {
- t = t || token;
- if (t.line !== nexttoken.line) {
- warning("Line breaking error '{a}'.", t, t.value);
- }
- }
-
-
- function comma() {
- if (token.line !== nexttoken.line) {
- if (!option.laxcomma) {
- if (comma.first) {
- warning("Comma warnings can be turned off with 'laxcomma'");
- comma.first = false;
- }
- warning("Bad line breaking before '{a}'.", token, nexttoken.id);
- }
- } else if (!token.comment && token.character !== nexttoken.from && option.white) {
- token.from += (token.character - token.from);
- warning("Unexpected space after '{a}'.", token, token.value);
- }
- advance(',');
- nonadjacent(token, nexttoken);
- }
-
-
-// Functional constructors for making the symbols that will be inherited by
-// tokens.
-
- function symbol(s, p) {
- var x = syntax[s];
- if (!x || typeof x !== 'object') {
- syntax[s] = x = {
- id: s,
- lbp: p,
- value: s
- };
- }
- return x;
- }
-
-
- function delim(s) {
- return symbol(s, 0);
- }
-
-
- function stmt(s, f) {
- var x = delim(s);
- x.identifier = x.reserved = true;
- x.fud = f;
- return x;
- }
-
-
- function blockstmt(s, f) {
- var x = stmt(s, f);
- x.block = true;
- return x;
- }
-
-
- function reserveName(x) {
- var c = x.id.charAt(0);
- if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
- x.identifier = x.reserved = true;
- }
- return x;
- }
-
-
- function prefix(s, f) {
- var x = symbol(s, 150);
- reserveName(x);
- x.nud = (typeof f === 'function') ? f : function () {
- this.right = expression(150);
- this.arity = 'unary';
- if (this.id === '++' || this.id === '--') {
- if (option.plusplus) {
- warning("Unexpected use of '{a}'.", this, this.id);
- } else if ((!this.right.identifier || this.right.reserved) &&
- this.right.id !== '.' && this.right.id !== '[') {
- warning("Bad operand.", this);
- }
- }
- return this;
- };
- return x;
- }
-
-
- function type(s, f) {
- var x = delim(s);
- x.type = s;
- x.nud = f;
- return x;
- }
-
-
- function reserve(s, f) {
- var x = type(s, f);
- x.identifier = x.reserved = true;
- return x;
- }
-
-
- function reservevar(s, v) {
- return reserve(s, function () {
- if (typeof v === 'function') {
- v(this);
- }
- return this;
- });
- }
-
-
- function infix(s, f, p, w) {
- var x = symbol(s, p);
- reserveName(x);
- x.led = function (left) {
- if (!w) {
- nobreaknonadjacent(prevtoken, token);
- nonadjacent(token, nexttoken);
- }
- if (s === "in" && left.id === "!") {
- warning("Confusing use of '{a}'.", left, '!');
- }
- if (typeof f === 'function') {
- return f(left, this);
- } else {
- this.left = left;
- this.right = expression(p);
- return this;
- }
- };
- return x;
- }
-
-
- function relation(s, f) {
- var x = symbol(s, 100);
- x.led = function (left) {
- nobreaknonadjacent(prevtoken, token);
- nonadjacent(token, nexttoken);
- var right = expression(100);
- if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) {
- warning("Use the isNaN function to compare with NaN.", this);
- } else if (f) {
- f.apply(this, [left, right]);
- }
- if (left.id === '!') {
- warning("Confusing use of '{a}'.", left, '!');
- }
- if (right.id === '!') {
- warning("Confusing use of '{a}'.", right, '!');
- }
- this.left = left;
- this.right = right;
- return this;
- };
- return x;
- }
-
-
- function isPoorRelation(node) {
- return node &&
- ((node.type === '(number)' && +node.value === 0) ||
- (node.type === '(string)' && node.value === '') ||
- (node.type === 'null' && !option.eqnull) ||
- node.type === 'true' ||
- node.type === 'false' ||
- node.type === 'undefined');
- }
-
-
- function assignop(s, f) {
- symbol(s, 20).exps = true;
- return infix(s, function (left, that) {
- var l;
- that.left = left;
- if (predefined[left.value] === false &&
- scope[left.value]['(global)'] === true) {
- warning("Read only.", left);
- } else if (left['function']) {
- warning("'{a}' is a function.", left, left.value);
- }
- if (left) {
- if (option.esnext && funct[left.value] === 'const') {
- warning("Attempting to override '{a}' which is a constant", left, left.value);
- }
- if (left.id === '.' || left.id === '[') {
- if (!left.left || left.left.value === 'arguments') {
- warning('Bad assignment.', that);
- }
- that.right = expression(19);
- return that;
- } else if (left.identifier && !left.reserved) {
- if (funct[left.value] === 'exception') {
- warning("Do not assign to the exception parameter.", left);
- }
- that.right = expression(19);
- return that;
- }
- if (left === syntax['function']) {
- warning(
-"Expected an identifier in an assignment and instead saw a function invocation.",
- token);
- }
- }
- error("Bad assignment.", that);
- }, 20);
- }
-
-
- function bitwise(s, f, p) {
- var x = symbol(s, p);
- reserveName(x);
- x.led = (typeof f === 'function') ? f : function (left) {
- if (option.bitwise) {
- warning("Unexpected use of '{a}'.", this, this.id);
- }
- this.left = left;
- this.right = expression(p);
- return this;
- };
- return x;
- }
-
-
- function bitwiseassignop(s) {
- symbol(s, 20).exps = true;
- return infix(s, function (left, that) {
- if (option.bitwise) {
- warning("Unexpected use of '{a}'.", that, that.id);
- }
- nonadjacent(prevtoken, token);
- nonadjacent(token, nexttoken);
- if (left) {
- if (left.id === '.' || left.id === '[' ||
- (left.identifier && !left.reserved)) {
- expression(19);
- return that;
- }
- if (left === syntax['function']) {
- warning(
-"Expected an identifier in an assignment, and instead saw a function invocation.",
- token);
- }
- return that;
- }
- error("Bad assignment.", that);
- }, 20);
- }
-
-
- function suffix(s, f) {
- var x = symbol(s, 150);
- x.led = function (left) {
- if (option.plusplus) {
- warning("Unexpected use of '{a}'.", this, this.id);
- } else if ((!left.identifier || left.reserved) &&
- left.id !== '.' && left.id !== '[') {
- warning("Bad operand.", this);
- }
- this.left = left;
- return this;
- };
- return x;
- }
-
-
- // fnparam means that this identifier is being defined as a function
- // argument (see identifier())
- function optionalidentifier(fnparam) {
- if (nexttoken.identifier) {
- advance();
- if (token.reserved && !option.es5) {
- // `undefined` as a function param is a common pattern to protect
- // against the case when somebody does `undefined = true` and
- // help with minification. More info: https://gist.github.com/315916
- if (!fnparam || token.value !== 'undefined') {
- warning("Expected an identifier and instead saw '{a}' (a reserved word).",
- token, token.id);
- }
- }
- return token.value;
- }
- }
-
- // fnparam means that this identifier is being defined as a function
- // argument
- function identifier(fnparam) {
- var i = optionalidentifier(fnparam);
- if (i) {
- return i;
- }
- if (token.id === 'function' && nexttoken.id === '(') {
- warning("Missing name in function declaration.");
- } else {
- error("Expected an identifier and instead saw '{a}'.",
- nexttoken, nexttoken.value);
- }
- }
-
-
- function reachable(s) {
- var i = 0, t;
- if (nexttoken.id !== ';' || noreach) {
- return;
- }
- for (;;) {
- t = peek(i);
- if (t.reach) {
- return;
- }
- if (t.id !== '(endline)') {
- if (t.id === 'function') {
- if (!option.latedef) {
- break;
- }
- warning(
-"Inner functions should be listed at the top of the outer function.", t);
- break;
- }
- warning("Unreachable '{a}' after '{b}'.", t, t.value, s);
- break;
- }
- i += 1;
- }
- }
-
-
- function statement(noindent) {
- var i = indent, r, s = scope, t = nexttoken;
-
- if (t.id === ";") {
- advance(";");
- return;
- }
-
-// Is this a labelled statement?
-
- if (t.identifier && !t.reserved && peek().id === ':') {
- advance();
- advance(':');
- scope = Object.create(s);
- addlabel(t.value, 'label');
- if (!nexttoken.labelled) {
- warning("Label '{a}' on {b} statement.",
- nexttoken, t.value, nexttoken.value);
- }
- if (jx.test(t.value + ':')) {
- warning("Label '{a}' looks like a javascript url.",
- t, t.value);
- }
- nexttoken.label = t.value;
- t = nexttoken;
- }
-
-// Parse the statement.
-
- if (!noindent) {
- indentation();
- }
- r = expression(0, true);
-
- // Look for the final semicolon.
- if (!t.block) {
- if (!option.expr && (!r || !r.exps)) {
- warning("Expected an assignment or function call and instead saw an expression.",
- token);
- } else if (option.nonew && r.id === '(' && r.left.id === 'new') {
- warning("Do not use 'new' for side effects.");
- }
-
- if (nexttoken.id === ',') {
- return comma();
- }
-
- if (nexttoken.id !== ';') {
- if (!option.asi) {
- // If this is the last statement in a block that ends on
- // the same line *and* option lastsemic is on, ignore the warning.
- // Otherwise, complain about missing semicolon.
- if (!option.lastsemic || nexttoken.id !== '}' ||
- nexttoken.line !== token.line) {
- warningAt("Missing semicolon.", token.line, token.character);
- }
- }
- } else {
- adjacent(token, nexttoken);
- advance(';');
- nonadjacent(token, nexttoken);
- }
- }
-
-// Restore the indentation.
-
- indent = i;
- scope = s;
- return r;
- }
-
-
- function statements(startLine) {
- var a = [], f, p;
-
- while (!nexttoken.reach && nexttoken.id !== '(end)') {
- if (nexttoken.id === ';') {
- p = peek();
- if (!p || p.id !== "(") {
- warning("Unnecessary semicolon.");
- }
- advance(';');
- } else {
- a.push(statement(startLine === nexttoken.line));
- }
- }
- return a;
- }
-
-
- /*
- * read all directives
- * recognizes a simple form of asi, but always
- * warns, if it is used
- */
- function directives() {
- var i, p, pn;
-
- for (;;) {
- if (nexttoken.id === "(string)") {
- p = peek(0);
- if (p.id === "(endline)") {
- i = 1;
- do {
- pn = peek(i);
- i = i + 1;
- } while (pn.id === "(endline)");
-
- if (pn.id !== ";") {
- if (pn.id !== "(string)" && pn.id !== "(number)" &&
- pn.id !== "(regexp)" && pn.identifier !== true &&
- pn.id !== "}") {
- break;
- }
- warning("Missing semicolon.", nexttoken);
- } else {
- p = pn;
- }
- } else if (p.id === "}") {
- // directive with no other statements, warn about missing semicolon
- warning("Missing semicolon.", p);
- } else if (p.id !== ";") {
- break;
- }
-
- indentation();
- advance();
- if (directive[token.value]) {
- warning("Unnecessary directive \"{a}\".", token, token.value);
- }
-
- if (token.value === "use strict") {
- option.newcap = true;
- option.undef = true;
- }
-
- // there's no directive negation, so always set to true
- directive[token.value] = true;
-
- if (p.id === ";") {
- advance(";");
- }
- continue;
- }
- break;
- }
- }
-
-
- /*
- * Parses a single block. A block is a sequence of statements wrapped in
- * braces.
- *
- * ordinary - true for everything but function bodies and try blocks.
- * stmt - true if block can be a single statement (e.g. in if/for/while).
- * isfunc - true if block is a function body
- */
- function block(ordinary, stmt, isfunc) {
- var a,
- b = inblock,
- old_indent = indent,
- m,
- s = scope,
- t,
- line,
- d;
-
- inblock = ordinary;
- if (!ordinary || !option.funcscope) scope = Object.create(scope);
- nonadjacent(token, nexttoken);
- t = nexttoken;
-
- if (nexttoken.id === '{') {
- advance('{');
- line = token.line;
- if (nexttoken.id !== '}') {
- indent += option.indent;
- while (!ordinary && nexttoken.from > indent) {
- indent += option.indent;
- }
-
- if (isfunc) {
- m = {};
- for (d in directive) {
- if (is_own(directive, d)) {
- m[d] = directive[d];
- }
- }
- directives();
-
- if (option.strict && funct['(context)']['(global)']) {
- if (!m["use strict"] && !directive["use strict"]) {
- warning("Missing \"use strict\" statement.");
- }
- }
- }
-
- a = statements(line);
-
- if (isfunc) {
- directive = m;
- }
-
- indent -= option.indent;
- if (line !== nexttoken.line) {
- indentation();
- }
- } else if (line !== nexttoken.line) {
- indentation();
- }
- advance('}', t);
- indent = old_indent;
- } else if (!ordinary) {
- error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, '{', nexttoken.value);
- } else {
- if (!stmt || option.curly)
- warning("Expected '{a}' and instead saw '{b}'.",
- nexttoken, '{', nexttoken.value);
-
- noreach = true;
- indent += option.indent;
- // test indentation only if statement is in new line
- a = [statement(nexttoken.line === token.line)];
- indent -= option.indent;
- noreach = false;
- }
- funct['(verb)'] = null;
- if (!ordinary || !option.funcscope) scope = s;
- inblock = b;
- if (ordinary && option.noempty && (!a || a.length === 0)) {
- warning("Empty block.");
- }
- return a;
- }
-
-
- function countMember(m) {
- if (membersOnly && typeof membersOnly[m] !== 'boolean') {
- warning("Unexpected /*member '{a}'.", token, m);
- }
- if (typeof member[m] === 'number') {
- member[m] += 1;
- } else {
- member[m] = 1;
- }
- }
-
-
- function note_implied(token) {
- var name = token.value, line = token.line, a = implied[name];
- if (typeof a === 'function') {
- a = false;
- }
-
- if (!a) {
- a = [line];
- implied[name] = a;
- } else if (a[a.length - 1] !== line) {
- a.push(line);
- }
- }
-
-
- // Build the syntax table by declaring the syntactic elements of the language.
-
- type('(number)', function () {
- return this;
- });
-
- type('(string)', function () {
- return this;
- });
-
- syntax['(identifier)'] = {
- type: '(identifier)',
- lbp: 0,
- identifier: true,
- nud: function () {
- var v = this.value,
- s = scope[v],
- f;
-
- if (typeof s === 'function') {
- // Protection against accidental inheritance.
- s = undefined;
- } else if (typeof s === 'boolean') {
- f = funct;
- funct = functions[0];
- addlabel(v, 'var');
- s = funct;
- funct = f;
- }
-
- // The name is in scope and defined in the current function.
- if (funct === s) {
- // Change 'unused' to 'var', and reject labels.
- switch (funct[v]) {
- case 'unused':
- funct[v] = 'var';
- break;
- case 'unction':
- funct[v] = 'function';
- this['function'] = true;
- break;
- case 'function':
- this['function'] = true;
- break;
- case 'label':
- warning("'{a}' is a statement label.", token, v);
- break;
- }
- } else if (funct['(global)']) {
- // The name is not defined in the function. If we are in the global
- // scope, then we have an undefined variable.
- //
- // Operators typeof and delete do not raise runtime errors even if
- // the base object of a reference is null so no need to display warning
- // if we're inside of typeof or delete.
-
- if (option.undef && typeof predefined[v] !== 'boolean') {
- // Attempting to subscript a null reference will throw an
- // error, even within the typeof and delete operators
- if (!(anonname === 'typeof' || anonname === 'delete') ||
- (nexttoken && (nexttoken.value === '.' || nexttoken.value === '['))) {
-
- isundef(funct, "'{a}' is not defined.", token, v);
- }
- }
- note_implied(token);
- } else {
- // If the name is already defined in the current
- // function, but not as outer, then there is a scope error.
-
- switch (funct[v]) {
- case 'closure':
- case 'function':
- case 'var':
- case 'unused':
- warning("'{a}' used out of scope.", token, v);
- break;
- case 'label':
- warning("'{a}' is a statement label.", token, v);
- break;
- case 'outer':
- case 'global':
- break;
- default:
- // If the name is defined in an outer function, make an outer entry,
- // and if it was unused, make it var.
- if (s === true) {
- funct[v] = true;
- } else if (s === null) {
- warning("'{a}' is not allowed.", token, v);
- note_implied(token);
- } else if (typeof s !== 'object') {
- // Operators typeof and delete do not raise runtime errors even
- // if the base object of a reference is null so no need to
- // display warning if we're inside of typeof or delete.
- if (option.undef) {
- // Attempting to subscript a null reference will throw an
- // error, even within the typeof and delete operators
- if (!(anonname === 'typeof' || anonname === 'delete') ||
- (nexttoken &&
- (nexttoken.value === '.' || nexttoken.value === '['))) {
-
- isundef(funct, "'{a}' is not defined.", token, v);
- }
- }
- funct[v] = true;
- note_implied(token);
- } else {
- switch (s[v]) {
- case 'function':
- case 'unction':
- this['function'] = true;
- s[v] = 'closure';
- funct[v] = s['(global)'] ? 'global' : 'outer';
- break;
- case 'var':
- case 'unused':
- s[v] = 'closure';
- funct[v] = s['(global)'] ? 'global' : 'outer';
- break;
- case 'closure':
- case 'parameter':
- funct[v] = s['(global)'] ? 'global' : 'outer';
- break;
- case 'label':
- warning("'{a}' is a statement label.", token, v);
- }
- }
- }
- }
- return this;
- },
- led: function () {
- error("Expected an operator and instead saw '{a}'.",
- nexttoken, nexttoken.value);
- }
- };
-
- type('(regexp)', function () {
- return this;
- });
-
-
-// ECMAScript parser
-
- delim('(endline)');
- delim('(begin)');
- delim('(end)').reach = true;
- delim('</').reach = true;
- delim('<!');
- delim('<!--');
- delim('-->');
- delim('(error)').reach = true;
- delim('}').reach = true;
- delim(')');
- delim(']');
- delim('"').reach = true;
- delim("'").reach = true;
- delim(';');
- delim(':').reach = true;
- delim(',');
- delim('#');
- delim('@');
- reserve('else');
- reserve('case').reach = true;
- reserve('catch');
- reserve('default').reach = true;
- reserve('finally');
- reservevar('arguments', function (x) {
- if (directive['use strict'] && funct['(global)']) {
- warning("Strict violation.", x);
- }
- });
- reservevar('eval');
- reservevar('false');
- reservevar('Infinity');
- reservevar('NaN');
- reservevar('null');
- reservevar('this', function (x) {
- if (directive['use strict'] && !option.validthis && ((funct['(statement)'] &&
- funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) {
- warning("Possible strict violation.", x);
- }
- });
- reservevar('true');
- reservevar('undefined');
- assignop('=', 'assign', 20);
- assignop('+=', 'assignadd', 20);
- assignop('-=', 'assignsub', 20);
- assignop('*=', 'assignmult', 20);
- assignop('/=', 'assigndiv', 20).nud = function () {
- error("A regular expression literal can be confused with '/='.");
- };
- assignop('%=', 'assignmod', 20);
- bitwiseassignop('&=', 'assignbitand', 20);
- bitwiseassignop('|=', 'assignbitor', 20);
- bitwiseassignop('^=', 'assignbitxor', 20);
- bitwiseassignop('<<=', 'assignshiftleft', 20);
- bitwiseassignop('>>=', 'assignshiftright', 20);
- bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20);
- infix('?', function (left, that) {
- that.left = left;
- that.right = expression(10);
- advance(':');
- that['else'] = expression(10);
- return that;
- }, 30);
-
- infix('||', 'or', 40);
- infix('&&', 'and', 50);
- bitwise('|', 'bitor', 70);
- bitwise('^', 'bitxor', 80);
- bitwise('&', 'bitand', 90);
- relation('==', function (left, right) {
- var eqnull = option.eqnull && (left.value === 'null' || right.value === 'null');
-
- if (!eqnull && option.eqeqeq)
- warning("Expected '{a}' and instead saw '{b}'.", this, '===', '==');
- else if (isPoorRelation(left))
- warning("Use '{a}' to compare with '{b}'.", this, '===', left.value);
- else if (isPoorRelation(right))
- warning("Use '{a}' to compare with '{b}'.", this, '===', right.value);
-
- return this;
- });
- relation('===');
- relation('!=', function (left, right) {
- var eqnull = option.eqnull &&
- (left.value === 'null' || right.value === 'null');
-
- if (!eqnull && option.eqeqeq) {
- warning("Expected '{a}' and instead saw '{b}'.",
- this, '!==', '!=');
- } else if (isPoorRelation(left)) {
- warning("Use '{a}' to compare with '{b}'.",
- this, '!==', left.value);
- } else if (isPoorRelation(right)) {
- warning("Use '{a}' to compare with '{b}'.",
- this, '!==', right.value);
- }
- return this;
- });
- relation('!==');
- relation('<');
- relation('>');
- relation('<=');
- relation('>=');
- bitwise('<<', 'shiftleft', 120);
- bitwise('>>', 'shiftright', 120);
- bitwise('>>>', 'shiftrightunsigned', 120);
- infix('in', 'in', 120);
- infix('instanceof', 'instanceof', 120);
- infix('+', function (left, that) {
- var right = expression(130);
- if (left && right && left.id === '(string)' && right.id === '(string)') {
- left.value += right.value;
- left.character = right.character;
- if (!option.scripturl && jx.test(left.value)) {
- warning("JavaScript URL.", left);
- }
- return left;
- }
- that.left = left;
- that.right = right;
- return that;
- }, 130);
- prefix('+', 'num');
- prefix('+++', function () {
- warning("Confusing pluses.");
- this.right = expression(150);
- this.arity = 'unary';
- return this;
- });
- infix('+++', function (left) {
- warning("Confusing pluses.");
- this.left = left;
- this.right = expression(130);
- return this;
- }, 130);
- infix('-', 'sub', 130);
- prefix('-', 'neg');
- prefix('---', function () {
- warning("Confusing minuses.");
- this.right = expression(150);
- this.arity = 'unary';
- return this;
- });
- infix('---', function (left) {
- warning("Confusing minuses.");
- this.left = left;
- this.right = expression(130);
- return this;
- }, 130);
- infix('*', 'mult', 140);
- infix('/', 'div', 140);
- infix('%', 'mod', 140);
-
- suffix('++', 'postinc');
- prefix('++', 'preinc');
- syntax['++'].exps = true;
-
- suffix('--', 'postdec');
- prefix('--', 'predec');
- syntax['--'].exps = true;
- prefix('delete', function () {
- var p = expression(0);
- if (!p || (p.id !== '.' && p.id !== '[')) {
- warning("Variables should not be deleted.");
- }
- this.first = p;
- return this;
- }).exps = true;
-
- prefix('~', function () {
- if (option.bitwise) {
- warning("Unexpected '{a}'.", this, '~');
- }
- expression(150);
- return this;
- });
-
- prefix('!', function () {
- this.right = expression(150);
- this.arity = 'unary';
- if (bang[this.right.id] === true) {
- warning("Confusing use of '{a}'.", this, '!');
- }
- return this;
- });
- prefix('typeof', 'typeof');
- prefix('new', function () {
- var c = expression(155), i;
- if (c && c.id !== 'function') {
- if (c.identifier) {
- c['new'] = true;
- switch (c.value) {
- case 'Number':
- case 'String':
- case 'Boolean':
- case 'Math':
- case 'JSON':
- warning("Do not use {a} as a constructor.", token, c.value);
- break;
- case 'Function':
- if (!option.evil) {
- warning("The Function constructor is eval.");
- }
- break;
- case 'Date':
- case 'RegExp':
- break;
- default:
- if (c.id !== 'function') {
- i = c.value.substr(0, 1);
- if (option.newcap && (i < 'A' || i > 'Z')) {
- warning("A constructor name should start with an uppercase letter.",
- token);
- }
- }
- }
- } else {
- if (c.id !== '.' && c.id !== '[' && c.id !== '(') {
- warning("Bad constructor.", token);
- }
- }
- } else {
- if (!option.supernew)
- warning("Weird construction. Delete 'new'.", this);
- }
- adjacent(token, nexttoken);
- if (nexttoken.id !== '(' && !option.supernew) {
- warning("Missing '()' invoking a constructor.");
- }
- this.first = c;
- return this;
- });
- syntax['new'].exps = true;
-
- prefix('void').exps = true;
-
- infix('.', function (left, that) {
- adjacent(prevtoken, token);
- nobreak();
- var m = identifier();
- if (typeof m === 'string') {
- countMember(m);
- }
- that.left = left;
- that.right = m;
- if (left && left.value === 'arguments' && (m === 'callee' || m === 'caller')) {
- if (option.noarg)
- warning("Avoid arguments.{a}.", left, m);
- else if (directive['use strict'])
- error('Strict violation.');
- } else if (!option.evil && left && left.value === 'document' &&
- (m === 'write' || m === 'writeln')) {
- warning("document.write can be a form of eval.", left);
- }
- if (!option.evil && (m === 'eval' || m === 'execScript')) {
- warning('eval is evil.');
- }
- return that;
- }, 160, true);
-
- infix('(', function (left, that) {
- if (prevtoken.id !== '}' && prevtoken.id !== ')') {
- nobreak(prevtoken, token);
- }
- nospace();
- if (option.immed && !left.immed && left.id === 'function') {
- warning("Wrap an immediate function invocation in parentheses " +
- "to assist the reader in understanding that the expression " +
- "is the result of a function, and not the function itself.");
- }
- var n = 0,
- p = [];
- if (left) {
- if (left.type === '(identifier)') {
- if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
- if (left.value !== 'Number' && left.value !== 'String' &&
- left.value !== 'Boolean' &&
- left.value !== 'Date') {
- if (left.value === 'Math') {
- warning("Math is not a function.", left);
- } else if (option.newcap) {
- warning(
-"Missing 'new' prefix when invoking a constructor.", left);
- }
- }
- }
- }
- }
- if (nexttoken.id !== ')') {
- for (;;) {
- p[p.length] = expression(10);
- n += 1;
- if (nexttoken.id !== ',') {
- break;
- }
- comma();
- }
- }
- advance(')');
- nospace(prevtoken, token);
- if (typeof left === 'object') {
- if (left.value === 'parseInt' && n === 1) {
- warning("Missing radix parameter.", left);
- }
- if (!option.evil) {
- if (left.value === 'eval' || left.value === 'Function' ||
- left.value === 'execScript') {
- warning("eval is evil.", left);
- } else if (p[0] && p[0].id === '(string)' &&
- (left.value === 'setTimeout' ||
- left.value === 'setInterval')) {
- warning(
- "Implied eval is evil. Pass a function instead of a string.", left);
- }
- }
- if (!left.identifier && left.id !== '.' && left.id !== '[' &&
- left.id !== '(' && left.id !== '&&' && left.id !== '||' &&
- left.id !== '?') {
- warning("Bad invocation.", left);
- }
- }
- that.left = left;
- return that;
- }, 155, true).exps = true;
-
- prefix('(', function () {
- nospace();
- if (nexttoken.id === 'function') {
- nexttoken.immed = true;
- }
- var v = expression(0);
- advance(')', this);
- nospace(prevtoken, token);
- if (option.immed && v.id === 'function') {
- if (nexttoken.id === '(' ||
- (nexttoken.id === '.' && (peek().value === 'call' || peek().value === 'apply'))) {
- warning(
-"Move the invocation into the parens that contain the function.", nexttoken);
- } else {
- warning(
-"Do not wrap function literals in parens unless they are to be immediately invoked.",
- this);
- }
- }
- return v;
- });
-
- infix('[', function (left, that) {
- nobreak(prevtoken, token);
- nospace();
- var e = expression(0), s;
- if (e && e.type === '(string)') {
- if (!option.evil && (e.value === 'eval' || e.value === 'execScript')) {
- warning("eval is evil.", that);
- }
- countMember(e.value);
- if (!option.sub && ix.test(e.value)) {
- s = syntax[e.value];
- if (!s || !s.reserved) {
- warning("['{a}'] is better written in dot notation.",
- e, e.value);
- }
- }
- }
- advance(']', that);
- nospace(prevtoken, token);
- that.left = left;
- that.right = e;
- return that;
- }, 160, true);
-
- prefix('[', function () {
- var b = token.line !== nexttoken.line;
- this.first = [];
- if (b) {
- indent += option.indent;
- if (nexttoken.from === indent + option.indent) {
- indent += option.indent;
- }
- }
- while (nexttoken.id !== '(end)') {
- while (nexttoken.id === ',') {
- warning("Extra comma.");
- advance(',');
- }
- if (nexttoken.id === ']') {
- break;
- }
- if (b && token.line !== nexttoken.line) {
- indentation();
- }
- this.first.push(expression(10));
- if (nexttoken.id === ',') {
- comma();
- if (nexttoken.id === ']' && !option.es5) {
- warning("Extra comma.", token);
- break;
- }
- } else {
- break;
- }
- }
- if (b) {
- indent -= option.indent;
- indentation();
- }
- advance(']', this);
- return this;
- }, 160);
-
-
- function property_name() {
- var id = optionalidentifier(true);
- if (!id) {
- if (nexttoken.id === '(string)') {
- id = nexttoken.value;
- advance();
- } else if (nexttoken.id === '(number)') {
- id = nexttoken.value.toString();
- advance();
- }
- }
- return id;
- }
-
-
- function functionparams() {
- var i, t = nexttoken, p = [];
- advance('(');
- nospace();
- if (nexttoken.id === ')') {
- advance(')');
- return;
- }
- for (;;) {
- i = identifier(true);
- p.push(i);
- addlabel(i, 'parameter');
- if (nexttoken.id === ',') {
- comma();
- } else {
- advance(')', t);
- nospace(prevtoken, token);
- return p;
- }
- }
- }
-
-
- function doFunction(i, statement) {
- var f,
- oldOption = option,
- oldScope = scope;
-
- option = Object.create(option);
- scope = Object.create(scope);
-
- funct = {
- '(name)' : i || '"' + anonname + '"',
- '(line)' : nexttoken.line,
- '(context)' : funct,
- '(breakage)' : 0,
- '(loopage)' : 0,
- '(scope)' : scope,
- '(statement)': statement
- };
- f = funct;
- token.funct = funct;
- functions.push(funct);
- if (i) {
- addlabel(i, 'function');
- }
- funct['(params)'] = functionparams();
-
- block(false, false, true);
- scope = oldScope;
- option = oldOption;
- funct['(last)'] = token.line;
- funct = funct['(context)'];
- return f;
- }
-
-
- (function (x) {
- x.nud = function () {
- var b, f, i, j, p, t;
- var props = {}; // All properties, including accessors
-
- function saveProperty(name, token) {
- if (props[name] && is_own(props, name))
- warning("Duplicate member '{a}'.", nexttoken, i);
- else
- props[name] = {};
-
- props[name].basic = true;
- props[name].basicToken = token;
- }
-
- function saveSetter(name, token) {
- if (props[name] && is_own(props, name)) {
- if (props[name].basic || props[name].setter)
- warning("Duplicate member '{a}'.", nexttoken, i);
- } else {
- props[name] = {};
- }
-
- props[name].setter = true;
- props[name].setterToken = token;
- }
-
- function saveGetter(name) {
- if (props[name] && is_own(props, name)) {
- if (props[name].basic || props[name].getter)
- warning("Duplicate member '{a}'.", nexttoken, i);
- } else {
- props[name] = {};
- }
-
- props[name].getter = true;
- props[name].getterToken = token;
- }
-
- b = token.line !== nexttoken.line;
- if (b) {
- indent += option.indent;
- if (nexttoken.from === indent + option.indent) {
- indent += option.indent;
- }
- }
- for (;;) {
- if (nexttoken.id === '}') {
- break;
- }
- if (b) {
- indentation();
- }
- if (nexttoken.value === 'get' && peek().id !== ':') {
- advance('get');
- if (!option.es5) {
- error("get/set are ES5 features.");
- }
- i = property_name();
- if (!i) {
- error("Missing property name.");
- }
- saveGetter(i);
- t = nexttoken;
- adjacent(token, nexttoken);
- f = doFunction();
- p = f['(params)'];
- if (p) {
- warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i);
- }
- adjacent(token, nexttoken);
- } else if (nexttoken.value === 'set' && peek().id !== ':') {
- advance('set');
- if (!option.es5) {
- error("get/set are ES5 features.");
- }
- i = property_name();
- if (!i) {
- error("Missing property name.");
- }
- saveSetter(i, nexttoken);
- t = nexttoken;
- adjacent(token, nexttoken);
- f = doFunction();
- p = f['(params)'];
- if (!p || p.length !== 1) {
- warning("Expected a single parameter in set {a} function.", t, i);
- }
- } else {
- i = property_name();
- saveProperty(i, nexttoken);
- if (typeof i !== 'string') {
- break;
- }
- advance(':');
- nonadjacent(token, nexttoken);
- expression(10);
- }
-
- countMember(i);
- if (nexttoken.id === ',') {
- comma();
- if (nexttoken.id === ',') {
- warning("Extra comma.", token);
- } else if (nexttoken.id === '}' && !option.es5) {
- warning("Extra comma.", token);
- }
- } else {
- break;
- }
- }
- if (b) {
- indent -= option.indent;
- indentation();
- }
- advance('}', this);
-
- // Check for lonely setters if in the ES5 mode.
- if (option.es5) {
- for (var name in props) {
- if (is_own(props, name) && props[name].setter && !props[name].getter) {
- warning("Setter is defined without getter.", props[name].setterToken);
- }
- }
- }
- return this;
- };
- x.fud = function () {
- error("Expected to see a statement and instead saw a block.", token);
- };
- }(delim('{')));
-
-// This Function is called when esnext option is set to true
-// it adds the `const` statement to JSHINT
-
- useESNextSyntax = function () {
- var conststatement = stmt('const', function (prefix) {
- var id, name, value;
-
- this.first = [];
- for (;;) {
- nonadjacent(token, nexttoken);
- id = identifier();
- if (funct[id] === "const") {
- warning("const '" + id + "' has already been declared");
- }
- if (funct['(global)'] && predefined[id] === false) {
- warning("Redefinition of '{a}'.", token, id);
- }
- addlabel(id, 'const');
- if (prefix) {
- break;
- }
- name = token;
- this.first.push(token);
-
- if (nexttoken.id !== "=") {
- warning("const " +
- "'{a}' is initialized to 'undefined'.", token, id);
- }
-
- if (nexttoken.id === '=') {
- nonadjacent(token, nexttoken);
- advance('=');
- nonadjacent(token, nexttoken);
- if (nexttoken.id === 'undefined') {
- warning("It is not necessary to initialize " +
- "'{a}' to 'undefined'.", token, id);
- }
- if (peek(0).id === '=' && nexttoken.identifier) {
- error("Constant {a} was not declared correctly.",
- nexttoken, nexttoken.value);
- }
- value = expression(0);
- name.first = value;
- }
-
- if (nexttoken.id !== ',') {
- break;
- }
- comma();
- }
- return this;
- });
- conststatement.exps = true;
- };
-
- var varstatement = stmt('var', function (prefix) {
- // JavaScript does not have block scope. It only has function scope. So,
- // declaring a variable in a block can have unexpected consequences.
- var id, name, value;
-
- if (funct['(onevar)'] && option.onevar) {
- warning("Too many var statements.");
- } else if (!funct['(global)']) {
- funct['(onevar)'] = true;
- }
- this.first = [];
- for (;;) {
- nonadjacent(token, nexttoken);
- id = identifier();
- if (option.esnext && funct[id] === "const") {
- warning("const '" + id + "' has already been declared");
- }
- if (funct['(global)'] && predefined[id] === false) {
- warning("Redefinition of '{a}'.", token, id);
- }
- addlabel(id, 'unused');
- if (prefix) {
- break;
- }
- name = token;
- this.first.push(token);
- if (nexttoken.id === '=') {
- nonadjacent(token, nexttoken);
- advance('=');
- nonadjacent(token, nexttoken);
- if (nexttoken.id === 'undefined') {
- warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id);
- }
- if (peek(0).id === '=' && nexttoken.identifier) {
- error("Variable {a} was not declared correctly.",
- nexttoken, nexttoken.value);
- }
- value = expression(0);
- name.first = value;
- }
- if (nexttoken.id !== ',') {
- break;
- }
- comma();
- }
- return this;
- });
- varstatement.exps = true;
-
- blockstmt('function', function () {
- if (inblock) {
- warning("Function declarations should not be placed in blocks. " +
- "Use a function expression or move the statement to the top of " +
- "the outer function.", token);
-
- }
- var i = identifier();
- if (option.esnext && funct[i] === "const") {
- warning("const '" + i + "' has already been declared");
- }
- adjacent(token, nexttoken);
- addlabel(i, 'unction');
- doFunction(i, true);
- if (nexttoken.id === '(' && nexttoken.line === token.line) {
- error(
-"Function declarations are not invocable. Wrap the whole function invocation in parens.");
- }
- return this;
- });
-
- prefix('function', function () {
- var i = optionalidentifier();
- if (i) {
- adjacent(token, nexttoken);
- } else {
- nonadjacent(token, nexttoken);
- }
- doFunction(i);
- if (!option.loopfunc && funct['(loopage)']) {
- warning("Don't make functions within a loop.");
- }
- return this;
- });
-
- blockstmt('if', function () {
- var t = nexttoken;
- advance('(');
- nonadjacent(this, t);
- nospace();
- expression(20);
- if (nexttoken.id === '=') {
- if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
- expression(20);
- }
- advance(')', t);
- nospace(prevtoken, token);
- block(true, true);
- if (nexttoken.id === 'else') {
- nonadjacent(token, nexttoken);
- advance('else');
- if (nexttoken.id === 'if' || nexttoken.id === 'switch') {
- statement(true);
- } else {
- block(true, true);
- }
- }
- return this;
- });
-
- blockstmt('try', function () {
- var b, e, s;
-
- block(false);
- if (nexttoken.id === 'catch') {
- advance('catch');
- nonadjacent(token, nexttoken);
- advance('(');
- s = scope;
- scope = Object.create(s);
- e = nexttoken.value;
- if (nexttoken.type !== '(identifier)') {
- warning("Expected an identifier and instead saw '{a}'.",
- nexttoken, e);
- } else {
- addlabel(e, 'exception');
- }
- advance();
- advance(')');
- block(false);
- b = true;
- scope = s;
- }
- if (nexttoken.id === 'finally') {
- advance('finally');
- block(false);
- return;
- } else if (!b) {
- error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, 'catch', nexttoken.value);
- }
- return this;
- });
-
- blockstmt('while', function () {
- var t = nexttoken;
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
- advance('(');
- nonadjacent(this, t);
- nospace();
- expression(20);
- if (nexttoken.id === '=') {
- if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
- expression(20);
- }
- advance(')', t);
- nospace(prevtoken, token);
- block(true, true);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
- return this;
- }).labelled = true;
-
- blockstmt('with', function () {
- var t = nexttoken;
- if (directive['use strict']) {
- error("'with' is not allowed in strict mode.", token);
- } else if (!option.withstmt) {
- warning("Don't use 'with'.", token);
- }
-
- advance('(');
- nonadjacent(this, t);
- nospace();
- expression(0);
- advance(')', t);
- nospace(prevtoken, token);
- block(true, true);
-
- return this;
- });
-
- blockstmt('switch', function () {
- var t = nexttoken,
- g = false;
- funct['(breakage)'] += 1;
- advance('(');
- nonadjacent(this, t);
- nospace();
- this.condition = expression(20);
- advance(')', t);
- nospace(prevtoken, token);
- nonadjacent(token, nexttoken);
- t = nexttoken;
- advance('{');
- nonadjacent(token, nexttoken);
- indent += option.indent;
- this.cases = [];
- for (;;) {
- switch (nexttoken.id) {
- case 'case':
- switch (funct['(verb)']) {
- case 'break':
- case 'case':
- case 'continue':
- case 'return':
- case 'switch':
- case 'throw':
- break;
- default:
- // You can tell JSHint that you don't use break intentionally by
- // adding a comment /* falls through */ on a line just before
- // the next `case`.
- if (!ft.test(lines[nexttoken.line - 2])) {
- warning(
- "Expected a 'break' statement before 'case'.",
- token);
- }
- }
- indentation(-option.indent);
- advance('case');
- this.cases.push(expression(20));
- g = true;
- advance(':');
- funct['(verb)'] = 'case';
- break;
- case 'default':
- switch (funct['(verb)']) {
- case 'break':
- case 'continue':
- case 'return':
- case 'throw':
- break;
- default:
- if (!ft.test(lines[nexttoken.line - 2])) {
- warning(
- "Expected a 'break' statement before 'default'.",
- token);
- }
- }
- indentation(-option.indent);
- advance('default');
- g = true;
- advance(':');
- break;
- case '}':
- indent -= option.indent;
- indentation();
- advance('}', t);
- if (this.cases.length === 1 || this.condition.id === 'true' ||
- this.condition.id === 'false') {
- if (!option.onecase)
- warning("This 'switch' should be an 'if'.", this);
- }
- funct['(breakage)'] -= 1;
- funct['(verb)'] = undefined;
- return;
- case '(end)':
- error("Missing '{a}'.", nexttoken, '}');
- return;
- default:
- if (g) {
- switch (token.id) {
- case ',':
- error("Each value should have its own case label.");
- return;
- case ':':
- g = false;
- statements();
- break;
- default:
- error("Missing ':' on a case clause.", token);
- return;
- }
- } else {
- if (token.id === ':') {
- advance(':');
- error("Unexpected '{a}'.", token, ':');
- statements();
- } else {
- error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, 'case', nexttoken.value);
- return;
- }
- }
- }
- }
- }).labelled = true;
-
- stmt('debugger', function () {
- if (!option.debug) {
- warning("All 'debugger' statements should be removed.");
- }
- return this;
- }).exps = true;
-
- (function () {
- var x = stmt('do', function () {
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
- this.first = block(true);
- advance('while');
- var t = nexttoken;
- nonadjacent(token, t);
- advance('(');
- nospace();
- expression(20);
- if (nexttoken.id === '=') {
- if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
- expression(20);
- }
- advance(')', t);
- nospace(prevtoken, token);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
- return this;
- });
- x.labelled = true;
- x.exps = true;
- }());
-
- blockstmt('for', function () {
- var s, t = nexttoken;
- funct['(breakage)'] += 1;
- funct['(loopage)'] += 1;
- advance('(');
- nonadjacent(this, t);
- nospace();
- if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') {
- if (nexttoken.id === 'var') {
- advance('var');
- varstatement.fud.call(varstatement, true);
- } else {
- switch (funct[nexttoken.value]) {
- case 'unused':
- funct[nexttoken.value] = 'var';
- break;
- case 'var':
- break;
- default:
- warning("Bad for in variable '{a}'.",
- nexttoken, nexttoken.value);
- }
- advance();
- }
- advance('in');
- expression(20);
- advance(')', t);
- s = block(true, true);
- if (option.forin && s && (s.length > 1 || typeof s[0] !== 'object' ||
- s[0].value !== 'if')) {
- warning("The body of a for in should be wrapped in an if statement to filter " +
- "unwanted properties from the prototype.", this);
- }
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
- return this;
- } else {
- if (nexttoken.id !== ';') {
- if (nexttoken.id === 'var') {
- advance('var');
- varstatement.fud.call(varstatement);
- } else {
- for (;;) {
- expression(0, 'for');
- if (nexttoken.id !== ',') {
- break;
- }
- comma();
- }
- }
- }
- nolinebreak(token);
- advance(';');
- if (nexttoken.id !== ';') {
- expression(20);
- if (nexttoken.id === '=') {
- if (!option.boss)
- warning("Expected a conditional expression and instead saw an assignment.");
- advance('=');
- expression(20);
- }
- }
- nolinebreak(token);
- advance(';');
- if (nexttoken.id === ';') {
- error("Expected '{a}' and instead saw '{b}'.",
- nexttoken, ')', ';');
- }
- if (nexttoken.id !== ')') {
- for (;;) {
- expression(0, 'for');
- if (nexttoken.id !== ',') {
- break;
- }
- comma();
- }
- }
- advance(')', t);
- nospace(prevtoken, token);
- block(true, true);
- funct['(breakage)'] -= 1;
- funct['(loopage)'] -= 1;
- return this;
- }
- }).labelled = true;
-
-
- stmt('break', function () {
- var v = nexttoken.value;
-
- if (funct['(breakage)'] === 0)
- warning("Unexpected '{a}'.", nexttoken, this.value);
-
- if (!option.asi)
- nolinebreak(this);
-
- if (nexttoken.id !== ';') {
- if (token.line === nexttoken.line) {
- if (funct[v] !== 'label') {
- warning("'{a}' is not a statement label.", nexttoken, v);
- } else if (scope[v] !== funct) {
- warning("'{a}' is out of scope.", nexttoken, v);
- }
- this.first = nexttoken;
- advance();
- }
- }
- reachable('break');
- return this;
- }).exps = true;
-
-
- stmt('continue', function () {
- var v = nexttoken.value;
-
- if (funct['(breakage)'] === 0)
- warning("Unexpected '{a}'.", nexttoken, this.value);
-
- if (!option.asi)
- nolinebreak(this);
-
- if (nexttoken.id !== ';') {
- if (token.line === nexttoken.line) {
- if (funct[v] !== 'label') {
- warning("'{a}' is not a statement label.", nexttoken, v);
- } else if (scope[v] !== funct) {
- warning("'{a}' is out of scope.", nexttoken, v);
- }
- this.first = nexttoken;
- advance();
- }
- } else if (!funct['(loopage)']) {
- warning("Unexpected '{a}'.", nexttoken, this.value);
- }
- reachable('continue');
- return this;
- }).exps = true;
-
-
- stmt('return', function () {
- if (this.line === nexttoken.line) {
- if (nexttoken.id === '(regexp)')
- warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator.");
-
- if (nexttoken.id !== ';' && !nexttoken.reach) {
- nonadjacent(token, nexttoken);
- if (peek().value === "=" && !option.boss) {
- warningAt("Did you mean to return a conditional instead of an assignment?",
- token.line, token.character + 1);
- }
- this.first = expression(0);
- }
- } else if (!option.asi) {
- nolinebreak(this); // always warn (Line breaking error)
- }
- reachable('return');
- return this;
- }).exps = true;
-
-
- stmt('throw', function () {
- nolinebreak(this);
- nonadjacent(token, nexttoken);
- this.first = expression(20);
- reachable('throw');
- return this;
- }).exps = true;
-
-// Superfluous reserved words
-
- reserve('class');
- reserve('const');
- reserve('enum');
- reserve('export');
- reserve('extends');
- reserve('import');
- reserve('super');
-
- reserve('let');
- reserve('yield');
- reserve('implements');
- reserve('interface');
- reserve('package');
- reserve('private');
- reserve('protected');
- reserve('public');
- reserve('static');
-
-
-// Parse JSON
-
- function jsonValue() {
-
- function jsonObject() {
- var o = {}, t = nexttoken;
- advance('{');
- if (nexttoken.id !== '}') {
- for (;;) {
- if (nexttoken.id === '(end)') {
- error("Missing '}' to match '{' from line {a}.",
- nexttoken, t.line);
- } else if (nexttoken.id === '}') {
- warning("Unexpected comma.", token);
- break;
- } else if (nexttoken.id === ',') {
- error("Unexpected comma.", nexttoken);
- } else if (nexttoken.id !== '(string)') {
- warning("Expected a string and instead saw {a}.",
- nexttoken, nexttoken.value);
- }
- if (o[nexttoken.value] === true) {
- warning("Duplicate key '{a}'.",
- nexttoken, nexttoken.value);
- } else if ((nexttoken.value === '__proto__' &&
- !option.proto) || (nexttoken.value === '__iterator__' &&
- !option.iterator)) {
- warning("The '{a}' key may produce unexpected results.",
- nexttoken, nexttoken.value);
- } else {
- o[nexttoken.value] = true;
- }
- advance();
- advance(':');
- jsonValue();
- if (nexttoken.id !== ',') {
- break;
- }
- advance(',');
- }
- }
- advance('}');
- }
-
- function jsonArray() {
- var t = nexttoken;
- advance('[');
- if (nexttoken.id !== ']') {
- for (;;) {
- if (nexttoken.id === '(end)') {
- error("Missing ']' to match '[' from line {a}.",
- nexttoken, t.line);
- } else if (nexttoken.id === ']') {
- warning("Unexpected comma.", token);
- break;
- } else if (nexttoken.id === ',') {
- error("Unexpected comma.", nexttoken);
- }
- jsonValue();
- if (nexttoken.id !== ',') {
- break;
- }
- advance(',');
- }
- }
- advance(']');
- }
-
- switch (nexttoken.id) {
- case '{':
- jsonObject();
- break;
- case '[':
- jsonArray();
- break;
- case 'true':
- case 'false':
- case 'null':
- case '(number)':
- case '(string)':
- advance();
- break;
- case '-':
- advance('-');
- if (token.character !== nexttoken.from) {
- warning("Unexpected space after '-'.", token);
- }
- adjacent(token, nexttoken);
- advance('(number)');
- break;
- default:
- error("Expected a JSON value.", nexttoken);
- }
- }
-
-
-// The actual JSHINT function itself.
-
- var itself = function (s, o, g) {
- var a, i, k;
- JSHINT.errors = [];
- JSHINT.undefs = [];
- predefined = Object.create(standard);
- combine(predefined, g || {});
- if (o) {
- a = o.predef;
- if (a) {
- if (Array.isArray(a)) {
- for (i = 0; i < a.length; i += 1) {
- predefined[a[i]] = true;
- }
- } else if (typeof a === 'object') {
- k = Object.keys(a);
- for (i = 0; i < k.length; i += 1) {
- predefined[k[i]] = !!a[k[i]];
- }
- }
- }
- option = o;
- } else {
- option = {};
- }
- option.indent = option.indent || 4;
- option.maxerr = option.maxerr || 50;
-
- tab = '';
- for (i = 0; i < option.indent; i += 1) {
- tab += ' ';
- }
- indent = 1;
- global = Object.create(predefined);
- scope = global;
- funct = {
- '(global)': true,
- '(name)': '(global)',
- '(scope)': scope,
- '(breakage)': 0,
- '(loopage)': 0
- };
- functions = [funct];
- urls = [];
- stack = null;
- member = {};
- membersOnly = null;
- implied = {};
- inblock = false;
- lookahead = [];
- jsonmode = false;
- warnings = 0;
- lex.init(s);
- prereg = true;
- directive = {};
-
- prevtoken = token = nexttoken = syntax['(begin)'];
-
- // Check options
- for (var name in o) {
- if (is_own(o, name)) {
- checkOption(name, token);
- }
- }
-
- assume();
-
- // combine the passed globals after we've assumed all our options
- combine(predefined, g || {});
-
- //reset values
- comma.first = true;
-
- try {
- advance();
- switch (nexttoken.id) {
- case '{':
- case '[':
- option.laxbreak = true;
- jsonmode = true;
- jsonValue();
- break;
- default:
- directives();
- if (directive["use strict"] && !option.globalstrict) {
- warning("Use the function form of \"use strict\".", prevtoken);
- }
-
- statements();
- }
- advance('(end)');
-
- var markDefined = function (name, context) {
- do {
- if (typeof context[name] === 'string') {
- // JSHINT marks unused variables as 'unused' and
- // unused function declaration as 'unction'. This
- // code changes such instances back 'var' and
- // 'closure' so that the code in JSHINT.data()
- // doesn't think they're unused.
-
- if (context[name] === 'unused')
- context[name] = 'var';
- else if (context[name] === 'unction')
- context[name] = 'closure';
-
- return true;
- }
-
- context = context['(context)'];
- } while (context);
-
- return false;
- };
-
- var clearImplied = function (name, line) {
- if (!implied[name])
- return;
-
- var newImplied = [];
- for (var i = 0; i < implied[name].length; i += 1) {
- if (implied[name][i] !== line)
- newImplied.push(implied[name][i]);
- }
-
- if (newImplied.length === 0)
- delete implied[name];
- else
- implied[name] = newImplied;
- };
-
- // Check queued 'x is not defined' instances to see if they're still undefined.
- for (i = 0; i < JSHINT.undefs.length; i += 1) {
- k = JSHINT.undefs[i].slice(0);
-
- if (markDefined(k[2].value, k[0])) {
- clearImplied(k[2].value, k[2].line);
- } else {
- warning.apply(warning, k.slice(1));
- }
- }
- } catch (e) {
- if (e) {
- var nt = nexttoken || {};
- JSHINT.errors.push({
- raw : e.raw,
- reason : e.message,
- line : e.line || nt.line,
- character : e.character || nt.from
- }, null);
- }
- }
-
- return JSHINT.errors.length === 0;
- };
-
- // Data summary.
- itself.data = function () {
-
- var data = { functions: [], options: option }, fu, globals, implieds = [], f, i, j,
- members = [], n, unused = [], v;
- if (itself.errors.length) {
- data.errors = itself.errors;
- }
-
- if (jsonmode) {
- data.json = true;
- }
-
- for (n in implied) {
- if (is_own(implied, n)) {
- implieds.push({
- name: n,
- line: implied[n]
- });
- }
- }
- if (implieds.length > 0) {
- data.implieds = implieds;
- }
-
- if (urls.length > 0) {
- data.urls = urls;
- }
-
- globals = Object.keys(scope);
- if (globals.length > 0) {
- data.globals = globals;
- }
- for (i = 1; i < functions.length; i += 1) {
- f = functions[i];
- fu = {};
- for (j = 0; j < functionicity.length; j += 1) {
- fu[functionicity[j]] = [];
- }
- for (n in f) {
- if (is_own(f, n) && n.charAt(0) !== '(') {
- v = f[n];
- if (v === 'unction') {
- v = 'unused';
- }
- if (Array.isArray(fu[v])) {
- fu[v].push(n);
- if (v === 'unused') {
- unused.push({
- name: n,
- line: f['(line)'],
- 'function': f['(name)']
- });
- }
- }
- }
- }
- for (j = 0; j < functionicity.length; j += 1) {
- if (fu[functionicity[j]].length === 0) {
- delete fu[functionicity[j]];
- }
- }
- fu.name = f['(name)'];
- fu.param = f['(params)'];
- fu.line = f['(line)'];
- fu.last = f['(last)'];
- data.functions.push(fu);
- }
-
- if (unused.length > 0) {
- data.unused = unused;
- }
-
- members = [];
- for (n in member) {
- if (typeof member[n] === 'number') {
- data.member = member;
- break;
- }
- }
-
- return data;
- };
-
- itself.report = function (option) {
- var data = itself.data();
-
- var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s;
-
- function detail(h, array) {
- var b, i, singularity;
- if (array) {
- o.push('<div><i>' + h + '</i> ');
- array = array.sort();
- for (i = 0; i < array.length; i += 1) {
- if (array[i] !== singularity) {
- singularity = array[i];
- o.push((b ? ', ' : '') + singularity);
- b = true;
- }
- }
- o.push('</div>');
- }
- }
-
-
- if (data.errors || data.implieds || data.unused) {
- err = true;
- o.push('<div id=errors><i>Error:</i>');
- if (data.errors) {
- for (i = 0; i < data.errors.length; i += 1) {
- c = data.errors[i];
- if (c) {
- e = c.evidence || '';
- o.push('<p>Problem' + (isFinite(c.line) ? ' at line ' +
- c.line + ' character ' + c.character : '') +
- ': ' + c.reason.entityify() +
- '</p><p class=evidence>' +
- (e && (e.length > 80 ? e.slice(0, 77) + '...' :
- e).entityify()) + '</p>');
- }
- }
- }
-
- if (data.implieds) {
- s = [];
- for (i = 0; i < data.implieds.length; i += 1) {
- s[i] = '<code>' + data.implieds[i].name + '</code>&nbsp;<i>' +
- data.implieds[i].line + '</i>';
- }
- o.push('<p><i>Implied global:</i> ' + s.join(', ') + '</p>');
- }
-
- if (data.unused) {
- s = [];
- for (i = 0; i < data.unused.length; i += 1) {
- s[i] = '<code><u>' + data.unused[i].name + '</u></code>&nbsp;<i>' +
- data.unused[i].line + '</i> <code>' +
- data.unused[i]['function'] + '</code>';
- }
- o.push('<p><i>Unused variable:</i> ' + s.join(', ') + '</p>');
- }
- if (data.json) {
- o.push('<p>JSON: bad.</p>');
- }
- o.push('</div>');
- }
-
- if (!option) {
-
- o.push('<br><div id=functions>');
-
- if (data.urls) {
- detail("URLs<br>", data.urls, '<br>');
- }
-
- if (data.json && !err) {
- o.push('<p>JSON: good.</p>');
- } else if (data.globals) {
- o.push('<div><i>Global</i> ' +
- data.globals.sort().join(', ') + '</div>');
- } else {
- o.push('<div><i>No new global variables introduced.</i></div>');
- }
-
- for (i = 0; i < data.functions.length; i += 1) {
- f = data.functions[i];
-
- o.push('<br><div class=function><i>' + f.line + '-' +
- f.last + '</i> ' + (f.name || '') + '(' +
- (f.param ? f.param.join(', ') : '') + ')</div>');
- detail('<big><b>Unused</b></big>', f.unused);
- detail('Closure', f.closure);
- detail('Variable', f['var']);
- detail('Exception', f.exception);
- detail('Outer', f.outer);
- detail('Global', f.global);
- detail('Label', f.label);
- }
-
- if (data.member) {
- a = Object.keys(data.member);
- if (a.length) {
- a = a.sort();
- m = '<br><pre id=members>/*members ';
- l = 10;
- for (i = 0; i < a.length; i += 1) {
- k = a[i];
- n = k.name();
- if (l + n.length > 72) {
- o.push(m + '<br>');
- m = ' ';
- l = 1;
- }
- l += n.length + 2;
- if (data.member[k] === 1) {
- n = '<i>' + n + '</i>';
- }
- if (i < a.length - 1) {
- n += ', ';
- }
- m += n;
- }
- o.push(m + '<br>*/</pre>');
- }
- o.push('</div>');
- }
- }
- return o.join('');
- };
-
- itself.jshint = itself;
-
- return itself;
-}());
-
-// Make JSHINT a Node module, if possible.
-if (typeof exports === 'object' && exports)
- exports.JSHINT = JSHINT;
-
-});
-
-/*
- * Narcissus - JS implemented in JS.
- *
- * Parser.
- */
-
-define('ace/narcissus/parser', ['require', 'exports', 'module' , 'ace/narcissus/lexer', 'ace/narcissus/definitions', 'ace/narcissus/options'], function(require, exports, module) {
-
-var lexer = require('./lexer');
-var definitions = require('./definitions');
-var options = require('./options');
-var Tokenizer = lexer.Tokenizer;
-
-var Dict = definitions.Dict;
-var Stack = definitions.Stack;
-
-// Set constants in the local scope.
-eval(definitions.consts);
-function pushDestructuringVarDecls(n, s) {
- for (var i in n) {
- var sub = n[i];
- if (sub.type === IDENTIFIER) {
- s.varDecls.push(sub);
- } else {
- pushDestructuringVarDecls(sub, s);
- }
- }
-}
-
-function Parser(tokenizer) {
- tokenizer.parser = this;
- this.t = tokenizer;
- this.x = null;
- this.unexpectedEOF = false;
- options.mozillaMode && (this.mozillaMode = true);
- options.parenFreeMode && (this.parenFreeMode = true);
-}
-
-function StaticContext(parentScript, parentBlock, inModule, inFunction, strictMode) {
- this.parentScript = parentScript;
- this.parentBlock = parentBlock || parentScript;
- this.inModule = inModule || false;
- this.inFunction = inFunction || false;
- this.inForLoopInit = false;
- this.topLevel = true;
- this.allLabels = new Stack();
- this.currentLabels = new Stack();
- this.labeledTargets = new Stack();
- this.defaultLoopTarget = null;
- this.defaultTarget = null;
- this.strictMode = strictMode;
-}
-
-StaticContext.prototype = {
- // non-destructive update via prototype extension
- update: function(ext) {
- var desc = {};
- for (var key in ext) {
- desc[key] = {
- value: ext[key],
- writable: true,
- enumerable: true,
- configurable: true
- }
- }
- return Object.create(this, desc);
- },
- pushLabel: function(label) {
- return this.update({ currentLabels: this.currentLabels.push(label),
- allLabels: this.allLabels.push(label) });
- },
- pushTarget: function(target) {
- var isDefaultLoopTarget = target.isLoop;
- var isDefaultTarget = isDefaultLoopTarget || target.type === SWITCH;
-
- if (this.currentLabels.isEmpty()) {
- if (isDefaultLoopTarget) this.update({ defaultLoopTarget: target });
- if (isDefaultTarget) this.update({ defaultTarget: target });
- return this;
- }
-
- target.labels = new Dict();
- this.currentLabels.forEach(function(label) {
- target.labels.set(label, true);
- });
- return this.update({ currentLabels: new Stack(),
- labeledTargets: this.labeledTargets.push(target),
- defaultLoopTarget: isDefaultLoopTarget
- ? target
- : this.defaultLoopTarget,
- defaultTarget: isDefaultTarget
- ? target
- : this.defaultTarget });
- },
- nest: function() {
- return this.topLevel ? this.update({ topLevel: false }) : this;
- },
- canImport: function() {
- return this.topLevel && !this.inFunction;
- },
- canExport: function() {
- return this.inModule && this.topLevel && !this.inFunction;
- },
- banWith: function() {
- return this.strictMode || this.inModule;
- },
- modulesAllowed: function() {
- return this.topLevel && !this.inFunction;
- }
-};
-
-var Pp = Parser.prototype;
-
-Pp.mozillaMode = false;
-
-Pp.parenFreeMode = false;
-
-Pp.withContext = function(x, f) {
- var x0 = this.x;
- this.x = x;
- var result = f.call(this);
- // NB: we don't bother with finally, since exceptions trash the parser
- this.x = x0;
- return result;
-};
-
-Pp.newNode = function newNode(opts) {
- return new Node(this.t, opts);
-};
-
-Pp.fail = function fail(msg) {
- throw this.t.newSyntaxError(msg);
-};
-
-Pp.match = function match(tt, scanOperand, keywordIsName) {
- return this.t.match(tt, scanOperand, keywordIsName);
-};
-
-Pp.mustMatch = function mustMatch(tt, keywordIsName) {
- return this.t.mustMatch(tt, keywordIsName);
-};
-
-Pp.peek = function peek(scanOperand) {
- return this.t.peek(scanOperand);
-};
-
-Pp.peekOnSameLine = function peekOnSameLine(scanOperand) {
- return this.t.peekOnSameLine(scanOperand);
-};
-
-Pp.done = function done() {
- return this.t.done;
-};
-Pp.Script = function Script(inModule, inFunction, expectEnd) {
- var node = this.newNode(scriptInit());
- var x2 = new StaticContext(node, node, inModule, inFunction);
- this.withContext(x2, function() {
- this.Statements(node, true);
- });
- if (expectEnd && !this.done())
- this.fail("expected end of input");
- return node;
-};
-function Pragma(n) {
- if (n.type === SEMICOLON) {
- var e = n.expression;
- if (e.type === STRING && e.value === "use strict") {
- n.pragma = "strict";
- return true;
- }
- }
- return false;
-}
-
-/*
- * Node :: (tokenizer, optional init object) -> node
- */
-function Node(t, init) {
- var token = t.token;
- if (token) {
- // If init.type exists it will override token.type.
- this.type = token.type;
- this.value = token.value;
- this.lineno = token.lineno;
-
- // Start and end are file positions for error handling.
- this.start = token.start;
- this.end = token.end;
- } else {
- this.lineno = t.lineno;
- }
-
- this.filename = t.filename;
- this.children = [];
-
- for (var prop in init)
- this[prop] = init[prop];
-}
-
-/*
- * SyntheticNode :: (optional init object) -> node
- */
-function SyntheticNode(init) {
- this.children = [];
- for (var prop in init)
- this[prop] = init[prop];
- this.synthetic = true;
-}
-
-var Np = Node.prototype = SyntheticNode.prototype = {};
-Np.constructor = Node;
-
-var TO_SOURCE_SKIP = {
- type: true,
- value: true,
- lineno: true,
- start: true,
- end: true,
- tokenizer: true,
- assignOp: true
-};
-function unevalableConst(code) {
- var token = definitions.tokens[code];
- var constName = definitions.opTypeNames.hasOwnProperty(token)
- ? definitions.opTypeNames[token]
- : token in definitions.keywords
- ? token.toUpperCase()
- : token;
- return { toSource: function() { return constName } };
-}
-Np.toSource = function toSource() {
- var mock = {};
- var self = this;
- mock.type = unevalableConst(this.type);
- // avoid infinite recursion in case of back-links
- if (this.generatingSource)
- return mock.toSource();
- this.generatingSource = true;
- if ("value" in this)
- mock.value = this.value;
- if ("lineno" in this)
- mock.lineno = this.lineno;
- if ("start" in this)
- mock.start = this.start;
- if ("end" in this)
- mock.end = this.end;
- if (this.assignOp)
- mock.assignOp = unevalableConst(this.assignOp);
- for (var key in this) {
- if (this.hasOwnProperty(key) && !(key in TO_SOURCE_SKIP))
- mock[key] = this[key];
- }
- try {
- return mock.toSource();
- } finally {
- delete this.generatingSource;
- }
-};
-
-// Always use push to add operands to an expression, to update start and end.
-Np.push = function (kid) {
- // kid can be null e.g. [1, , 2].
- if (kid !== null) {
- if (kid.start < this.start)
- this.start = kid.start;
- if (this.end < kid.end)
- this.end = kid.end;
- }
- return this.children.push(kid);
-}
-
-Node.indentLevel = 0;
-
-function tokenString(tt) {
- var t = definitions.tokens[tt];
- return /^\W/.test(t) ? definitions.opTypeNames[t] : t.toUpperCase();
-}
-
-Np.toString = function () {
- var a = [];
- for (var i in this) {
- if (this.hasOwnProperty(i) && i !== 'type' && i !== 'target')
- a.push({id: i, value: this[i]});
- }
- a.sort(function (a,b) { return (a.id < b.id) ? -1 : 1; });
- var INDENTATION = " ";
- var n = ++Node.indentLevel;
- var s = "{\n" + INDENTATION.repeat(n) + "type: " + tokenString(this.type);
- for (i = 0; i < a.length; i++)
- s += ",\n" + INDENTATION.repeat(n) + a[i].id + ": " + a[i].value;
- n = --Node.indentLevel;
- s += "\n" + INDENTATION.repeat(n) + "}";
- return s;
-}
-
-Np.synth = function(init) {
- var node = new SyntheticNode(init);
- node.filename = this.filename;
- node.lineno = this.lineno;
- node.start = this.start;
- node.end = this.end;
- return node;
-};
-
-var LOOP_INIT = { isLoop: true };
-
-function blockInit() {
- return { type: BLOCK, varDecls: [] };
-}
-
-function scriptInit() {
- return { type: SCRIPT,
- funDecls: [],
- varDecls: [],
- modDefns: new Dict(),
- modAssns: new Dict(),
- modDecls: new Dict(),
- modLoads: new Dict(),
- impDecls: [],
- expDecls: [],
- exports: new Dict(),
- hasEmptyReturn: false,
- hasReturnWithValue: false,
- hasYield: false };
-}
-
-definitions.defineGetter(Np, "length",
- function() {
- throw new Error("Node.prototype.length is gone; " +
- "use n.children.length instead");
- });
-
-definitions.defineProperty(String.prototype, "repeat",
- function(n) {
- var s = "", t = this + s;
- while (--n >= 0)
- s += t;
- return s;
- }, false, false, true);
-
-Pp.MaybeLeftParen = function MaybeLeftParen() {
- if (this.parenFreeMode)
- return this.match(LEFT_PAREN) ? LEFT_PAREN : END;
- return this.mustMatch(LEFT_PAREN).type;
-};
-
-Pp.MaybeRightParen = function MaybeRightParen(p) {
- if (p === LEFT_PAREN)
- this.mustMatch(RIGHT_PAREN);
-}
-
-/*
- * Statements :: (node[, boolean]) -> void
- *
- * Parses a sequence of Statements.
- */
-Pp.Statements = function Statements(n, topLevel) {
- var prologue = !!topLevel;
- try {
- while (!this.done() && this.peek(true) !== RIGHT_CURLY) {
- var n2 = this.Statement();
- n.push(n2);
- if (prologue && Pragma(n2)) {
- this.x.strictMode = true;
- n.strict = true;
- } else {
- prologue = false;
- }
- }
- } catch (e) {
- try {
- if (this.done())
- this.unexpectedEOF = true;
- } catch(e) {}
- throw e;
- }
-}
-
-Pp.Block = function Block() {
- this.mustMatch(LEFT_CURLY);
- var n = this.newNode(blockInit());
- var x2 = this.x.update({ parentBlock: n }).pushTarget(n);
- this.withContext(x2, function() {
- this.Statements(n);
- });
- this.mustMatch(RIGHT_CURLY);
- return n;
-}
-
-var DECLARED_FORM = 0, EXPRESSED_FORM = 1, STATEMENT_FORM = 2;
-function Export(node, isDefinition) {
- this.node = node; // the AST node declaring this individual export
- this.isDefinition = isDefinition; // is the node an 'export'-annotated definition?
- this.resolved = null; // resolved pointer to the target of this export
-}
-
-/*
- * registerExport :: (Dict, EXPORT node) -> void
- */
-function registerExport(exports, decl) {
- function register(name, exp) {
- if (exports.has(name))
- throw new SyntaxError("multiple exports of " + name);
- exports.set(name, exp);
- }
-
- switch (decl.type) {
- case MODULE:
- case FUNCTION:
- register(decl.name, new Export(decl, true));
- break;
-
- case VAR:
- for (var i = 0; i < decl.children.length; i++)
- register(decl.children[i].name, new Export(decl.children[i], true));
- break;
-
- case LET:
- case CONST:
- throw new Error("NYI: " + definitions.tokens[decl.type]);
-
- case EXPORT:
- for (var i = 0; i < decl.pathList.length; i++) {
- var path = decl.pathList[i];
- switch (path.type) {
- case OBJECT_INIT:
- for (var j = 0; j < path.children.length; j++) {
- // init :: IDENTIFIER | PROPERTY_INIT
- var init = path.children[j];
- if (init.type === IDENTIFIER)
- register(init.value, new Export(init, false));
- else
- register(init.children[0].value, new Export(init.children[1], false));
- }
- break;
-
- case DOT:
- register(path.children[1].value, new Export(path, false));
- break;
-
- case IDENTIFIER:
- register(path.value, new Export(path, false));
- break;
-
- default:
- throw new Error("unexpected export path: " + definitions.tokens[path.type]);
- }
- }
- break;
-
- default:
- throw new Error("unexpected export decl: " + definitions.tokens[exp.type]);
- }
-}
-
-/*
- * Module :: (node) -> Module
- *
- * Static semantic representation of a module.
- */
-function Module(node) {
- var exports = node.body.exports;
- var modDefns = node.body.modDefns;
-
- var exportedModules = new Dict();
-
- exports.forEach(function(name, exp) {
- var node = exp.node;
- if (node.type === MODULE) {
- exportedModules.set(name, node);
- } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) {
- var mod = modDefns.get(node.value);
- exportedModules.set(name, mod);
- }
- });
-
- this.node = node;
- this.exports = exports;
- this.exportedModules = exportedModules;
-}
-
-/*
- * Statement :: () -> node
- *
- * Parses a Statement.
- */
-Pp.Statement = function Statement() {
- var i, label, n, n2, p, c, ss, tt = this.t.get(true), tt2, x0, x2, x3;
-
- var comments = this.t.blockComments;
-
- // Cases for statements ending in a right curly return early, avoiding the
- // common semicolon insertion magic after this switch.
- switch (tt) {
- case IMPORT:
- if (!this.x.canImport())
- this.fail("illegal context for import statement");
- n = this.newNode();
- n.pathList = this.ImportPathList();
- this.x.parentScript.impDecls.push(n);
- break;
-
- case EXPORT:
- if (!this.x.canExport())
- this.fail("export statement not in module top level");
- switch (this.peek()) {
- case MODULE:
- case FUNCTION:
- case LET:
- case VAR:
- case CONST:
- n = this.Statement();
- n.blockComments = comments;
- n.exported = true;
- this.x.parentScript.expDecls.push(n);
- registerExport(this.x.parentScript.exports, n);
- return n;
- }
- n = this.newNode();
- n.pathList = this.ExportPathList();
- this.x.parentScript.expDecls.push(n);
- registerExport(this.x.parentScript.exports, n);
- break;
-
- case FUNCTION:
- // DECLARED_FORM extends funDecls of x, STATEMENT_FORM doesn't.
- return this.FunctionDefinition(true, this.x.topLevel ? DECLARED_FORM : STATEMENT_FORM, comments);
-
- case LEFT_CURLY:
- n = this.newNode(blockInit());
- x2 = this.x.update({ parentBlock: n }).pushTarget(n).nest();
- this.withContext(x2, function() {
- this.Statements(n);
- });
- this.mustMatch(RIGHT_CURLY);
- return n;
-
- case IF:
- n = this.newNode();
- n.condition = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- n.thenPart = this.Statement();
- n.elsePart = this.match(ELSE, true) ? this.Statement() : null;
- });
- return n;
-
- case SWITCH:
- // This allows CASEs after a DEFAULT, which is in the standard.
- n = this.newNode({ cases: [], defaultIndex: -1 });
- n.discriminant = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- this.mustMatch(LEFT_CURLY);
- while ((tt = this.t.get()) !== RIGHT_CURLY) {
- switch (tt) {
- case DEFAULT:
- if (n.defaultIndex >= 0)
- this.fail("More than one switch default");
- // FALL THROUGH
- case CASE:
- n2 = this.newNode();
- if (tt === DEFAULT)
- n.defaultIndex = n.cases.length;
- else
- n2.caseLabel = this.Expression(COLON);
- break;
-
- default:
- this.fail("Invalid switch case");
- }
- this.mustMatch(COLON);
- n2.statements = this.newNode(blockInit());
- while ((tt=this.peek(true)) !== CASE && tt !== DEFAULT &&
- tt !== RIGHT_CURLY)
- n2.statements.push(this.Statement());
- n.cases.push(n2);
- }
- });
- return n;
-
- case FOR:
- n = this.newNode(LOOP_INIT);
- n.blockComments = comments;
- if (this.match(IDENTIFIER)) {
- if (this.t.token.value === "each")
- n.isEach = true;
- else
- this.t.unget();
- }
- if (!this.parenFreeMode)
- this.mustMatch(LEFT_PAREN);
- x2 = this.x.pushTarget(n).nest();
- x3 = this.x.update({ inForLoopInit: true });
- n2 = null;
- if ((tt = this.peek(true)) !== SEMICOLON) {
- this.withContext(x3, function() {
- if (tt === VAR || tt === CONST) {
- this.t.get();
- n2 = this.Variables();
- } else if (tt === LET) {
- this.t.get();
- if (this.peek() === LEFT_PAREN) {
- n2 = this.LetBlock(false);
- } else {
- // Let in for head, we need to add an implicit block
- // around the rest of the for.
- this.x.parentBlock = n;
- n.varDecls = [];
- n2 = this.Variables();
- }
- } else {
- n2 = this.Expression();
- }
- });
- }
- if (n2 && this.match(IN)) {
- n.type = FOR_IN;
- this.withContext(x3, function() {
- n.object = this.Expression();
- if (n2.type === VAR || n2.type === LET) {
- c = n2.children;
-
- // Destructuring turns one decl into multiples, so either
- // there must be only one destructuring or only one
- // decl.
- if (c.length !== 1 && n2.destructurings.length !== 1) {
- // FIXME: this.fail ?
- throw new SyntaxError("Invalid for..in left-hand side",
- this.filename, n2.lineno);
- }
- if (n2.destructurings.length > 0) {
- n.iterator = n2.destructurings[0];
- } else {
- n.iterator = c[0];
- }
- n.varDecl = n2;
- } else {
- if (n2.type === ARRAY_INIT || n2.type === OBJECT_INIT) {
- n2.destructuredNames = this.checkDestructuring(n2);
- }
- n.iterator = n2;
- }
- });
- } else {
- x3.inForLoopInit = false;
- n.setup = n2;
- this.mustMatch(SEMICOLON);
- if (n.isEach)
- this.fail("Invalid for each..in loop");
- this.withContext(x3, function() {
- n.condition = (this.peek(true) === SEMICOLON)
- ? null
- : this.Expression();
- this.mustMatch(SEMICOLON);
- tt2 = this.peek(true);
- n.update = (this.parenFreeMode
- ? tt2 === LEFT_CURLY || definitions.isStatementStartCode[tt2]
- : tt2 === RIGHT_PAREN)
- ? null
- : this.Expression();
- });
- }
- if (!this.parenFreeMode)
- this.mustMatch(RIGHT_PAREN);
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- return n;
-
- case WHILE:
- n = this.newNode({ isLoop: true });
- n.blockComments = comments;
- n.condition = this.HeadExpression();
- x2 = this.x.pushTarget(n).nest();
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- return n;
-
- case DO:
- n = this.newNode({ isLoop: true });
- n.blockComments = comments;
- x2 = this.x.pushTarget(n).next();
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- this.mustMatch(WHILE);
- n.condition = this.HeadExpression();
- // <script language="JavaScript"> (without version hints) may need
- // automatic semicolon insertion without a newline after do-while.
- // See http://bugzilla.mozilla.org/show_bug.cgi?id=238945.
- this.match(SEMICOLON);
- return n;
-
- case BREAK:
- case CONTINUE:
- n = this.newNode();
- n.blockComments = comments;
-
- // handle the |foo: break foo;| corner case
- x2 = this.x.pushTarget(n);
-
- if (this.peekOnSameLine() === IDENTIFIER) {
- this.t.get();
- n.label = this.t.token.value;
- }
-
- if (n.label) {
- n.target = x2.labeledTargets.find(function(target) {
- return target.labels.has(n.label)
- });
- } else if (tt === CONTINUE) {
- n.target = x2.defaultLoopTarget;
- } else {
- n.target = x2.defaultTarget;
- }
-
- if (!n.target)
- this.fail("Invalid " + ((tt === BREAK) ? "break" : "continue"));
- if (!n.target.isLoop && tt === CONTINUE)
- this.fail("Invalid continue");
-
- break;
-
- case TRY:
- n = this.newNode({ catchClauses: [] });
- n.blockComments = comments;
- n.tryBlock = this.Block();
- while (this.match(CATCH)) {
- n2 = this.newNode();
- p = this.MaybeLeftParen();
- switch (this.t.get()) {
- case LEFT_BRACKET:
- case LEFT_CURLY:
- // Destructured catch identifiers.
- this.t.unget();
- n2.varName = this.DestructuringExpression(true);
- break;
- case IDENTIFIER:
- n2.varName = this.t.token.value;
- break;
- default:
- this.fail("missing identifier in catch");
- break;
- }
- if (this.match(IF)) {
- if (!this.mozillaMode)
- this.fail("Illegal catch guard");
- if (n.catchClauses.length && !n.catchClauses.top().guard)
- this.fail("Guarded catch after unguarded");
- n2.guard = this.Expression();
- }
- this.MaybeRightParen(p);
- n2.block = this.Block();
- n.catchClauses.push(n2);
- }
- if (this.match(FINALLY))
- n.finallyBlock = this.Block();
- if (!n.catchClauses.length && !n.finallyBlock)
- this.fail("Invalid try statement");
- return n;
-
- case CATCH:
- case FINALLY:
- this.fail(definitions.tokens[tt] + " without preceding try");
-
- case THROW:
- n = this.newNode();
- n.exception = this.Expression();
- break;
-
- case RETURN:
- n = this.ReturnOrYield();
- break;
-
- case WITH:
- if (this.x.banWith())
- this.fail("with statements not allowed in strict code or modules");
- n = this.newNode();
- n.blockComments = comments;
- n.object = this.HeadExpression();
- x2 = this.x.pushTarget(n).next();
- this.withContext(x2, function() {
- n.body = this.Statement();
- });
- return n;
-
- case VAR:
- case CONST:
- n = this.Variables();
- break;
-
- case LET:
- if (this.peek() === LEFT_PAREN) {
- n = this.LetBlock(true);
- return n;
- }
- n = this.Variables();
- break;
-
- case DEBUGGER:
- n = this.newNode();
- break;
-
- case NEWLINE:
- case SEMICOLON:
- n = this.newNode({ type: SEMICOLON });
- n.blockComments = comments;
- n.expression = null;
- return n;
-
- case IDENTIFIER:
- case USE:
- case MODULE:
- switch (this.t.token.value) {
- case "use":
- if (!isPragmaToken(this.peekOnSameLine())) {
- this.t.unget();
- break;
- }
- return this.newNode({ type: USE, params: this.Pragmas() });
-
- case "module":
- if (!this.x.modulesAllowed())
- this.fail("module declaration not at top level");
- this.x.parentScript.hasModules = true;
- tt = this.peekOnSameLine();
- if (tt !== IDENTIFIER && tt !== LEFT_CURLY) {
- this.t.unget();
- break;
- }
- n = this.newNode({ type: MODULE });
- n.blockComments = comments;
- this.mustMatch(IDENTIFIER);
- label = this.t.token.value;
-
- if (this.match(LEFT_CURLY)) {
- n.name = label;
- n.body = this.Script(true, false);
- n.module = new Module(n);
- this.mustMatch(RIGHT_CURLY);
- this.x.parentScript.modDefns.set(n.name, n);
- return n;
- }
-
- this.t.unget();
- this.ModuleVariables(n);
- return n;
-
- default:
- tt = this.peek();
- // Labeled statement.
- if (tt === COLON) {
- label = this.t.token.value;
- if (this.x.allLabels.has(label))
- this.fail("Duplicate label: " + label);
- this.t.get();
- n = this.newNode({ type: LABEL, label: label });
- n.blockComments = comments;
- x2 = this.x.pushLabel(label).nest();
- this.withContext(x2, function() {
- n.statement = this.Statement();
- });
- n.target = (n.statement.type === LABEL) ? n.statement.target : n.statement;
- return n;
- }
- // FALL THROUGH
- }
- // FALL THROUGH
-
- default:
- // Expression statement.
- // We unget the current token to parse the expression as a whole.
- n = this.newNode({ type: SEMICOLON });
- this.t.unget();
- n.blockComments = comments;
- n.expression = this.Expression();
- n.end = n.expression.end;
- break;
- }
-
- n.blockComments = comments;
- this.MagicalSemicolon();
- return n;
-}
-
-/*
- * isPragmaToken :: (number) -> boolean
- */
-function isPragmaToken(tt) {
- switch (tt) {
- case IDENTIFIER:
- case STRING:
- case NUMBER:
- case NULL:
- case TRUE:
- case FALSE:
- return true;
- }
- return false;
-}
-
-/*
- * Pragmas :: () -> Array[Array[token]]
- */
-Pp.Pragmas = function Pragmas() {
- var pragmas = [];
- do {
- pragmas.push(this.Pragma());
- } while (this.match(COMMA));
- this.MagicalSemicolon();
- return pragmas;
-}
-
-/*
- * Pragmas :: () -> Array[token]
- */
-Pp.Pragma = function Pragma() {
- var items = [];
- var tt;
- do {
- tt = this.t.get(true);
- items.push(this.t.token);
- } while (isPragmaToken(this.peek()));
- return items;
-}
-
-/*
- * MagicalSemicolon :: () -> void
- */
-Pp.MagicalSemicolon = function MagicalSemicolon() {
- var tt;
- if (this.t.lineno === this.t.token.lineno) {
- tt = this.peekOnSameLine();
- if (tt !== END && tt !== NEWLINE && tt !== SEMICOLON && tt !== RIGHT_CURLY)
- this.fail("missing ; before statement");
- }
- this.match(SEMICOLON);
-}
-
-/*
- * ReturnOrYield :: () -> (RETURN | YIELD) node
- */
-Pp.ReturnOrYield = function ReturnOrYield() {
- var n, b, tt = this.t.token.type, tt2;
-
- var parentScript = this.x.parentScript;
-
- if (tt === RETURN) {
- if (!this.x.inFunction)
- this.fail("Return not in function");
- } else /* if (tt === YIELD) */ {
- if (!this.x.inFunction)
- this.fail("Yield not in function");
- parentScript.hasYield = true;
- }
- n = this.newNode({ value: undefined });
-
- tt2 = (tt === RETURN) ? this.peekOnSameLine(true) : this.peek(true);
- if (tt2 !== END && tt2 !== NEWLINE &&
- tt2 !== SEMICOLON && tt2 !== RIGHT_CURLY
- && (tt !== YIELD ||
- (tt2 !== tt && tt2 !== RIGHT_BRACKET && tt2 !== RIGHT_PAREN &&
- tt2 !== COLON && tt2 !== COMMA))) {
- if (tt === RETURN) {
- n.value = this.Expression();
- parentScript.hasReturnWithValue = true;
- } else {
- n.value = this.AssignExpression();
- }
- } else if (tt === RETURN) {
- parentScript.hasEmptyReturn = true;
- }
-
- return n;
-}
-
-/*
- * ModuleExpression :: () -> (STRING | IDENTIFIER | DOT) node
- */
-Pp.ModuleExpression = function ModuleExpression() {
- return this.match(STRING) ? this.newNode() : this.QualifiedPath();
-}
-
-/*
- * ImportPathList :: () -> Array[DOT node]
- */
-Pp.ImportPathList = function ImportPathList() {
- var a = [];
- do {
- a.push(this.ImportPath());
- } while (this.match(COMMA));
- return a;
-}
-
-/*
- * ImportPath :: () -> DOT node
- */
-Pp.ImportPath = function ImportPath() {
- var n = this.QualifiedPath();
- if (!this.match(DOT)) {
- if (n.type === IDENTIFIER)
- this.fail("cannot import local variable");
- return n;
- }
-
- var n2 = this.newNode();
- n2.push(n);
- n2.push(this.ImportSpecifierSet());
- return n2;
-}
-
-/*
- * ExplicitSpecifierSet :: (() -> node) -> OBJECT_INIT node
- */
-Pp.ExplicitSpecifierSet = function ExplicitSpecifierSet(SpecifierRHS) {
- var n, n2, id, tt;
-
- n = this.newNode({ type: OBJECT_INIT });
- this.mustMatch(LEFT_CURLY);
-
- if (!this.match(RIGHT_CURLY)) {
- do {
- id = this.Identifier();
- if (this.match(COLON)) {
- n2 = this.newNode({ type: PROPERTY_INIT });
- n2.push(id);
- n2.push(SpecifierRHS());
- n.push(n2);
- } else {
- n.push(id);
- }
- } while (!this.match(RIGHT_CURLY) && this.mustMatch(COMMA));
- }
-
- return n;
-}
-
-/*
- * ImportSpecifierSet :: () -> (IDENTIFIER | OBJECT_INIT) node
- */
-Pp.ImportSpecifierSet = function ImportSpecifierSet() {
- var self = this;
- return this.match(MUL)
- ? this.newNode({ type: IDENTIFIER, name: "*" })
- : ExplicitSpecifierSet(function() { return self.Identifier() });
-}
-
-/*
- * Identifier :: () -> IDENTIFIER node
- */
-Pp.Identifier = function Identifier() {
- this.mustMatch(IDENTIFIER);
- return this.newNode({ type: IDENTIFIER });
-}
-
-/*
- * IdentifierName :: () -> IDENTIFIER node
- */
-Pp.IdentifierName = function IdentifierName() {
- this.mustMatch(IDENTIFIER, true);
- return this.newNode({ type: IDENTIFIER });
-}
-
-/*
- * QualifiedPath :: () -> (IDENTIFIER | DOT) node
- */
-Pp.QualifiedPath = function QualifiedPath() {
- var n, n2;
-
- n = this.Identifier();
-
- while (this.match(DOT)) {
- if (this.peek() !== IDENTIFIER) {
- // Unget the '.' token, which isn't part of the QualifiedPath.
- this.t.unget();
- break;
- }
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.Identifier());
- n = n2;
- }
-
- return n;
-}
-
-/*
- * ExportPath :: () -> (IDENTIFIER | DOT | OBJECT_INIT) node
- */
-Pp.ExportPath = function ExportPath() {
- var self = this;
- if (this.peek() === LEFT_CURLY)
- return this.ExplicitSpecifierSet(function() { return self.QualifiedPath() });
- return this.QualifiedPath();
-}
-
-/*
- * ExportPathList :: () -> Array[(IDENTIFIER | DOT | OBJECT_INIT) node]
- */
-Pp.ExportPathList = function ExportPathList() {
- var a = [];
- do {
- a.push(this.ExportPath());
- } while (this.match(COMMA));
- return a;
-}
-
-/*
- * FunctionDefinition :: (boolean,
- * DECLARED_FORM or EXPRESSED_FORM or STATEMENT_FORM,
- * [string] or null or undefined)
- * -> node
- */
-Pp.FunctionDefinition = function FunctionDefinition(requireName, functionForm, comments) {
- var tt;
- var f = this.newNode({ params: [], paramComments: [] });
- if (typeof comments === "undefined")
- comments = null;
- f.blockComments = comments;
- if (f.type !== FUNCTION)
- f.type = (f.value === "get") ? GETTER : SETTER;
- if (this.match(MUL))
- f.isExplicitGenerator = true;
- if (this.match(IDENTIFIER, false, true))
- f.name = this.t.token.value;
- else if (requireName)
- this.fail("missing function identifier");
-
- var inModule = this.x.inModule;
- x2 = new StaticContext(null, null, inModule, true, this.x.strictMode);
- this.withContext(x2, function() {
- this.mustMatch(LEFT_PAREN);
- if (!this.match(RIGHT_PAREN)) {
- do {
- tt = this.t.get();
- f.paramComments.push(this.t.lastBlockComment());
- switch (tt) {
- case LEFT_BRACKET:
- case LEFT_CURLY:
- // Destructured formal parameters.
- this.t.unget();
- f.params.push(this.DestructuringExpression());
- break;
- case IDENTIFIER:
- f.params.push(this.t.token.value);
- break;
- default:
- this.fail("missing formal parameter");
- }
- } while (this.match(COMMA));
- this.mustMatch(RIGHT_PAREN);
- }
-
- // Do we have an expression closure or a normal body?
- tt = this.t.get(true);
- if (tt !== LEFT_CURLY)
- this.t.unget();
-
- if (tt !== LEFT_CURLY) {
- f.body = this.AssignExpression();
- } else {
- f.body = this.Script(inModule, true);
- }
- });
-
- if (tt === LEFT_CURLY)
- this.mustMatch(RIGHT_CURLY);
-
- f.end = this.t.token.end;
- f.functionForm = functionForm;
- if (functionForm === DECLARED_FORM)
- this.x.parentScript.funDecls.push(f);
-
- if (this.x.inModule && !f.isExplicitGenerator && f.body.hasYield)
- this.fail("yield in non-generator function");
-
- if (f.isExplicitGenerator || f.body.hasYield)
- f.body = this.newNode({ type: GENERATOR, body: f.body });
-
- return f;
-}
-
-/*
- * ModuleVariables :: (MODULE node) -> void
- *
- * Parses a comma-separated list of module declarations (and maybe
- * initializations).
- */
-Pp.ModuleVariables = function ModuleVariables(n) {
- var n1, n2;
- do {
- n1 = this.Identifier();
- if (this.match(ASSIGN)) {
- n2 = this.ModuleExpression();
- n1.initializer = n2;
- if (n2.type === STRING)
- this.x.parentScript.modLoads.set(n1.value, n2.value);
- else
- this.x.parentScript.modAssns.set(n1.value, n1);
- }
- n.push(n1);
- } while (this.match(COMMA));
-}
-
-/*
- * Variables :: () -> node
- *
- * Parses a comma-separated list of var declarations (and maybe
- * initializations).
- */
-Pp.Variables = function Variables(letBlock) {
- var n, n2, ss, i, s, tt;
-
- tt = this.t.token.type;
- switch (tt) {
- case VAR:
- case CONST:
- s = this.x.parentScript;
- break;
- case LET:
- s = this.x.parentBlock;
- break;
- case LEFT_PAREN:
- tt = LET;
- s = letBlock;
- break;
- }
-
- n = this.newNode({ type: tt, destructurings: [] });
-
- do {
- tt = this.t.get();
- if (tt === LEFT_BRACKET || tt === LEFT_CURLY) {
- // Need to unget to parse the full destructured expression.
- this.t.unget();
-
- var dexp = this.DestructuringExpression(true);
-
- n2 = this.newNode({ type: IDENTIFIER,
- name: dexp,
- readOnly: n.type === CONST });
- n.push(n2);
- pushDestructuringVarDecls(n2.name.destructuredNames, s);
- n.destructurings.push({ exp: dexp, decl: n2 });
-
- if (this.x.inForLoopInit && this.peek() === IN) {
- continue;
- }
-
- this.mustMatch(ASSIGN);
- if (this.t.token.assignOp)
- this.fail("Invalid variable initialization");
-
- n2.blockComment = this.t.lastBlockComment();
- n2.initializer = this.AssignExpression();
-
- continue;
- }
-
- if (tt !== IDENTIFIER)
- this.fail("missing variable name");
-
- n2 = this.newNode({ type: IDENTIFIER,
- name: this.t.token.value,
- readOnly: n.type === CONST });
- n.push(n2);
- s.varDecls.push(n2);
-
- if (this.match(ASSIGN)) {
- var comment = this.t.lastBlockComment();
- if (this.t.token.assignOp)
- this.fail("Invalid variable initialization");
-
- n2.initializer = this.AssignExpression();
- } else {
- var comment = this.t.lastBlockComment();
- }
- n2.blockComment = comment;
- } while (this.match(COMMA));
-
- return n;
-}
-
-/*
- * LetBlock :: (boolean) -> node
- *
- * Does not handle let inside of for loop init.
- */
-Pp.LetBlock = function LetBlock(isStatement) {
- var n, n2;
-
- // t.token.type must be LET
- n = this.newNode({ type: LET_BLOCK, varDecls: [] });
- this.mustMatch(LEFT_PAREN);
- n.variables = this.Variables(n);
- this.mustMatch(RIGHT_PAREN);
-
- if (isStatement && this.peek() !== LEFT_CURLY) {
- /*
- * If this is really an expression in let statement guise, then we
- * need to wrap the LET_BLOCK node in a SEMICOLON node so that we pop
- * the return value of the expression.
- */
- n2 = this.newNode({ type: SEMICOLON, expression: n });
- isStatement = false;
- }
-
- if (isStatement)
- n.block = this.Block();
- else
- n.expression = this.AssignExpression();
-
- return n;
-}
-
-Pp.checkDestructuring = function checkDestructuring(n, simpleNamesOnly) {
- if (n.type === ARRAY_COMP)
- this.fail("Invalid array comprehension left-hand side");
- if (n.type !== ARRAY_INIT && n.type !== OBJECT_INIT)
- return;
-
- var lhss = {};
- var nn, n2, idx, sub, cc, c = n.children;
- for (var i = 0, j = c.length; i < j; i++) {
- if (!(nn = c[i]))
- continue;
- if (nn.type === PROPERTY_INIT) {
- cc = nn.children;
- sub = cc[1];
- idx = cc[0].value;
- } else if (n.type === OBJECT_INIT) {
- // Do we have destructuring shorthand {foo, bar}?
- sub = nn;
- idx = nn.value;
- } else {
- sub = nn;
- idx = i;
- }
-
- if (sub.type === ARRAY_INIT || sub.type === OBJECT_INIT) {
- lhss[idx] = this.checkDestructuring(sub, simpleNamesOnly);
- } else {
- if (simpleNamesOnly && sub.type !== IDENTIFIER) {
- // In declarations, lhs must be simple names
- this.fail("missing name in pattern");
- }
-
- lhss[idx] = sub;
- }
- }
-
- return lhss;
-}
-
-Pp.DestructuringExpression = function DestructuringExpression(simpleNamesOnly) {
- var n = this.PrimaryExpression();
- // Keep the list of lefthand sides for varDecls
- n.destructuredNames = this.checkDestructuring(n, simpleNamesOnly);
- return n;
-}
-
-Pp.GeneratorExpression = function GeneratorExpression(e) {
- return this.newNode({ type: GENERATOR,
- expression: e,
- tail: this.ComprehensionTail() });
-}
-
-Pp.ComprehensionTail = function ComprehensionTail() {
- var body, n, n2, n3, p;
-
- // t.token.type must be FOR
- body = this.newNode({ type: COMP_TAIL });
-
- do {
- // Comprehension tails are always for..in loops.
- n = this.newNode({ type: FOR_IN, isLoop: true });
- if (this.match(IDENTIFIER)) {
- // But sometimes they're for each..in.
- if (this.mozillaMode && this.t.token.value === "each")
- n.isEach = true;
- else
- this.t.unget();
- }
- p = this.MaybeLeftParen();
- switch(this.t.get()) {
- case LEFT_BRACKET:
- case LEFT_CURLY:
- this.t.unget();
- // Destructured left side of for in comprehension tails.
- n.iterator = this.DestructuringExpression();
- break;
-
- case IDENTIFIER:
- n.iterator = n3 = this.newNode({ type: IDENTIFIER });
- n3.name = n3.value;
- n.varDecl = n2 = this.newNode({ type: VAR });
- n2.push(n3);
- this.x.parentScript.varDecls.push(n3);
- // Don't add to varDecls since the semantics of comprehensions is
- // such that the variables are in their own function when
- // desugared.
- break;
-
- default:
- this.fail("missing identifier");
- }
- this.mustMatch(IN);
- n.object = this.Expression();
- this.MaybeRightParen(p);
- body.push(n);
- } while (this.match(FOR));
-
- // Optional guard.
- if (this.match(IF))
- body.guard = this.HeadExpression();
-
- return body;
-}
-
-Pp.HeadExpression = function HeadExpression() {
- var p = this.MaybeLeftParen();
- var n = this.ParenExpression();
- this.MaybeRightParen(p);
- if (p === END && !n.parenthesized) {
- var tt = this.peek();
- if (tt !== LEFT_CURLY && !definitions.isStatementStartCode[tt])
- this.fail("Unparenthesized head followed by unbraced body");
- }
- return n;
-}
-
-Pp.ParenExpression = function ParenExpression() {
- // Always accept the 'in' operator in a parenthesized expression,
- // where it's unambiguous, even if we might be parsing the init of a
- // for statement.
- var x2 = this.x.update({
- inForLoopInit: this.x.inForLoopInit && (this.t.token.type === LEFT_PAREN)
- });
- var n = this.withContext(x2, function() {
- return this.Expression();
- });
- if (this.match(FOR)) {
- if (n.type === YIELD && !n.parenthesized)
- this.fail("Yield expression must be parenthesized");
- if (n.type === COMMA && !n.parenthesized)
- this.fail("Generator expression must be parenthesized");
- n = this.GeneratorExpression(n);
- }
-
- return n;
-}
-
-/*
- * Expression :: () -> node
- *
- * Top-down expression parser matched against SpiderMonkey.
- */
-Pp.Expression = function Expression() {
- var n, n2;
-
- n = this.AssignExpression();
- if (this.match(COMMA)) {
- n2 = this.newNode({ type: COMMA });
- n2.push(n);
- n = n2;
- do {
- n2 = n.children[n.children.length-1];
- if (n2.type === YIELD && !n2.parenthesized)
- this.fail("Yield expression must be parenthesized");
- n.push(this.AssignExpression());
- } while (this.match(COMMA));
- }
-
- return n;
-}
-
-Pp.AssignExpression = function AssignExpression() {
- var n, lhs;
-
- // Have to treat yield like an operand because it could be the leftmost
- // operand of the expression.
- if (this.match(YIELD, true))
- return this.ReturnOrYield();
-
- n = this.newNode({ type: ASSIGN });
- lhs = this.ConditionalExpression();
-
- if (!this.match(ASSIGN)) {
- return lhs;
- }
-
- n.blockComment = this.t.lastBlockComment();
-
- switch (lhs.type) {
- case OBJECT_INIT:
- case ARRAY_INIT:
- lhs.destructuredNames = this.checkDestructuring(lhs);
- // FALL THROUGH
- case IDENTIFIER: case DOT: case INDEX: case CALL:
- break;
- default:
- this.fail("Bad left-hand side of assignment");
- break;
- }
-
- n.assignOp = lhs.assignOp = this.t.token.assignOp;
- n.push(lhs);
- n.push(this.AssignExpression());
-
- return n;
-}
-
-Pp.ConditionalExpression = function ConditionalExpression() {
- var n, n2;
-
- n = this.OrExpression();
- if (this.match(HOOK)) {
- n2 = n;
- n = this.newNode({ type: HOOK });
- n.push(n2);
- var x2 = this.x.update({ inForLoopInit: false });
- this.withContext(x2, function() {
- n.push(this.AssignExpression());
- });
- if (!this.match(COLON))
- this.fail("missing : after ?");
- n.push(this.AssignExpression());
- }
-
- return n;
-}
-
-Pp.OrExpression = function OrExpression() {
- var n, n2;
-
- n = this.AndExpression();
- while (this.match(OR)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.AndExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.AndExpression = function AndExpression() {
- var n, n2;
-
- n = this.BitwiseOrExpression();
- while (this.match(AND)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.BitwiseOrExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.BitwiseOrExpression = function BitwiseOrExpression() {
- var n, n2;
-
- n = this.BitwiseXorExpression();
- while (this.match(BITWISE_OR)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.BitwiseXorExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.BitwiseXorExpression = function BitwiseXorExpression() {
- var n, n2;
-
- n = this.BitwiseAndExpression();
- while (this.match(BITWISE_XOR)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.BitwiseAndExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.BitwiseAndExpression = function BitwiseAndExpression() {
- var n, n2;
-
- n = this.EqualityExpression();
- while (this.match(BITWISE_AND)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.EqualityExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.EqualityExpression = function EqualityExpression() {
- var n, n2;
-
- n = this.RelationalExpression();
- while (this.match(EQ) || this.match(NE) ||
- this.match(STRICT_EQ) || this.match(STRICT_NE)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.RelationalExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.RelationalExpression = function RelationalExpression() {
- var n, n2;
- var x2 = this.x.update({ inForLoopInit: false });
- this.withContext(x2, function() {
- n = this.ShiftExpression();
- while ((this.match(LT) || this.match(LE) || this.match(GE) || this.match(GT) ||
- (!this.x.inForLoopInit && this.match(IN)) ||
- this.match(INSTANCEOF))) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.ShiftExpression());
- n = n2;
- }
- });
-
- return n;
-}
-
-Pp.ShiftExpression = function ShiftExpression() {
- var n, n2;
-
- n = this.AddExpression();
- while (this.match(LSH) || this.match(RSH) || this.match(URSH)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.AddExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.AddExpression = function AddExpression() {
- var n, n2;
-
- n = this.MultiplyExpression();
- while (this.match(PLUS) || this.match(MINUS)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.MultiplyExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.MultiplyExpression = function MultiplyExpression() {
- var n, n2;
-
- n = this.UnaryExpression();
- while (this.match(MUL) || this.match(DIV) || this.match(MOD)) {
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.UnaryExpression());
- n = n2;
- }
-
- return n;
-}
-
-Pp.UnaryExpression = function UnaryExpression() {
- var n, n2, tt;
-
- switch (tt = this.t.get(true)) {
- case DELETE: case VOID: case TYPEOF:
- case NOT: case BITWISE_NOT: case PLUS: case MINUS:
- if (tt === PLUS)
- n = this.newNode({ type: UNARY_PLUS });
- else if (tt === MINUS)
- n = this.newNode({ type: UNARY_MINUS });
- else
- n = this.newNode();
- n.push(this.UnaryExpression());
- break;
-
- case INCREMENT:
- case DECREMENT:
- // Prefix increment/decrement.
- n = this.newNode();
- n.push(this.MemberExpression(true));
- break;
-
- default:
- this.t.unget();
- n = this.MemberExpression(true);
-
- // Don't look across a newline boundary for a postfix {in,de}crement.
- if (this.t.tokens[(this.t.tokenIndex + this.t.lookahead - 1) & 3].lineno ===
- this.t.lineno) {
- if (this.match(INCREMENT) || this.match(DECREMENT)) {
- n2 = this.newNode({ postfix: true });
- n2.push(n);
- n = n2;
- }
- }
- break;
- }
-
- return n;
-}
-
-Pp.MemberExpression = function MemberExpression(allowCallSyntax) {
- var n, n2, name, tt;
-
- if (this.match(NEW)) {
- n = this.newNode();
- n.push(this.MemberExpression(false));
- if (this.match(LEFT_PAREN)) {
- n.type = NEW_WITH_ARGS;
- n.push(this.ArgumentList());
- }
- } else {
- n = this.PrimaryExpression();
- }
-
- while ((tt = this.t.get()) !== END) {
- switch (tt) {
- case DOT:
- n2 = this.newNode();
- n2.push(n);
- n2.push(this.IdentifierName());
- break;
-
- case LEFT_BRACKET:
- n2 = this.newNode({ type: INDEX });
- n2.push(n);
- n2.push(this.Expression());
- this.mustMatch(RIGHT_BRACKET);
- break;
-
- case LEFT_PAREN:
- if (allowCallSyntax) {
- n2 = this.newNode({ type: CALL });
- n2.push(n);
- n2.push(this.ArgumentList());
- break;
- }
-
- // FALL THROUGH
- default:
- this.t.unget();
- return n;
- }
-
- n = n2;
- }
-
- return n;
-}
-
-Pp.ArgumentList = function ArgumentList() {
- var n, n2;
-
- n = this.newNode({ type: LIST });
- if (this.match(RIGHT_PAREN, true))
- return n;
- do {
- n2 = this.AssignExpression();
- if (n2.type === YIELD && !n2.parenthesized && this.peek() === COMMA)
- this.fail("Yield expression must be parenthesized");
- if (this.match(FOR)) {
- n2 = this.GeneratorExpression(n2);
- if (n.children.length > 1 || this.peek(true) === COMMA)
- this.fail("Generator expression must be parenthesized");
- }
- n.push(n2);
- } while (this.match(COMMA));
- this.mustMatch(RIGHT_PAREN);
-
- return n;
-}
-
-Pp.PrimaryExpression = function PrimaryExpression() {
- var n, n2, tt = this.t.get(true);
-
- switch (tt) {
- case FUNCTION:
- n = this.FunctionDefinition(false, EXPRESSED_FORM);
- break;
-
- case LEFT_BRACKET:
- n = this.newNode({ type: ARRAY_INIT });
- while ((tt = this.peek(true)) !== RIGHT_BRACKET) {
- if (tt === COMMA) {
- this.t.get();
- n.push(null);
- continue;
- }
- n.push(this.AssignExpression());
- if (tt !== COMMA && !this.match(COMMA))
- break;
- }
-
- // If we matched exactly one element and got a FOR, we have an
- // array comprehension.
- if (n.children.length === 1 && this.match(FOR)) {
- n2 = this.newNode({ type: ARRAY_COMP,
- expression: n.children[0],
- tail: this.ComprehensionTail() });
- n = n2;
- }
- this.mustMatch(RIGHT_BRACKET);
- break;
-
- case LEFT_CURLY:
- var id, fd;
- n = this.newNode({ type: OBJECT_INIT });
-
- object_init:
- if (!this.match(RIGHT_CURLY)) {
- do {
- tt = this.t.get();
- if ((this.t.token.value === "get" || this.t.token.value === "set") &&
- this.peek() === IDENTIFIER) {
- n.push(this.FunctionDefinition(true, EXPRESSED_FORM));
- } else {
- var comments = this.t.blockComments;
- switch (tt) {
- case IDENTIFIER: case NUMBER: case STRING:
- id = this.newNode({ type: IDENTIFIER });
- break;
- case RIGHT_CURLY:
- break object_init;
- default:
- if (this.t.token.value in definitions.keywords) {
- id = this.newNode({ type: IDENTIFIER });
- break;
- }
- this.fail("Invalid property name");
- }
- if (this.match(COLON)) {
- n2 = this.newNode({ type: PROPERTY_INIT });
- n2.push(id);
- n2.push(this.AssignExpression());
- n2.blockComments = comments;
- n.push(n2);
- } else {
- // Support, e.g., |var {x, y} = o| as destructuring shorthand
- // for |var {x: x, y: y} = o|, per proposed JS2/ES4 for JS1.8.
- if (this.peek() !== COMMA && this.peek() !== RIGHT_CURLY)
- this.fail("missing : after property");
- n.push(id);
- }
- }
- } while (this.match(COMMA));
- this.mustMatch(RIGHT_CURLY);
- }
- break;
-
- case LEFT_PAREN:
- n = this.ParenExpression();
- this.mustMatch(RIGHT_PAREN);
- n.parenthesized = true;
- break;
-
- case LET:
- n = this.LetBlock(false);
- break;
-
- case NULL: case THIS: case TRUE: case FALSE:
- case IDENTIFIER: case NUMBER: case STRING: case REGEXP:
- n = this.newNode();
- break;
-
- default:
- this.fail("missing operand; found " + definitions.tokens[tt]);
- break;
- }
-
- return n;
-}
-
-/*
- * parse :: (source, filename, line number) -> node
- */
-function parse(s, f, l) {
- var t = new Tokenizer(s, f, l, options.allowHTMLComments);
- var p = new Parser(t);
- return p.Script(false, false, true);
-}
-
-/*
- * parseFunction :: (source, boolean,
- * DECLARED_FORM or EXPRESSED_FORM or STATEMENT_FORM,
- * filename, line number)
- * -> node
- */
-function parseFunction(s, requireName, form, f, l) {
- var t = new Tokenizer(s, f, l);
- var p = new Parser(t);
- p.x = new StaticContext(null, null, false, false, false);
- return p.FunctionDefinition(requireName, form);
-}
-
-/*
- * parseStdin :: (source, {line number}, string, (string) -> boolean) -> program node
- */
-function parseStdin(s, ln, prefix, isCommand) {
- // the special .begin command is only recognized at the beginning
- if (s.match(/^[\s]*\.begin[\s]*$/)) {
- ++ln.value;
- return parseMultiline(ln, prefix);
- }
-
- // commands at the beginning are treated as the entire input
- if (isCommand(s.trim()))
- s = "";
-
- for (;;) {
- try {
- var t = new Tokenizer(s, "stdin", ln.value, false);
- var p = new Parser(t);
- var n = p.Script(false, false);
- ln.value = t.lineno;
- return n;
- } catch (e) {
- if (!p.unexpectedEOF)
- throw e;
-
- // commands in the middle are not treated as part of the input
- var more;
- do {
- if (prefix)
- putstr(prefix);
- more = readline();
- if (!more)
- throw e;
- } while (isCommand(more.trim()));
-
- s += "\n" + more;
- }
- }
-}
-
-/*
- * parseMultiline :: ({line number}, string | null) -> program node
- */
-function parseMultiline(ln, prefix) {
- var s = "";
- for (;;) {
- if (prefix)
- putstr(prefix);
- var more = readline();
- if (more === null)
- return null;
- // the only command recognized in multiline mode is .end
- if (more.match(/^[\s]*\.end[\s]*$/))
- break;
- s += "\n" + more;
- }
- var t = new Tokenizer(s, "stdin", ln.value, false);
- var p = new Parser(t);
- var n = p.Script(false, false);
- ln.value = t.lineno;
- return n;
-}
-
-exports.parse = parse;
-exports.parseStdin = parseStdin;
-exports.parseFunction = parseFunction;
-exports.Node = Node;
-exports.DECLARED_FORM = DECLARED_FORM;
-exports.EXPRESSED_FORM = EXPRESSED_FORM;
-exports.STATEMENT_FORM = STATEMENT_FORM;
-exports.Tokenizer = Tokenizer;
-exports.Parser = Parser;
-exports.Module = Module;
-exports.Export = Export;
-
-});
-
-/*
- * Narcissus - JS implemented in JS.
- *
- * Lexical scanner.
- */
-
- define('ace/narcissus/lexer', ['require', 'exports', 'module' , 'ace/narcissus/definitions'], function(require, exports, module) {
-
-var definitions = require('./definitions');
-
-// Set constants in the local scope.
-eval(definitions.consts);
-
-// Build up a trie of operator tokens.
-var opTokens = {};
-for (var op in definitions.opTypeNames) {
- if (op === '\n' || op === '.')
- continue;
-
- var node = opTokens;
- for (var i = 0; i < op.length; i++) {
- var ch = op[i];
- if (!(ch in node))
- node[ch] = {};
- node = node[ch];
- node.op = op;
- }
-}
-
-/*
- * Since JavaScript provides no convenient way to determine if a
- * character is in a particular Unicode category, we use
- * metacircularity to accomplish this (oh yeaaaah!)
- */
-function isValidIdentifierChar(ch, first) {
- // check directly for ASCII
- if (ch <= "\u007F") {
- if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '$' || ch === '_' ||
- (!first && (ch >= '0' && ch <= '9'))) {
- return true;
- }
- return false;
- }
-
- // create an object to test this in
- var x = {};
- x["x"+ch] = true;
- x[ch] = true;
-
- // then use eval to determine if it's a valid character
- var valid = false;
- try {
- valid = (Function("x", "return (x." + (first?"":"x") + ch + ");")(x) === true);
- } catch (ex) {}
-
- return valid;
-}
-
-function isIdentifier(str) {
- if (typeof str !== "string")
- return false;
-
- if (str.length === 0)
- return false;
-
- if (!isValidIdentifierChar(str[0], true))
- return false;
-
- for (var i = 1; i < str.length; i++) {
- if (!isValidIdentifierChar(str[i], false))
- return false;
- }
-
- return true;
-}
-
-/*
- * Tokenizer :: (source, filename, line number, boolean) -> Tokenizer
- */
-function Tokenizer(s, f, l, allowHTMLComments) {
- this.cursor = 0;
- this.source = String(s);
- this.tokens = [];
- this.tokenIndex = 0;
- this.lookahead = 0;
- this.scanNewlines = false;
- this.filename = f || "";
- this.lineno = l || 1;
- this.allowHTMLComments = allowHTMLComments;
- this.blockComments = null;
-}
-
-Tokenizer.prototype = {
- get done() {
- // We need to set scanOperand to true here because the first thing
- // might be a regexp.
- return this.peek(true) === END;
- },
-
- get token() {
- return this.tokens[this.tokenIndex];
- },
-
- match: function (tt, scanOperand, keywordIsName) {
- return this.get(scanOperand, keywordIsName) === tt || this.unget();
- },
-
- mustMatch: function (tt, keywordIsName) {
- if (!this.match(tt, false, keywordIsName)) {
- throw this.newSyntaxError("Missing " +
- definitions.tokens[tt].toLowerCase());
- }
- return this.token;
- },
-
- peek: function (scanOperand) {
- var tt, next;
- if (this.lookahead) {
- next = this.tokens[(this.tokenIndex + this.lookahead) & 3];
- tt = (this.scanNewlines && next.lineno !== this.lineno)
- ? NEWLINE
- : next.type;
- } else {
- tt = this.get(scanOperand);
- this.unget();
- }
- return tt;
- },
-
- peekOnSameLine: function (scanOperand) {
- this.scanNewlines = true;
- var tt = this.peek(scanOperand);
- this.scanNewlines = false;
- return tt;
- },
-
- lastBlockComment: function() {
- var length = this.blockComments.length;
- return length ? this.blockComments[length - 1] : null;
- },
-
- // Eat comments and whitespace.
- skip: function () {
- var input = this.source;
- this.blockComments = [];
- for (;;) {
- var ch = input[this.cursor++];
- var next = input[this.cursor];
- // handle \r, \r\n and (always preferable) \n
- if (ch === '\r') {
- // if the next character is \n, we don't care about this at all
- if (next === '\n') continue;
-
- // otherwise, we want to consider this as a newline
- ch = '\n';
- }
-
- if (ch === '\n' && !this.scanNewlines) {
- this.lineno++;
- } else if (ch === '/' && next === '*') {
- var commentStart = ++this.cursor;
- for (;;) {
- ch = input[this.cursor++];
- if (ch === undefined)
- throw this.newSyntaxError("Unterminated comment");
-
- if (ch === '*') {
- next = input[this.cursor];
- if (next === '/') {
- var commentEnd = this.cursor - 1;
- this.cursor++;
- break;
- }
- } else if (ch === '\n') {
- this.lineno++;
- }
- }
- this.blockComments.push(input.substring(commentStart, commentEnd));
- } else if ((ch === '/' && next === '/') ||
- (this.allowHTMLComments && ch === '<' && next === '!' &&
- input[this.cursor + 1] === '-' && input[this.cursor + 2] === '-' &&
- (this.cursor += 2))) {
- this.cursor++;
- for (;;) {
- ch = input[this.cursor++];
- next = input[this.cursor];
- if (ch === undefined)
- return;
-
- if (ch === '\r') {
- // check for \r\n
- if (next !== '\n') ch = '\n';
- }
-
- if (ch === '\n') {
- if (this.scanNewlines) {
- this.cursor--;
- } else {
- this.lineno++;
- }
- break;
- }
- }
- } else if (!(ch in definitions.whitespace)) {
- this.cursor--;
- return;
- }
- }
- },
-
- // Lex the exponential part of a number, if present. Return true iff an
- // exponential part was found.
- lexExponent: function() {
- var input = this.source;
- var next = input[this.cursor];
- if (next === 'e' || next === 'E') {
- this.cursor++;
- ch = input[this.cursor++];
- if (ch === '+' || ch === '-')
- ch = input[this.cursor++];
-
- if (ch < '0' || ch > '9')
- throw this.newSyntaxError("Missing exponent");
-
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- return true;
- }
-
- return false;
- },
-
- lexZeroNumber: function (ch) {
- var token = this.token, input = this.source;
- token.type = NUMBER;
-
- ch = input[this.cursor++];
- if (ch === '.') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- this.lexExponent();
- token.value = parseFloat(
- input.substring(token.start, this.cursor));
- } else if (ch === 'x' || ch === 'X') {
- do {
- ch = input[this.cursor++];
- } while ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') ||
- (ch >= 'A' && ch <= 'F'));
- this.cursor--;
-
- token.value = parseInt(input.substring(token.start, this.cursor));
- } else if (ch >= '0' && ch <= '7') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '7');
- this.cursor--;
-
- token.value = parseInt(input.substring(token.start, this.cursor));
- } else {
- this.cursor--;
- this.lexExponent(); // 0E1, &c.
- token.value = 0;
- }
- },
-
- lexNumber: function (ch) {
- var token = this.token, input = this.source;
- token.type = NUMBER;
-
- var floating = false;
- do {
- ch = input[this.cursor++];
- if (ch === '.' && !floating) {
- floating = true;
- ch = input[this.cursor++];
- }
- } while (ch >= '0' && ch <= '9');
-
- this.cursor--;
-
- var exponent = this.lexExponent();
- floating = floating || exponent;
-
- var str = input.substring(token.start, this.cursor);
- token.value = floating ? parseFloat(str) : parseInt(str);
- },
-
- lexDot: function (ch) {
- var token = this.token, input = this.source;
- var next = input[this.cursor];
- if (next >= '0' && next <= '9') {
- do {
- ch = input[this.cursor++];
- } while (ch >= '0' && ch <= '9');
- this.cursor--;
-
- this.lexExponent();
-
- token.type = NUMBER;
- token.value = parseFloat(
- input.substring(token.start, this.cursor));
- } else {
- token.type = DOT;
- token.assignOp = null;
- token.value = '.';
- }
- },
-
- lexString: function (ch) {
- var token = this.token, input = this.source;
- token.type = STRING;
-
- var hasEscapes = false;
- var delim = ch;
- if (input.length <= this.cursor)
- throw this.newSyntaxError("Unterminated string literal");
- while ((ch = input[this.cursor++]) !== delim) {
- if (ch == '\n' || ch == '\r')
- throw this.newSyntaxError("Unterminated string literal");
- if (this.cursor == input.length)
- throw this.newSyntaxError("Unterminated string literal");
- if (ch === '\\') {
- hasEscapes = true;
- if (++this.cursor == input.length)
- throw this.newSyntaxError("Unterminated string literal");
- }
- }
-
- token.value = hasEscapes
- ? eval(input.substring(token.start, this.cursor))
- : input.substring(token.start + 1, this.cursor - 1);
- },
-
- lexRegExp: function (ch) {
- var token = this.token, input = this.source;
- token.type = REGEXP;
-
- do {
- ch = input[this.cursor++];
- if (ch === '\\') {
- this.cursor++;
- } else if (ch === '[') {
- do {
- if (ch === undefined)
- throw this.newSyntaxError("Unterminated character class");
-
- if (ch === '\\')
- this.cursor++;
-
- ch = input[this.cursor++];
- } while (ch !== ']');
- } else if (ch === undefined) {
- throw this.newSyntaxError("Unterminated regex");
- }
- } while (ch !== '/');
-
- do {
- ch = input[this.cursor++];
- } while (ch >= 'a' && ch <= 'z');
-
- this.cursor--;
-
- token.value = eval(input.substring(token.start, this.cursor));
- },
-
- lexOp: function (ch) {
- var token = this.token, input = this.source;
-
- // A bit ugly, but it seems wasteful to write a trie lookup routine
- // for only 3 characters...
- var node = opTokens[ch];
- var next = input[this.cursor];
- if (next in node) {
- node = node[next];
- this.cursor++;
- next = input[this.cursor];
- if (next in node) {
- node = node[next];
- this.cursor++;
- next = input[this.cursor];
- }
- }
-
- var op = node.op;
- if (definitions.assignOps[op] && input[this.cursor] === '=') {
- this.cursor++;
- token.type = ASSIGN;
- token.assignOp = definitions.tokenIds[definitions.opTypeNames[op]];
- op += '=';
- } else {
- token.type = definitions.tokenIds[definitions.opTypeNames[op]];
- token.assignOp = null;
- }
-
- token.value = op;
- },
-
- // FIXME: Unicode escape sequences
- lexIdent: function (ch, keywordIsName) {
- var token = this.token;
- var id = ch;
-
- while ((ch = this.getValidIdentifierChar(false)) !== null) {
- id += ch;
- }
-
- token.type = IDENTIFIER;
- token.value = id;
-
- if (keywordIsName)
- return;
-
- var kw;
-
- if (this.parser.mozillaMode) {
- kw = definitions.mozillaKeywords[id];
- if (kw) {
- token.type = kw;
- return;
- }
- }
-
- if (this.parser.x.strictMode) {
- kw = definitions.strictKeywords[id];
- if (kw) {
- token.type = kw;
- return;
- }
- }
-
- kw = definitions.keywords[id];
- if (kw)
- token.type = kw;
- },
-
- /*
- * Tokenizer.get :: ([boolean[, boolean]]) -> token type
- *
- * Consume input *only* if there is no lookahead.
- * Dispatch to the appropriate lexing function depending on the input.
- */
- get: function (scanOperand, keywordIsName) {
- var token;
- while (this.lookahead) {
- --this.lookahead;
- this.tokenIndex = (this.tokenIndex + 1) & 3;
- token = this.tokens[this.tokenIndex];
- if (token.type !== NEWLINE || this.scanNewlines)
- return token.type;
- }
-
- this.skip();
-
- this.tokenIndex = (this.tokenIndex + 1) & 3;
- token = this.tokens[this.tokenIndex];
- if (!token)
- this.tokens[this.tokenIndex] = token = {};
-
- var input = this.source;
- if (this.cursor >= input.length)
- return token.type = END;
-
- token.start = this.cursor;
- token.lineno = this.lineno;
-
- var ich = this.getValidIdentifierChar(true);
- var ch = (ich === null) ? input[this.cursor++] : null;
- if (ich !== null) {
- this.lexIdent(ich, keywordIsName);
- } else if (scanOperand && ch === '/') {
- this.lexRegExp(ch);
- } else if (ch in opTokens) {
- this.lexOp(ch);
- } else if (ch === '.') {
- this.lexDot(ch);
- } else if (ch >= '1' && ch <= '9') {
- this.lexNumber(ch);
- } else if (ch === '0') {
- this.lexZeroNumber(ch);
- } else if (ch === '"' || ch === "'") {
- this.lexString(ch);
- } else if (this.scanNewlines && (ch === '\n' || ch === '\r')) {
- // if this was a \r, look for \r\n
- if (ch === '\r' && input[this.cursor] === '\n') this.cursor++;
- token.type = NEWLINE;
- token.value = '\n';
- this.lineno++;
- } else {
- throw this.newSyntaxError("Illegal token");
- }
-
- token.end = this.cursor;
- return token.type;
- },
-
- /*
- * Tokenizer.unget :: void -> undefined
- *
- * Match depends on unget returning undefined.
- */
- unget: function () {
- if (++this.lookahead === 4) throw "PANIC: too much lookahead!";
- this.tokenIndex = (this.tokenIndex - 1) & 3;
- },
-
- newSyntaxError: function (m) {
- m = (this.filename ? this.filename + ":" : "") + this.lineno + ": " + m;
- var e = new SyntaxError(m, this.filename, this.lineno);
- e.source = this.source;
- e.cursor = this.lookahead
- ? this.tokens[(this.tokenIndex + this.lookahead) & 3].start
- : this.cursor;
- return e;
- },
-
-
- /* Gets a single valid identifier char from the input stream, or null
- * if there is none.
- */
- getValidIdentifierChar: function(first) {
- var input = this.source;
- if (this.cursor >= input.length) return null;
- var ch = input[this.cursor];
-
- // first check for \u escapes
- if (ch === '\\' && input[this.cursor+1] === 'u') {
- // get the character value
- try {
- ch = String.fromCharCode(parseInt(
- input.substring(this.cursor + 2, this.cursor + 6),
- 16));
- } catch (ex) {
- return null;
- }
- this.cursor += 5;
- }
-
- var valid = isValidIdentifierChar(ch, first);
- if (valid) this.cursor++;
- return (valid ? ch : null);
- },
-};
-
-
-exports.isIdentifier = isIdentifier;
-exports.Tokenizer = Tokenizer;
-
-});
-
-/*
- * Narcissus - JS implemented in JS.
- *
- * Well-known constants and lookup tables. Many consts are generated from the
- * tokens table via eval to minimize redundancy, so consumers must be compiled
- * separately to take advantage of the simple switch-case constant propagation
- * done by SpiderMonkey.
- */
-
-define('ace/narcissus/definitions', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-var tokens = [
- // End of source.
- "END",
-
- // Operators and punctuators. Some pair-wise order matters, e.g. (+, -)
- // and (UNARY_PLUS, UNARY_MINUS).
- "\n", ";",
- ",",
- "=",
- "?", ":", "CONDITIONAL",
- "||",
- "&&",
- "|",
- "^",
- "&",
- "==", "!=", "===", "!==",
- "<", "<=", ">=", ">",
- "<<", ">>", ">>>",
- "+", "-",
- "*", "/", "%",
- "!", "~", "UNARY_PLUS", "UNARY_MINUS",
- "++", "--",
- ".",
- "[", "]",
- "{", "}",
- "(", ")",
-
- // Nonterminal tree node type codes.
- "SCRIPT", "BLOCK", "LABEL", "FOR_IN", "CALL", "NEW_WITH_ARGS", "INDEX",
- "ARRAY_INIT", "OBJECT_INIT", "PROPERTY_INIT", "GETTER", "SETTER",
- "GROUP", "LIST", "LET_BLOCK", "ARRAY_COMP", "GENERATOR", "COMP_TAIL",
-
- // Contextual keywords.
- "IMPLEMENTS", "INTERFACE", "LET", "MODULE", "PACKAGE", "PRIVATE",
- "PROTECTED", "PUBLIC", "STATIC", "USE", "YIELD",
-
- // Terminals.
- "IDENTIFIER", "NUMBER", "STRING", "REGEXP",
-
- // Keywords.
- "break",
- "case", "catch", "const", "continue",
- "debugger", "default", "delete", "do",
- "else", "export",
- "false", "finally", "for", "function",
- "if", "import", "in", "instanceof",
- "new", "null",
- "return",
- "switch",
- "this", "throw", "true", "try", "typeof",
- "var", "void",
- "while", "with",
-];
-
-var strictKeywords = {
- __proto__: null,
- "implements": true,
- "interface": true,
- "let": true,
- //"module": true,
- "package": true,
- "private": true,
- "protected": true,
- "public": true,
- "static": true,
- "use": true,
- "yield": true
-};
-
-var statementStartTokens = [
- "break",
- "const", "continue",
- "debugger", "do",
- "for",
- "if",
- "let",
- "return",
- "switch",
- "throw", "try",
- "var",
- "yield",
- "while", "with",
-];
-
-// Whitespace characters (see ECMA-262 7.2)
-var whitespaceChars = [
- // normal whitespace:
- "\u0009", "\u000B", "\u000C", "\u0020", "\u00A0", "\uFEFF",
-
- // high-Unicode whitespace:
- "\u1680", "\u180E",
- "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006",
- "\u2007", "\u2008", "\u2009", "\u200A",
- "\u202F", "\u205F", "\u3000"
-];
-
-var whitespace = {};
-for (var i = 0; i < whitespaceChars.length; i++) {
- whitespace[whitespaceChars[i]] = true;
-}
-
-// Operator and punctuator mapping from token to tree node type name.
-// NB: because the lexer doesn't backtrack, all token prefixes must themselves
-// be valid tokens (e.g. !== is acceptable because its prefixes are the valid
-// tokens != and !).
-var opTypeNames = {
- '\n': "NEWLINE",
- ';': "SEMICOLON",
- ',': "COMMA",
- '?': "HOOK",
- ':': "COLON",
- '||': "OR",
- '&&': "AND",
- '|': "BITWISE_OR",
- '^': "BITWISE_XOR",
- '&': "BITWISE_AND",
- '===': "STRICT_EQ",
- '==': "EQ",
- '=': "ASSIGN",
- '!==': "STRICT_NE",
- '!=': "NE",
- '<<': "LSH",
- '<=': "LE",
- '<': "LT",
- '>>>': "URSH",
- '>>': "RSH",
- '>=': "GE",
- '>': "GT",
- '++': "INCREMENT",
- '--': "DECREMENT",
- '+': "PLUS",
- '-': "MINUS",
- '*': "MUL",
- '/': "DIV",
- '%': "MOD",
- '!': "NOT",
- '~': "BITWISE_NOT",
- '.': "DOT",
- '[': "LEFT_BRACKET",
- ']': "RIGHT_BRACKET",
- '{': "LEFT_CURLY",
- '}': "RIGHT_CURLY",
- '(': "LEFT_PAREN",
- ')': "RIGHT_PAREN"
-};
-
-// Hash of keyword identifier to tokens index. NB: we must null __proto__ to
-// avoid toString, etc. namespace pollution.
-var keywords = {__proto__: null};
-var mozillaKeywords = {__proto__: null};
-
-// Define const END, etc., based on the token names. Also map name to index.
-var tokenIds = {};
-
-var hostSupportsEvalConst = (function() {
- try {
- return eval("(function(s) { eval(s); return x })('const x = true;')");
- } catch (e) {
- return false;
- }
-})();
-
-// Building up a string to be eval'd in different contexts.
-var consts = hostSupportsEvalConst ? "const " : "var ";
-for (var i = 0, j = tokens.length; i < j; i++) {
- if (i > 0)
- consts += ", ";
- var t = tokens[i];
- var name;
- if (/^[a-z]/.test(t)) {
- name = t.toUpperCase();
- if (name === "LET" || name === "YIELD")
- mozillaKeywords[name] = i;
- if (strictKeywords[name])
- strictKeywords[name] = i;
- keywords[t] = i;
- } else {
- name = (/^\W/.test(t) ? opTypeNames[t] : t);
- }
- consts += name + " = " + i;
- tokenIds[name] = i;
- tokens[t] = i;
-}
-consts += ";";
-
-var isStatementStartCode = {__proto__: null};
-for (i = 0, j = statementStartTokens.length; i < j; i++)
- isStatementStartCode[keywords[statementStartTokens[i]]] = true;
-
-// Map assignment operators to their indexes in the tokens array.
-var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%'];
-
-for (i = 0, j = assignOps.length; i < j; i++) {
- t = assignOps[i];
- assignOps[t] = tokens[t];
-}
-
-function defineGetter(obj, prop, fn, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop,
- { get: fn, configurable: !dontDelete, enumerable: !dontEnum });
-}
-
-function defineGetterSetter(obj, prop, getter, setter, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop, {
- get: getter,
- set: setter,
- configurable: !dontDelete,
- enumerable: !dontEnum
- });
-}
-
-function defineMemoGetter(obj, prop, fn, dontDelete, dontEnum) {
- Object.defineProperty(obj, prop, {
- get: function() {
- var val = fn();
- defineProperty(obj, prop, val, dontDelete, true, dontEnum);
- return val;
- },
- configurable: true,
- enumerable: !dontEnum
- });
-}
-
-function defineProperty(obj, prop, val, dontDelete, readOnly, dontEnum) {
- Object.defineProperty(obj, prop,
- { value: val, writable: !readOnly, configurable: !dontDelete,
- enumerable: !dontEnum });
-}
-
-// Returns true if fn is a native function. (Note: SpiderMonkey specific.)
-function isNativeCode(fn) {
- // Relies on the toString method to identify native code.
- return ((typeof fn) === "function") && fn.toString().match(/\[native code\]/);
-}
-
-var Fpapply = Function.prototype.apply;
-
-function apply(f, o, a) {
- return Fpapply.call(f, [o].concat(a));
-}
-
-var applyNew;
-
-// ES5's bind is a simpler way to implement applyNew
-if (Function.prototype.bind) {
- applyNew = function applyNew(f, a) {
- return new (f.bind.apply(f, [,].concat(Array.prototype.slice.call(a))))();
- };
-} else {
- applyNew = function applyNew(f, a) {
- switch (a.length) {
- case 0:
- return new f();
- case 1:
- return new f(a[0]);
- case 2:
- return new f(a[0], a[1]);
- case 3:
- return new f(a[0], a[1], a[2]);
- default:
- var argStr = "a[0]";
- for (var i = 1, n = a.length; i < n; i++)
- argStr += ",a[" + i + "]";
- return eval("new f(" + argStr + ")");
- }
- };
-}
-
-function getPropertyDescriptor(obj, name) {
- while (obj) {
- if (({}).hasOwnProperty.call(obj, name))
- return Object.getOwnPropertyDescriptor(obj, name);
- obj = Object.getPrototypeOf(obj);
- }
-}
-
-function getPropertyNames(obj) {
- var table = Object.create(null, {});
- while (obj) {
- var names = Object.getOwnPropertyNames(obj);
- for (var i = 0, n = names.length; i < n; i++)
- table[names[i]] = true;
- obj = Object.getPrototypeOf(obj);
- }
- return Object.keys(table);
-}
-
-function getOwnProperties(obj) {
- var map = {};
- for (var name in Object.getOwnPropertyNames(obj))
- map[name] = Object.getOwnPropertyDescriptor(obj, name);
- return map;
-}
-
-function blacklistHandler(target, blacklist) {
- var mask = Object.create(null, {});
- var redirect = Dict.create(blacklist).mapObject(function(name) { return mask; });
- return mixinHandler(redirect, target);
-}
-
-function whitelistHandler(target, whitelist) {
- var catchall = Object.create(null, {});
- var redirect = Dict.create(whitelist).mapObject(function(name) { return target; });
- return mixinHandler(redirect, catchall);
-}
-
-/*
- * Mixin proxies break the single-inheritance model of prototypes, so
- * the handler treats all properties as own-properties:
- *
- * X
- * |
- * +------------+------------+
- * | O |
- * | | |
- * | O O O |
- * | | | | |
- * | O O O O |
- * | | | | | |
- * | O O O O O |
- * | | | | | | |
- * +-(*)--(w)--(x)--(y)--(z)-+
- */
-
-function mixinHandler(redirect, catchall) {
- function targetFor(name) {
- return hasOwn(redirect, name) ? redirect[name] : catchall;
- }
-
- function getMuxPropertyDescriptor(name) {
- var desc = getPropertyDescriptor(targetFor(name), name);
- if (desc)
- desc.configurable = true;
- return desc;
- }
-
- function getMuxPropertyNames() {
- var names1 = Object.getOwnPropertyNames(redirect).filter(function(name) {
- return name in redirect[name];
- });
- var names2 = getPropertyNames(catchall).filter(function(name) {
- return !hasOwn(redirect, name);
- });
- return names1.concat(names2);
- }
-
- function enumerateMux() {
- var result = Object.getOwnPropertyNames(redirect).filter(function(name) {
- return name in redirect[name];
- });
- for (name in catchall) {
- if (!hasOwn(redirect, name))
- result.push(name);
- };
- return result;
- }
-
- function hasMux(name) {
- return name in targetFor(name);
- }
-
- return {
- getOwnPropertyDescriptor: getMuxPropertyDescriptor,
- getPropertyDescriptor: getMuxPropertyDescriptor,
- getOwnPropertyNames: getMuxPropertyNames,
- defineProperty: function(name, desc) {
- Object.defineProperty(targetFor(name), name, desc);
- },
- "delete": function(name) {
- var target = targetFor(name);
- return delete target[name];
- },
- // FIXME: ha ha ha
- fix: function() { },
- has: hasMux,
- hasOwn: hasMux,
- get: function(receiver, name) {
- var target = targetFor(name);
- return target[name];
- },
- set: function(receiver, name, val) {
- var target = targetFor(name);
- target[name] = val;
- return true;
- },
- enumerate: enumerateMux,
- keys: enumerateMux
- };
-}
-
-function makePassthruHandler(obj) {
- // Handler copied from
- // http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy%20object#examplea_no-op_forwarding_proxy
- return {
- getOwnPropertyDescriptor: function(name) {
- var desc = Object.getOwnPropertyDescriptor(obj, name);
-
- // a trapping proxy's properties must always be configurable
- desc.configurable = true;
- return desc;
- },
- getPropertyDescriptor: function(name) {
- var desc = getPropertyDescriptor(obj, name);
-
- // a trapping proxy's properties must always be configurable
- desc.configurable = true;
- return desc;
- },
- getOwnPropertyNames: function() {
- return Object.getOwnPropertyNames(obj);
- },
- defineProperty: function(name, desc) {
- Object.defineProperty(obj, name, desc);
- },
- "delete": function(name) { return delete obj[name]; },
- fix: function() {
- if (Object.isFrozen(obj)) {
- return getOwnProperties(obj);
- }
-
- // As long as obj is not frozen, the proxy won't allow itself to be fixed.
- return undefined; // will cause a TypeError to be thrown
- },
-
- has: function(name) { return name in obj; },
- hasOwn: function(name) { return ({}).hasOwnProperty.call(obj, name); },
- get: function(receiver, name) { return obj[name]; },
-
- // bad behavior when set fails in non-strict mode
- set: function(receiver, name, val) { obj[name] = val; return true; },
- enumerate: function() {
- var result = [];
- for (name in obj) { result.push(name); };
- return result;
- },
- keys: function() { return Object.keys(obj); }
- };
-}
-
-var hasOwnProperty = ({}).hasOwnProperty;
-
-function hasOwn(obj, name) {
- return hasOwnProperty.call(obj, name);
-}
-
-function Dict(table, size) {
- this.table = table || Object.create(null, {});
- this.size = size || 0;
-}
-
-Dict.create = function(table) {
- var init = Object.create(null, {});
- var size = 0;
- var names = Object.getOwnPropertyNames(table);
- for (var i = 0, n = names.length; i < n; i++) {
- var name = names[i];
- init[name] = table[name];
- size++;
- }
- return new Dict(init, size);
-};
-
-Dict.prototype = {
- has: function(x) { return hasOwnProperty.call(this.table, x); },
- set: function(x, v) {
- if (!hasOwnProperty.call(this.table, x))
- this.size++;
- this.table[x] = v;
- },
- get: function(x) { return this.table[x]; },
- getDef: function(x, thunk) {
- if (!hasOwnProperty.call(this.table, x)) {
- this.size++;
- this.table[x] = thunk();
- }
- return this.table[x];
- },
- forEach: function(f) {
- var table = this.table;
- for (var key in table)
- f.call(this, key, table[key]);
- },
- map: function(f) {
- var table1 = this.table;
- var table2 = Object.create(null, {});
- this.forEach(function(key, val) {
- table2[key] = f.call(this, val, key);
- });
- return new Dict(table2, this.size);
- },
- mapObject: function(f) {
- var table1 = this.table;
- var table2 = Object.create(null, {});
- this.forEach(function(key, val) {
- table2[key] = f.call(this, val, key);
- });
- return table2;
- },
- toObject: function() {
- return this.mapObject(function(val) { return val; });
- },
- choose: function() {
- return Object.getOwnPropertyNames(this.table)[0];
- },
- remove: function(x) {
- if (hasOwnProperty.call(this.table, x)) {
- this.size--;
- delete this.table[x];
- }
- },
- copy: function() {
- var table = Object.create(null, {});
- for (var key in this.table)
- table[key] = this.table[key];
- return new Dict(table, this.size);
- },
- keys: function() {
- return Object.keys(this.table);
- },
- toString: function() { return "[object Dict]" }
-};
-
-var _WeakMap = typeof WeakMap === "function" ? WeakMap : (function() {
- // shim for ES6 WeakMap with poor asymptotics
- function WeakMap(array) {
- this.array = array || [];
- }
-
- function searchMap(map, key, found, notFound) {
- var a = map.array;
- for (var i = 0, n = a.length; i < n; i++) {
- var pair = a[i];
- if (pair.key === key)
- return found(pair, i);
- }
- return notFound();
- }
-
- WeakMap.prototype = {
- has: function(x) {
- return searchMap(this, x, function() { return true }, function() { return false });
- },
- set: function(x, v) {
- var a = this.array;
- searchMap(this, x,
- function(pair) { pair.value = v },
- function() { a.push({ key: x, value: v }) });
- },
- get: function(x) {
- return searchMap(this, x,
- function(pair) { return pair.value },
- function() { return null });
- },
- "delete": function(x) {
- var a = this.array;
- searchMap(this, x,
- function(pair, i) { a.splice(i, 1) },
- function() { });
- },
- toString: function() { return "[object WeakMap]" }
- };
-
- return WeakMap;
-})();
-
-// non-destructive stack
-function Stack(elts) {
- this.elts = elts || null;
-}
-
-Stack.prototype = {
- push: function(x) {
- return new Stack({ top: x, rest: this.elts });
- },
- top: function() {
- if (!this.elts)
- throw new Error("empty stack");
- return this.elts.top;
- },
- isEmpty: function() {
- return this.top === null;
- },
- find: function(test) {
- for (var elts = this.elts; elts; elts = elts.rest) {
- if (test(elts.top))
- return elts.top;
- }
- return null;
- },
- has: function(x) {
- return Boolean(this.find(function(elt) { return elt === x }));
- },
- forEach: function(f) {
- for (var elts = this.elts; elts; elts = elts.rest) {
- f(elts.top);
- }
- }
-};
-
-if (!Array.prototype.copy) {
- defineProperty(Array.prototype, "copy",
- function() {
- var result = [];
- for (var i = 0, n = this.length; i < n; i++)
- result[i] = this[i];
- return result;
- }, false, false, true);
-}
-
-if (!Array.prototype.top) {
- defineProperty(Array.prototype, "top",
- function() {
- return this.length && this[this.length-1];
- }, false, false, true);
-}
-
-exports.tokens = tokens;
-exports.whitespace = whitespace;
-exports.opTypeNames = opTypeNames;
-exports.keywords = keywords;
-exports.mozillaKeywords = mozillaKeywords;
-exports.strictKeywords = strictKeywords;
-exports.isStatementStartCode = isStatementStartCode;
-exports.tokenIds = tokenIds;
-exports.consts = consts;
-exports.assignOps = assignOps;
-exports.defineGetter = defineGetter;
-exports.defineGetterSetter = defineGetterSetter;
-exports.defineMemoGetter = defineMemoGetter;
-exports.defineProperty = defineProperty;
-exports.isNativeCode = isNativeCode;
-exports.apply = apply;
-exports.applyNew = applyNew;
-exports.mixinHandler = mixinHandler;
-exports.whitelistHandler = whitelistHandler;
-exports.blacklistHandler = blacklistHandler;
-exports.makePassthruHandler = makePassthruHandler;
-exports.Dict = Dict;
-exports.WeakMap = _WeakMap;
-exports.Stack = Stack;
-
-});
-
-define('ace/narcissus/options', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-// Global variables to hide from the interpreter
-exports.hiddenHostGlobals = { Narcissus: true };
-
-// Desugar SpiderMonkey language extensions?
-exports.desugarExtensions = false;
-
-// Allow HTML comments?
-exports.allowHTMLComments = false;
-
-// Allow non-standard Mozilla extensions?
-exports.mozillaMode = true;
-
-// Allow experimental paren-free mode?
-exports.parenFreeMode = false;
-
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/worker-json.js b/vendor/assets/javascripts/ace-src-noconflict/worker-json.js
deleted file mode 100644
index 8a619ff1474..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/worker-json.js
+++ /dev/null
@@ -1,2946 +0,0 @@
-"no use strict";
-
-var console = {
- log: function(msgs) {
- postMessage({type: "log", data: arguments.join(" ")});
- }
-};
-var window = {
- console: console
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- var moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-
-var require = function(parentId, id) {
- if (!id.charAt)
- throw new Error("worker.js require() accepts only (parentId, id) as arguments");
-
- var id = normalizeModule(parentId, id);
-
- var module = require.modules[id];
- if (module) {
- if (!module.initialized) {
- module.initialized = true;
- module.exports = module.factory().exports;
- }
- return module.exports;
- }
-
- var chunks = id.split("/");
- chunks[0] = require.tlns[chunks[0]] || chunks[0];
- var path = chunks.join("/") + ".js";
-
- require.id = id;
- importScripts(path);
- return require(parentId, id);
-};
-
-require.modules = {};
-require.tlns = {};
-
-var define = function(id, deps, factory) {
- if (arguments.length == 2) {
- factory = deps;
- if (typeof id != "string") {
- deps = id;
- id = require.id;
- }
- } else if (arguments.length == 1) {
- factory = id;
- id = require.id;
- }
-
- if (id.indexOf("text!") === 0)
- return;
-
- var req = function(deps, factory) {
- return require(id, deps, factory);
- };
-
- require.modules[id] = {
- factory: function() {
- var module = {
- exports: {}
- };
- var returnExports = factory(req, module.exports, module);
- if (returnExports)
- module.exports = returnExports;
- return module;
- }
- };
-};
-
-function initBaseUrls(topLevelNamespaces) {
- require.tlns = topLevelNamespaces;
-}
-
-function initSender() {
-
- var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
- var oop = require(null, "ace/lib/oop");
-
- var Sender = function() {};
-
- (function() {
-
- oop.implement(this, EventEmitter);
-
- this.callback = function(data, callbackId) {
- postMessage({
- type: "call",
- id: callbackId,
- data: data
- });
- };
-
- this.emit = function(name, data) {
- postMessage({
- type: "event",
- name: name,
- data: data
- });
- };
-
- }).call(Sender.prototype);
-
- return new Sender();
-}
-
-var main;
-var sender;
-
-onmessage = function(e) {
- var msg = e.data;
- if (msg.command) {
- main[msg.command].apply(main, msg.args);
- }
- else if (msg.init) {
- initBaseUrls(msg.tlns);
- require(null, "ace/lib/fixoldbrowsers");
- sender = initSender();
- var clazz = require(null, msg.module)[msg.classname];
- main = new clazz(sender);
- }
- else if (msg.event && sender) {
- sender._emit(msg.event, msg.data);
- }
-};
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-define('ace/mode/json_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/json/json_parse'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var Mirror = require("../worker/mirror").Mirror;
-var parse = require("./json/json_parse");
-
-var JsonWorker = exports.JsonWorker = function(sender) {
- Mirror.call(this, sender);
- this.setTimeout(200);
-};
-
-oop.inherits(JsonWorker, Mirror);
-
-(function() {
-
- this.onUpdate = function() {
- var value = this.doc.getValue();
-
- try {
- var result = parse(value);
- } catch (e) {
- var pos = this.charToDocumentPosition(e.at-1);
- this.sender.emit("error", {
- row: pos.row,
- column: pos.column,
- text: e.message,
- type: "error"
- });
- return;
- }
- this.sender.emit("ok");
- };
-
- this.charToDocumentPosition = function(charPos) {
- var i = 0;
- var len = this.doc.getLength();
- var nl = this.doc.getNewLineCharacter().length;
-
- if (!len) {
- return { row: 0, column: 0};
- }
-
- var lineStart = 0;
- while (i < len) {
- var line = this.doc.getLine(i);
- var lineLength = line.length + nl;
- if (lineStart + lineLength > charPos)
- return {
- row: i,
- column: charPos - lineStart
- };
-
- lineStart += lineLength;
- i += 1;
- }
-
- return {
- row: i-1,
- column: line.length
- };
- };
-
-}).call(JsonWorker.prototype);
-
-});
-define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
-
-
-var Document = require("../document").Document;
-var lang = require("../lib/lang");
-
-var Mirror = exports.Mirror = function(sender) {
- this.sender = sender;
- var doc = this.doc = new Document("");
-
- var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
-
- var _self = this;
- sender.on("change", function(e) {
- doc.applyDeltas([e.data]);
- deferredUpdate.schedule(_self.$timeout);
- });
-};
-
-(function() {
-
- this.$timeout = 500;
-
- this.setTimeout = function(timeout) {
- this.$timeout = timeout;
- };
-
- this.setValue = function(value) {
- this.doc.setValue(value);
- this.deferredUpdate.schedule(this.$timeout);
- };
-
- this.getValue = function(callbackId) {
- this.sender.callback(this.doc.getValue(), callbackId);
- };
-
- this.onUpdate = function() {
- // abstract method
- };
-
-}).call(Mirror.prototype);
-
-});
-
-define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-
-/*members "", "\"", "\/", "\\", at, b, call, charAt, f, fromCharCode,
- hasOwnProperty, message, n, name, push, r, t, text
-*/
-
-define('ace/mode/json/json_parse', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-// This is a function that can parse a JSON text, producing a JavaScript
-// data structure. It is a simple, recursive descent parser. It does not use
-// eval or regular expressions, so it can be used as a model for implementing
-// a JSON parser in other languages.
-
-// We are defining the function inside of another function to avoid creating
-// global variables.
-
- var at, // The index of the current character
- ch, // The current character
- escapee = {
- '"': '"',
- '\\': '\\',
- '/': '/',
- b: '\b',
- f: '\f',
- n: '\n',
- r: '\r',
- t: '\t'
- },
- text,
-
- error = function (m) {
-
-// Call error when something is wrong.
-
- throw {
- name: 'SyntaxError',
- message: m,
- at: at,
- text: text
- };
- },
-
- next = function (c) {
-
-// If a c parameter is provided, verify that it matches the current character.
-
- if (c && c !== ch) {
- error("Expected '" + c + "' instead of '" + ch + "'");
- }
-
-// Get the next character. When there are no more characters,
-// return the empty string.
-
- ch = text.charAt(at);
- at += 1;
- return ch;
- },
-
- number = function () {
-
-// Parse a number value.
-
- var number,
- string = '';
-
- if (ch === '-') {
- string = '-';
- next('-');
- }
- while (ch >= '0' && ch <= '9') {
- string += ch;
- next();
- }
- if (ch === '.') {
- string += '.';
- while (next() && ch >= '0' && ch <= '9') {
- string += ch;
- }
- }
- if (ch === 'e' || ch === 'E') {
- string += ch;
- next();
- if (ch === '-' || ch === '+') {
- string += ch;
- next();
- }
- while (ch >= '0' && ch <= '9') {
- string += ch;
- next();
- }
- }
- number = +string;
- if (isNaN(number)) {
- error("Bad number");
- } else {
- return number;
- }
- },
-
- string = function () {
-
-// Parse a string value.
-
- var hex,
- i,
- string = '',
- uffff;
-
-// When parsing for string values, we must look for " and \ characters.
-
- if (ch === '"') {
- while (next()) {
- if (ch === '"') {
- next();
- return string;
- } else if (ch === '\\') {
- next();
- if (ch === 'u') {
- uffff = 0;
- for (i = 0; i < 4; i += 1) {
- hex = parseInt(next(), 16);
- if (!isFinite(hex)) {
- break;
- }
- uffff = uffff * 16 + hex;
- }
- string += String.fromCharCode(uffff);
- } else if (typeof escapee[ch] === 'string') {
- string += escapee[ch];
- } else {
- break;
- }
- } else {
- string += ch;
- }
- }
- }
- error("Bad string");
- },
-
- white = function () {
-
-// Skip whitespace.
-
- while (ch && ch <= ' ') {
- next();
- }
- },
-
- word = function () {
-
-// true, false, or null.
-
- switch (ch) {
- case 't':
- next('t');
- next('r');
- next('u');
- next('e');
- return true;
- case 'f':
- next('f');
- next('a');
- next('l');
- next('s');
- next('e');
- return false;
- case 'n':
- next('n');
- next('u');
- next('l');
- next('l');
- return null;
- }
- error("Unexpected '" + ch + "'");
- },
-
- value, // Place holder for the value function.
-
- array = function () {
-
-// Parse an array value.
-
- var array = [];
-
- if (ch === '[') {
- next('[');
- white();
- if (ch === ']') {
- next(']');
- return array; // empty array
- }
- while (ch) {
- array.push(value());
- white();
- if (ch === ']') {
- next(']');
- return array;
- }
- next(',');
- white();
- }
- }
- error("Bad array");
- },
-
- object = function () {
-
-// Parse an object value.
-
- var key,
- object = {};
-
- if (ch === '{') {
- next('{');
- white();
- if (ch === '}') {
- next('}');
- return object; // empty object
- }
- while (ch) {
- key = string();
- white();
- next(':');
- if (Object.hasOwnProperty.call(object, key)) {
- error('Duplicate key "' + key + '"');
- }
- object[key] = value();
- white();
- if (ch === '}') {
- next('}');
- return object;
- }
- next(',');
- white();
- }
- }
- error("Bad object");
- };
-
- value = function () {
-
-// Parse a JSON value. It could be an object, an array, a string, a number,
-// or a word.
-
- white();
- switch (ch) {
- case '{':
- return object();
- case '[':
- return array();
- case '"':
- return string();
- case '-':
- return number();
- default:
- return ch >= '0' && ch <= '9' ? number() : word();
- }
- };
-
-// Return the json_parse function. It will have access to all of the above
-// functions and variables.
-
- return function (source, reviver) {
- var result;
-
- text = source;
- at = 0;
- ch = ' ';
- result = value();
- white();
- if (ch) {
- error("Syntax error");
- }
-
-// If there is a reviver function, we recursively walk the new structure,
-// passing each name/value pair to the reviver function for possible
-// transformation, starting with a temporary root object that holds the result
-// in an empty key. If there is not a reviver function, we simply return the
-// result.
-
- return typeof reviver === 'function' ? function walk(holder, key) {
- var k, v, value = holder[key];
- if (value && typeof value === 'object') {
- for (k in value) {
- if (Object.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== undefined) {
- value[k] = v;
- } else {
- delete value[k];
- }
- }
- }
- }
- return reviver.call(holder, key, value);
- }({'': result}, '') : result;
- };
-});
diff --git a/vendor/assets/javascripts/ace-src-noconflict/worker-xquery.js b/vendor/assets/javascripts/ace-src-noconflict/worker-xquery.js
deleted file mode 100644
index 1d8c512ee77..00000000000
--- a/vendor/assets/javascripts/ace-src-noconflict/worker-xquery.js
+++ /dev/null
@@ -1,69021 +0,0 @@
-"no use strict";
-
-var console = {
- log: function(msgs) {
- postMessage({type: "log", data: arguments.join(" ")});
- }
-};
-var window = {
- console: console
-};
-
-var normalizeModule = function(parentId, moduleName) {
- // normalize plugin requires
- if (moduleName.indexOf("!") !== -1) {
- var chunks = moduleName.split("!");
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
- }
- // normalize relative requires
- if (moduleName.charAt(0) == ".") {
- var base = parentId.split("/").slice(0, -1).join("/");
- var moduleName = base + "/" + moduleName;
-
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
- var previous = moduleName;
- var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
- }
- }
-
- return moduleName;
-};
-
-var require = function(parentId, id) {
- if (!id.charAt)
- throw new Error("worker.js require() accepts only (parentId, id) as arguments");
-
- var id = normalizeModule(parentId, id);
-
- var module = require.modules[id];
- if (module) {
- if (!module.initialized) {
- module.initialized = true;
- module.exports = module.factory().exports;
- }
- return module.exports;
- }
-
- var chunks = id.split("/");
- chunks[0] = require.tlns[chunks[0]] || chunks[0];
- var path = chunks.join("/") + ".js";
-
- require.id = id;
- importScripts(path);
- return require(parentId, id);
-};
-
-require.modules = {};
-require.tlns = {};
-
-var define = function(id, deps, factory) {
- if (arguments.length == 2) {
- factory = deps;
- if (typeof id != "string") {
- deps = id;
- id = require.id;
- }
- } else if (arguments.length == 1) {
- factory = id;
- id = require.id;
- }
-
- if (id.indexOf("text!") === 0)
- return;
-
- var req = function(deps, factory) {
- return require(id, deps, factory);
- };
-
- require.modules[id] = {
- factory: function() {
- var module = {
- exports: {}
- };
- var returnExports = factory(req, module.exports, module);
- if (returnExports)
- module.exports = returnExports;
- return module;
- }
- };
-};
-
-function initBaseUrls(topLevelNamespaces) {
- require.tlns = topLevelNamespaces;
-}
-
-function initSender() {
-
- var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
- var oop = require(null, "ace/lib/oop");
-
- var Sender = function() {};
-
- (function() {
-
- oop.implement(this, EventEmitter);
-
- this.callback = function(data, callbackId) {
- postMessage({
- type: "call",
- id: callbackId,
- data: data
- });
- };
-
- this.emit = function(name, data) {
- postMessage({
- type: "event",
- name: name,
- data: data
- });
- };
-
- }).call(Sender.prototype);
-
- return new Sender();
-}
-
-var main;
-var sender;
-
-onmessage = function(e) {
- var msg = e.data;
- if (msg.command) {
- main[msg.command].apply(main, msg.args);
- }
- else if (msg.init) {
- initBaseUrls(msg.tlns);
- require(null, "ace/lib/fixoldbrowsers");
- sender = initSender();
- var clazz = require(null, msg.module)[msg.classname];
- main = new clazz(sender);
- }
- else if (msg.event && sender) {
- sender._emit(msg.event, msg.data);
- }
-};
-// vim:set ts=4 sts=4 sw=4 st:
-// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {
-
-
-require("./regexp");
-require("./es5-shim");
-
-});
-
-define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
- //---------------------------------
- // Private variables
- //---------------------------------
-
- var real = {
- exec: RegExp.prototype.exec,
- test: RegExp.prototype.test,
- match: String.prototype.match,
- replace: String.prototype.replace,
- split: String.prototype.split
- },
- compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
- compliantLastIndexIncrement = function () {
- var x = /^/g;
- real.test.call(x, "");
- return !x.lastIndex;
- }();
-
- if (compliantLastIndexIncrement && compliantExecNpcg)
- return;
-
- //---------------------------------
- // Overriden native methods
- //---------------------------------
-
- // Adds named capture support (with backreferences returned as `result.name`), and fixes two
- // cross-browser issues per ES3:
- // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
- // rather than the empty string.
- // - `lastIndex` should not be incremented after zero-length matches.
- RegExp.prototype.exec = function (str) {
- var match = real.exec.apply(this, arguments),
- name, r2;
- if ( typeof(str) == 'string' && match) {
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
- // nonparticipating capturing groups
- if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
- r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
- // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
- // matching due to characters outside the match
- real.replace.call(str.slice(match.index), r2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined)
- match[i] = undefined;
- }
- });
- }
- // Attach named capture properties
- if (this._xregexp && this._xregexp.captureNames) {
- for (var i = 1; i < match.length; i++) {
- name = this._xregexp.captureNames[i - 1];
- if (name)
- match[name] = match[i];
- }
- }
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- }
- return match;
- };
-
- // Don't override `test` if it won't change anything
- if (!compliantLastIndexIncrement) {
- // Fix browser bug in native method
- RegExp.prototype.test = function (str) {
- // Use the native `exec` to skip some processing overhead, even though the overriden
- // `exec` would take care of the `lastIndex` fix
- var match = real.exec.call(this, str);
- // Fix browsers that increment `lastIndex` after zero-length matches
- if (match && this.global && !match[0].length && (this.lastIndex > match.index))
- this.lastIndex--;
- return !!match;
- };
- }
-
- //---------------------------------
- // Private helper functions
- //---------------------------------
-
- function getNativeFlags (regex) {
- return (regex.global ? "g" : "") +
- (regex.ignoreCase ? "i" : "") +
- (regex.multiline ? "m" : "") +
- (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
- (regex.sticky ? "y" : "");
- }
-
- function indexOf (array, item, from) {
- if (Array.prototype.indexOf) // Use the native array method if available
- return array.indexOf(item, from);
- for (var i = from || 0; i < array.length; i++) {
- if (array[i] === item)
- return i;
- }
- return -1;
- }
-
-});
-// vim: ts=4 sts=4 sw=4 expandtab
-// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
-// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
-// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
-// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
-// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
-// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
-// -- kossnocorp Sasha Koss XXX TODO License or CLA
-// -- bryanforbes Bryan Forbes XXX TODO License or CLA
-// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
-// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
-// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
-// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
-// -- iwyg XXX TODO License or CLA
-// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
-// -- xavierm02 Montillet Xavier XXX TODO License or CLA
-// -- Raynos Raynos XXX TODO License or CLA
-// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
-// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
-// -- lexer Alexey Zakharov XXX TODO License or CLA
-
-/*!
- Copyright (c) 2009, 280 North Inc. http://280north.com/
- MIT License. http://github.com/280north/narwhal/blob/master/README.md
-*/
-
-define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-/*
- * Brings an environment as close to ECMAScript 5 compliance
- * as is possible with the facilities of erstwhile engines.
- *
- * Annotated ES5: http://es5.github.com/ (specific links below)
- * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- *
- * @module
- */
-
-/*whatsupdoc*/
-
-//
-// Function
-// ========
-//
-
-// ES-5 15.3.4.5
-// http://es5.github.com/#x15.3.4.5
-
-if (!Function.prototype.bind) {
- Function.prototype.bind = function bind(that) { // .length is 1
- // 1. Let Target be the this value.
- var target = this;
- // 2. If IsCallable(Target) is false, throw a TypeError exception.
- if (typeof target != "function")
- throw new TypeError(); // TODO message
- // 3. Let A be a new (possibly empty) internal list of all of the
- // argument values provided after thisArg (arg1, arg2 etc), in order.
- // XXX slicedArgs will stand in for "A" if used
- var args = slice.call(arguments, 1); // for normal call
- // 4. Let F be a new native ECMAScript object.
- // 11. Set the [[Prototype]] internal property of F to the standard
- // built-in Function prototype object as specified in 15.3.3.1.
- // 12. Set the [[Call]] internal property of F as described in
- // 15.3.4.5.1.
- // 13. Set the [[Construct]] internal property of F as described in
- // 15.3.4.5.2.
- // 14. Set the [[HasInstance]] internal property of F as described in
- // 15.3.4.5.3.
- var bound = function () {
-
- if (this instanceof bound) {
- // 15.3.4.5.2 [[Construct]]
- // When the [[Construct]] internal method of a function object,
- // F that was created using the bind function is called with a
- // list of arguments ExtraArgs, the following steps are taken:
- // 1. Let target be the value of F's [[TargetFunction]]
- // internal property.
- // 2. If target has no [[Construct]] internal method, a
- // TypeError exception is thrown.
- // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Construct]] internal
- // method of target providing args as the arguments.
-
- var F = function(){};
- F.prototype = target.prototype;
- var self = new F;
-
- var result = target.apply(
- self,
- args.concat(slice.call(arguments))
- );
- if (result !== null && Object(result) === result)
- return result;
- return self;
-
- } else {
- // 15.3.4.5.1 [[Call]]
- // When the [[Call]] internal method of a function object, F,
- // which was created using the bind function is called with a
- // this value and a list of arguments ExtraArgs, the following
- // steps are taken:
- // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
- // property.
- // 2. Let boundThis be the value of F's [[BoundThis]] internal
- // property.
- // 3. Let target be the value of F's [[TargetFunction]] internal
- // property.
- // 4. Let args be a new list containing the same values as the
- // list boundArgs in the same order followed by the same
- // values as the list ExtraArgs in the same order.
- // 5. Return the result of calling the [[Call]] internal method
- // of target providing boundThis as the this value and
- // providing args as the arguments.
-
- // equiv: target.call(this, ...boundArgs, ...args)
- return target.apply(
- that,
- args.concat(slice.call(arguments))
- );
-
- }
-
- };
- // XXX bound.length is never writable, so don't even try
- //
- // 15. If the [[Class]] internal property of Target is "Function", then
- // a. Let L be the length property of Target minus the length of A.
- // b. Set the length own property of F to either 0 or L, whichever is
- // larger.
- // 16. Else set the length own property of F to 0.
- // 17. Set the attributes of the length own property of F to the values
- // specified in 15.3.5.1.
-
- // TODO
- // 18. Set the [[Extensible]] internal property of F to true.
-
- // TODO
- // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
- // 20. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
- // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
- // false.
- // 21. Call the [[DefineOwnProperty]] internal method of F with
- // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
- // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
- // and false.
-
- // TODO
- // NOTE Function objects created using Function.prototype.bind do not
- // have a prototype property or the [[Code]], [[FormalParameters]], and
- // [[Scope]] internal properties.
- // XXX can't delete prototype in pure-js.
-
- // 22. Return F.
- return bound;
- };
-}
-
-// Shortcut to an often accessed properties, in order to avoid multiple
-// dereference that costs universally.
-// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
-// us it in defining shortcuts.
-var call = Function.prototype.call;
-var prototypeOfArray = Array.prototype;
-var prototypeOfObject = Object.prototype;
-var slice = prototypeOfArray.slice;
-var toString = call.bind(prototypeOfObject.toString);
-var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-// If JS engine supports accessors creating shortcuts.
-var defineGetter;
-var defineSetter;
-var lookupGetter;
-var lookupSetter;
-var supportsAccessors;
-if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-}
-
-//
-// Array
-// =====
-//
-
-// ES5 15.4.3.2
-// http://es5.github.com/#x15.4.3.2
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
-if (!Array.isArray) {
- Array.isArray = function isArray(obj) {
- return toString(obj) == "[object Array]";
- };
-}
-
-// The IsCallable() check in the Array functions
-// has been replaced with a strict check on the
-// internal class of the object to trap cases where
-// the provided function was actually a regular
-// expression literal, which in V8 and
-// JavaScriptCore is a typeof "function". Only in
-// V8 are regular expression literals permitted as
-// reduce parameters, so it is desirable in the
-// general case for the shim to match the more
-// strict and common behavior of rejecting regular
-// expressions.
-
-// ES5 15.4.4.18
-// http://es5.github.com/#x15.4.4.18
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
- var self = toObject(this),
- thisp = arguments[1],
- i = 0,
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- while (i < length) {
- if (i in self) {
- // Invoke the callback function with call, passing arguments:
- // context, property value, property key, thisArg object context
- fun.call(thisp, self[i], i, self);
- }
- i++;
- }
- };
-}
-
-// ES5 15.4.4.19
-// http://es5.github.com/#x15.4.4.19
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
-if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = Array(length),
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self)
- result[i] = fun.call(thisp, self[i], i, self);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.20
-// http://es5.github.com/#x15.4.4.20
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
-if (!Array.prototype.filter) {
- Array.prototype.filter = function filter(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- result = [],
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- result.push(self[i]);
- }
- return result;
- };
-}
-
-// ES5 15.4.4.16
-// http://es5.github.com/#x15.4.4.16
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
-if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, self))
- return false;
- }
- return true;
- };
-}
-
-// ES5 15.4.4.17
-// http://es5.github.com/#x15.4.4.17
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
-if (!Array.prototype.some) {
- Array.prototype.some = function some(fun /*, thisp */) {
- var self = toObject(this),
- length = self.length >>> 0,
- thisp = arguments[1];
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- for (var i = 0; i < length; i++) {
- if (i in self && fun.call(thisp, self[i], i, self))
- return true;
- }
- return false;
- };
-}
-
-// ES5 15.4.4.21
-// http://es5.github.com/#x15.4.4.21
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value and an empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var i = 0;
- var result;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i++];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (++i >= length)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- for (; i < length; i++) {
- if (i in self)
- result = fun.call(void 0, result, self[i], i, self);
- }
-
- return result;
- };
-}
-
-// ES5 15.4.4.22
-// http://es5.github.com/#x15.4.4.22
-// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
-if (!Array.prototype.reduceRight) {
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- // If no callback function or if callback is not a callable function
- if (toString(fun) != "[object Function]") {
- throw new TypeError(); // TODO message
- }
-
- // no value to return if no initial value, empty array
- if (!length && arguments.length == 1)
- throw new TypeError(); // TODO message
-
- var result, i = length - 1;
- if (arguments.length >= 2) {
- result = arguments[1];
- } else {
- do {
- if (i in self) {
- result = self[i--];
- break;
- }
-
- // if array contains no values, no initial value to return
- if (--i < 0)
- throw new TypeError(); // TODO message
- } while (true);
- }
-
- do {
- if (i in this)
- result = fun.call(void 0, result, self[i], i, self);
- } while (i--);
-
- return result;
- };
-}
-
-// ES5 15.4.4.14
-// http://es5.github.com/#x15.4.4.14
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
-
- var i = 0;
- if (arguments.length > 1)
- i = toInteger(arguments[1]);
-
- // handle negative indices
- i = i >= 0 ? i : Math.max(0, length + i);
- for (; i < length; i++) {
- if (i in self && self[i] === sought) {
- return i;
- }
- }
- return -1;
- };
-}
-
-// ES5 15.4.4.15
-// http://es5.github.com/#x15.4.4.15
-// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
-if (!Array.prototype.lastIndexOf) {
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
- var self = toObject(this),
- length = self.length >>> 0;
-
- if (!length)
- return -1;
- var i = length - 1;
- if (arguments.length > 1)
- i = Math.min(i, toInteger(arguments[1]));
- // handle negative indices
- i = i >= 0 ? i : length - Math.abs(i);
- for (; i >= 0; i--) {
- if (i in self && sought === self[i])
- return i;
- }
- return -1;
- };
-}
-
-//
-// Object
-// ======
-//
-
-// ES5 15.2.3.2
-// http://es5.github.com/#x15.2.3.2
-if (!Object.getPrototypeOf) {
- // https://github.com/kriskowal/es5-shim/issues#issue/2
- // http://ejohn.org/blog/objectgetprototypeof/
- // recommended by fschaefer on github
- Object.getPrototypeOf = function getPrototypeOf(object) {
- return object.__proto__ || (
- object.constructor ?
- object.constructor.prototype :
- prototypeOfObject
- );
- };
-}
-
-// ES5 15.2.3.3
-// http://es5.github.com/#x15.2.3.3
-if (!Object.getOwnPropertyDescriptor) {
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
- "non-object: ";
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT + object);
- // If object does not owns property return undefined immediately.
- if (!owns(object, property))
- return;
-
- var descriptor, getter, setter;
-
- // If object has a property then it's for sure both `enumerable` and
- // `configurable`.
- descriptor = { enumerable: true, configurable: true };
-
- // If JS engine supports accessor properties then property may be a
- // getter or setter.
- if (supportsAccessors) {
- // Unfortunately `__lookupGetter__` will return a getter even
- // if object has own non getter property along with a same named
- // inherited getter. To avoid misbehavior we temporary remove
- // `__proto__` so that `__lookupGetter__` will return getter only
- // if it's owned by an object.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
-
- var getter = lookupGetter(object, property);
- var setter = lookupSetter(object, property);
-
- // Once we have getter and setter we can put values back.
- object.__proto__ = prototype;
-
- if (getter || setter) {
- if (getter) descriptor.get = getter;
- if (setter) descriptor.set = setter;
-
- // If it was accessor property we're done and return here
- // in order to avoid adding `value` to the descriptor.
- return descriptor;
- }
- }
-
- // If we got this far we know that object has an own property that is
- // not an accessor so we set it as a value and return descriptor.
- descriptor.value = object[property];
- return descriptor;
- };
-}
-
-// ES5 15.2.3.4
-// http://es5.github.com/#x15.2.3.4
-if (!Object.getOwnPropertyNames) {
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
- return Object.keys(object);
- };
-}
-
-// ES5 15.2.3.5
-// http://es5.github.com/#x15.2.3.5
-if (!Object.create) {
- Object.create = function create(prototype, properties) {
- var object;
- if (prototype === null) {
- object = { "__proto__": null };
- } else {
- if (typeof prototype != "object")
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
- var Type = function () {};
- Type.prototype = prototype;
- object = new Type();
- // IE has no built-in implementation of `Object.getPrototypeOf`
- // neither `__proto__`, but this manually setting `__proto__` will
- // guarantee that `Object.getPrototypeOf` will work as expected with
- // objects created using `Object.create`
- object.__proto__ = prototype;
- }
- if (properties !== void 0)
- Object.defineProperties(object, properties);
- return object;
- };
-}
-
-// ES5 15.2.3.6
-// http://es5.github.com/#x15.2.3.6
-
-// Patch for WebKit and IE8 standard mode
-// Designed by hax <hax.github.com>
-// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
-// IE8 Reference:
-// http://msdn.microsoft.com/en-us/library/dd282900.aspx
-// http://msdn.microsoft.com/en-us/library/dd229916.aspx
-// WebKit Bugs:
-// https://bugs.webkit.org/show_bug.cgi?id=36423
-
-function doesDefinePropertyWork(object) {
- try {
- Object.defineProperty(object, "sentinel", {});
- return "sentinel" in object;
- } catch (exception) {
- // returns falsy
- }
-}
-
-// check whether defineProperty works if it's given. Otherwise,
-// shim partially.
-if (Object.defineProperty) {
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
- var definePropertyWorksOnDom = typeof document == "undefined" ||
- doesDefinePropertyWork(document.createElement("div"));
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
- var definePropertyFallback = Object.defineProperty;
- }
-}
-
-if (!Object.defineProperty || definePropertyFallback) {
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
- "on this javascript engine";
-
- Object.defineProperty = function defineProperty(object, property, descriptor) {
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
-
- // make a valiant attempt to use the real defineProperty
- // for I8's DOM elements.
- if (definePropertyFallback) {
- try {
- return definePropertyFallback.call(Object, object, property, descriptor);
- } catch (exception) {
- // try the shim if the real one doesn't work
- }
- }
-
- // If it's a data property.
- if (owns(descriptor, "value")) {
- // fail silently if "writable", "enumerable", or "configurable"
- // are requested but not supported
- /*
- // alternate approach:
- if ( // can't implement these features; allow false but not true
- !(owns(descriptor, "writable") ? descriptor.writable : true) ||
- !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
- !(owns(descriptor, "configurable") ? descriptor.configurable : true)
- )
- throw new RangeError(
- "This implementation of Object.defineProperty does not " +
- "support configurable, enumerable, or writable."
- );
- */
-
- if (supportsAccessors && (lookupGetter(object, property) ||
- lookupSetter(object, property)))
- {
- // As accessors are supported only on engines implementing
- // `__proto__` we can safely override `__proto__` while defining
- // a property to make sure that we don't hit an inherited
- // accessor.
- var prototype = object.__proto__;
- object.__proto__ = prototypeOfObject;
- // Deleting a property anyway since getter / setter may be
- // defined on object itself.
- delete object[property];
- object[property] = descriptor.value;
- // Setting original `__proto__` back now.
- object.__proto__ = prototype;
- } else {
- object[property] = descriptor.value;
- }
- } else {
- if (!supportsAccessors)
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
- // If we got that far then getters and setters can be defined !!
- if (owns(descriptor, "get"))
- defineGetter(object, property, descriptor.get);
- if (owns(descriptor, "set"))
- defineSetter(object, property, descriptor.set);
- }
-
- return object;
- };
-}
-
-// ES5 15.2.3.7
-// http://es5.github.com/#x15.2.3.7
-if (!Object.defineProperties) {
- Object.defineProperties = function defineProperties(object, properties) {
- for (var property in properties) {
- if (owns(properties, property))
- Object.defineProperty(object, property, properties[property]);
- }
- return object;
- };
-}
-
-// ES5 15.2.3.8
-// http://es5.github.com/#x15.2.3.8
-if (!Object.seal) {
- Object.seal = function seal(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.9
-// http://es5.github.com/#x15.2.3.9
-if (!Object.freeze) {
- Object.freeze = function freeze(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// detect a Rhino bug and patch it
-try {
- Object.freeze(function () {});
-} catch (exception) {
- Object.freeze = (function freeze(freezeObject) {
- return function freeze(object) {
- if (typeof object == "function") {
- return object;
- } else {
- return freezeObject(object);
- }
- };
- })(Object.freeze);
-}
-
-// ES5 15.2.3.10
-// http://es5.github.com/#x15.2.3.10
-if (!Object.preventExtensions) {
- Object.preventExtensions = function preventExtensions(object) {
- // this is misleading and breaks feature-detection, but
- // allows "securable" code to "gracefully" degrade to working
- // but insecure code.
- return object;
- };
-}
-
-// ES5 15.2.3.11
-// http://es5.github.com/#x15.2.3.11
-if (!Object.isSealed) {
- Object.isSealed = function isSealed(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.12
-// http://es5.github.com/#x15.2.3.12
-if (!Object.isFrozen) {
- Object.isFrozen = function isFrozen(object) {
- return false;
- };
-}
-
-// ES5 15.2.3.13
-// http://es5.github.com/#x15.2.3.13
-if (!Object.isExtensible) {
- Object.isExtensible = function isExtensible(object) {
- // 1. If Type(O) is not Object throw a TypeError exception.
- if (Object(object) === object) {
- throw new TypeError(); // TODO message
- }
- // 2. Return the Boolean value of the [[Extensible]] internal property of O.
- var name = '';
- while (owns(object, name)) {
- name += '?';
- }
- object[name] = true;
- var returnValue = owns(object, name);
- delete object[name];
- return returnValue;
- };
-}
-
-// ES5 15.2.3.14
-// http://es5.github.com/#x15.2.3.14
-if (!Object.keys) {
- // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
- var hasDontEnumBug = true,
- dontEnums = [
- "toString",
- "toLocaleString",
- "valueOf",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "constructor"
- ],
- dontEnumsLength = dontEnums.length;
-
- for (var key in {"toString": null})
- hasDontEnumBug = false;
-
- Object.keys = function keys(object) {
-
- if ((typeof object != "object" && typeof object != "function") || object === null)
- throw new TypeError("Object.keys called on a non-object");
-
- var keys = [];
- for (var name in object) {
- if (owns(object, name)) {
- keys.push(name);
- }
- }
-
- if (hasDontEnumBug) {
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
- var dontEnum = dontEnums[i];
- if (owns(object, dontEnum)) {
- keys.push(dontEnum);
- }
- }
- }
-
- return keys;
- };
-
-}
-
-//
-// Date
-// ====
-//
-
-// ES5 15.9.5.43
-// http://es5.github.com/#x15.9.5.43
-// This function returns a String value represent the instance in time
-// represented by this Date object. The format of the String is the Date Time
-// string format defined in 15.9.1.15. All fields are present in the String.
-// The time zone is always UTC, denoted by the suffix Z. If the time value of
-// this object is not a finite Number a RangeError exception is thrown.
-if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
- Date.prototype.toISOString = function toISOString() {
- var result, length, value, year;
- if (!isFinite(this))
- throw new RangeError;
-
- // the date time string format is specified in 15.9.1.15.
- result = [this.getUTCMonth() + 1, this.getUTCDate(),
- this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
- year = this.getUTCFullYear();
- year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);
-
- length = result.length;
- while (length--) {
- value = result[length];
- // pad months, days, hours, minutes, and seconds to have two digits.
- if (value < 10)
- result[length] = "0" + value;
- }
- // pad milliseconds to have three digits.
- return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
- ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
- }
-}
-
-// ES5 15.9.4.4
-// http://es5.github.com/#x15.9.4.4
-if (!Date.now) {
- Date.now = function now() {
- return new Date().getTime();
- };
-}
-
-// ES5 15.9.5.44
-// http://es5.github.com/#x15.9.5.44
-// This function provides a String representation of a Date object for use by
-// JSON.stringify (15.12.3).
-if (!Date.prototype.toJSON) {
- Date.prototype.toJSON = function toJSON(key) {
- // When the toJSON method is called with argument key, the following
- // steps are taken:
-
- // 1. Let O be the result of calling ToObject, giving it the this
- // value as its argument.
- // 2. Let tv be ToPrimitive(O, hint Number).
- // 3. If tv is a Number and is not finite, return null.
- // XXX
- // 4. Let toISO be the result of calling the [[Get]] internal method of
- // O with argument "toISOString".
- // 5. If IsCallable(toISO) is false, throw a TypeError exception.
- if (typeof this.toISOString != "function")
- throw new TypeError(); // TODO message
- // 6. Return the result of calling the [[Call]] internal method of
- // toISO with O as the this value and an empty argument list.
- return this.toISOString();
-
- // NOTE 1 The argument is ignored.
-
- // NOTE 2 The toJSON function is intentionally generic; it does not
- // require that its this value be a Date object. Therefore, it can be
- // transferred to other kinds of objects for use as a method. However,
- // it does require that any such object have a toISOString method. An
- // object is free to use the argument key to filter its
- // stringification.
- };
-}
-
-// ES5 15.9.4.2
-// http://es5.github.com/#x15.9.4.2
-// based on work shared by Daniel Friesen (dantman)
-// http://gist.github.com/303249
-if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
- // XXX global assignment won't work in embeddings that use
- // an alternate object for the context.
- Date = (function(NativeDate) {
-
- // Date.length === 7
- var Date = function Date(Y, M, D, h, m, s, ms) {
- var length = arguments.length;
- if (this instanceof NativeDate) {
- var date = length == 1 && String(Y) === Y ? // isString(Y)
- // We explicitly pass it through parse:
- new NativeDate(Date.parse(Y)) :
- // We have to manually make calls depending on argument
- // length here
- length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
- length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
- length >= 5 ? new NativeDate(Y, M, D, h, m) :
- length >= 4 ? new NativeDate(Y, M, D, h) :
- length >= 3 ? new NativeDate(Y, M, D) :
- length >= 2 ? new NativeDate(Y, M) :
- length >= 1 ? new NativeDate(Y) :
- new NativeDate();
- // Prevent mixups with unfixed Date object
- date.constructor = Date;
- return date;
- }
- return NativeDate.apply(this, arguments);
- };
-
- // 15.9.1.15 Date Time String Format.
- var isoDateExpression = new RegExp("^" +
- "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
- "(?:-(\\d{2})" + // optional month capture
- "(?:-(\\d{2})" + // optional day capture
- "(?:" + // capture hours:minutes:seconds.milliseconds
- "T(\\d{2})" + // hours capture
- ":(\\d{2})" + // minutes capture
- "(?:" + // optional :seconds.milliseconds
- ":(\\d{2})" + // seconds capture
- "(?:\\.(\\d{3}))?" + // milliseconds capture
- ")?" +
- "(?:" + // capture UTC offset component
- "Z|" + // UTC capture
- "(?:" + // offset specifier +/-hours:minutes
- "([-+])" + // sign capture
- "(\\d{2})" + // hours offset capture
- ":(\\d{2})" + // minutes offset capture
- ")" +
- ")?)?)?)?" +
- "$");
-
- // Copy any custom methods a 3rd party library may have added
- for (var key in NativeDate)
- Date[key] = NativeDate[key];
-
- // Copy "native" methods explicitly; they may be non-enumerable
- Date.now = NativeDate.now;
- Date.UTC = NativeDate.UTC;
- Date.prototype = NativeDate.prototype;
- Date.prototype.constructor = Date;
-
- // Upgrade Date.parse to handle simplified ISO 8601 strings
- Date.parse = function parse(string) {
- var match = isoDateExpression.exec(string);
- if (match) {
- match.shift(); // kill match[0], the full match
- // parse months, days, hours, minutes, seconds, and milliseconds
- for (var i = 1; i < 7; i++) {
- // provide default values if necessary
- match[i] = +(match[i] || (i < 3 ? 1 : 0));
- // match[1] is the month. Months are 0-11 in JavaScript
- // `Date` objects, but 1-12 in ISO notation, so we
- // decrement.
- if (i == 1)
- match[i]--;
- }
-
- // parse the UTC offset component
- var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();
-
- // compute the explicit time zone offset if specified
- var offset = 0;
- if (sign) {
- // detect invalid offsets and return early
- if (hourOffset > 23 || minuteOffset > 59)
- return NaN;
-
- // express the provided time zone offset in minutes. The offset is
- // negative for time zones west of UTC; positive otherwise.
- offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
- }
-
- // Date.UTC for years between 0 and 99 converts year to 1900 + year
- // The Gregorian calendar has a 400-year cycle, so
- // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
- // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
- var year = +match[0];
- if (0 <= year && year <= 99) {
- match[0] = year + 400;
- return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
- }
-
- // compute a new UTC date value, accounting for the optional offset
- return NativeDate.UTC.apply(this, match) + offset;
- }
- return NativeDate.parse.apply(this, arguments);
- };
-
- return Date;
- })(Date);
-}
-
-//
-// String
-// ======
-//
-
-// ES5 15.5.4.20
-// http://es5.github.com/#x15.5.4.20
-var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
- "\u2029\uFEFF";
-if (!String.prototype.trim || ws.trim()) {
- // http://blog.stevenlevithan.com/archives/faster-trim-javascript
- // http://perfectionkills.com/whitespace-deviations/
- ws = "[" + ws + "]";
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
- trimEndRegexp = new RegExp(ws + ws + "*$");
- String.prototype.trim = function trim() {
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
- };
-}
-
-//
-// Util
-// ======
-//
-
-// ES5 9.4
-// http://es5.github.com/#x9.4
-// http://jsperf.com/to-integer
-var toInteger = function (n) {
- n = +n;
- if (n !== n) // isNaN
- n = 0;
- else if (n !== 0 && n !== (1/0) && n !== -(1/0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- return n;
-};
-
-var prepareString = "a"[0] != "a",
- // ES5 9.9
- // http://es5.github.com/#x9.9
- toObject = function (o) {
- if (o == null) { // this matches both null and undefined
- throw new TypeError(); // TODO message
- }
- // If the implementation doesn't support by-index access of
- // string characters (ex. IE < 7), split the string
- if (prepareString && typeof o == "string" && o) {
- return o.split("");
- }
- return Object(o);
- };
-});
-
-define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-var EventEmitter = {};
-
-EventEmitter._emit =
-EventEmitter._dispatchEvent = function(eventName, e) {
- this._eventRegistry = this._eventRegistry || {};
- this._defaultHandlers = this._defaultHandlers || {};
-
- var listeners = this._eventRegistry[eventName] || [];
- var defaultHandler = this._defaultHandlers[eventName];
- if (!listeners.length && !defaultHandler)
- return;
-
- if (typeof e != "object" || !e)
- e = {};
-
- if (!e.type)
- e.type = eventName;
-
- if (!e.stopPropagation) {
- e.stopPropagation = function() {
- this.propagationStopped = true;
- };
- }
-
- if (!e.preventDefault) {
- e.preventDefault = function() {
- this.defaultPrevented = true;
- };
- }
-
- for (var i=0; i<listeners.length; i++) {
- listeners[i](e);
- if (e.propagationStopped)
- break;
- }
-
- if (defaultHandler && !e.defaultPrevented)
- return defaultHandler(e);
-};
-
-EventEmitter.setDefaultHandler = function(eventName, callback) {
- this._defaultHandlers = this._defaultHandlers || {};
-
- if (this._defaultHandlers[eventName])
- throw new Error("The default handler for '" + eventName + "' is already set");
-
- this._defaultHandlers[eventName] = callback;
-};
-
-EventEmitter.on =
-EventEmitter.addEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- listeners = this._eventRegistry[eventName] = [];
-
- if (listeners.indexOf(callback) == -1)
- listeners.push(callback);
-};
-
-EventEmitter.removeListener =
-EventEmitter.removeEventListener = function(eventName, callback) {
- this._eventRegistry = this._eventRegistry || {};
-
- var listeners = this._eventRegistry[eventName];
- if (!listeners)
- return;
-
- var index = listeners.indexOf(callback);
- if (index !== -1)
- listeners.splice(index, 1);
-};
-
-EventEmitter.removeAllListeners = function(eventName) {
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
-};
-
-exports.EventEmitter = EventEmitter;
-
-});
-
-define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.inherits = (function() {
- var tempCtor = function() {};
- return function(ctor, superCtor) {
- tempCtor.prototype = superCtor.prototype;
- ctor.super_ = superCtor.prototype;
- ctor.prototype = new tempCtor();
- ctor.prototype.constructor = ctor;
- };
-}());
-
-exports.mixin = function(obj, mixin) {
- for (var key in mixin) {
- obj[key] = mixin[key];
- }
-};
-
-exports.implement = function(proto, mixin) {
- exports.mixin(proto, mixin);
-};
-
-});
-
-define('ace/mode/xquery_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/xquery/xquery', 'ace/tokenizer', 'ace/mode/xquery_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var Mirror = require("../worker/mirror").Mirror;
-var xquery = require("../mode/xquery/xquery");
-var Tokenizer = require("../tokenizer").Tokenizer;
-var XQueryHighlightRules = require("./xquery_highlight_rules").XQueryHighlightRules;
-
-window.addEventListener = function() {};
-
-
-var XQueryWorker = exports.XQueryWorker = function(sender) {
- Mirror.call(this, sender);
- this.setTimeout(200);
-};
-
-oop.inherits(XQueryWorker, Mirror);
-
-(function() {
-
- this.onUpdate = function() {
- this.sender.emit("start");
- var value = this.doc.getValue();
- var parser = xquery.getParser(value);
- var ast = parser.p_Module();
- if(parser.hasErrors()) {
- var errors = parser.getErrors();
- var i = 0;
- for(i in errors) {
- var error = errors[i];
- this.sender.emit("error", {
- row: error.line,
- column: error.column,
- text: error.message,
- type: "error"
- });
- }
- } else {
- this.sender.emit("ok");
- }
- parser.highlighter.tokenizer = new Tokenizer(new XQueryHighlightRules().getRules());
- var tokens = parser.highlighter.getTokens();
- this.sender.emit("highlight", tokens);
- };
-
-}).call(XQueryWorker.prototype);
-
-});
-define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
-
-
-var Document = require("../document").Document;
-var lang = require("../lib/lang");
-
-var Mirror = exports.Mirror = function(sender) {
- this.sender = sender;
- var doc = this.doc = new Document("");
-
- var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
-
- var _self = this;
- sender.on("change", function(e) {
- doc.applyDeltas([e.data]);
- deferredUpdate.schedule(_self.$timeout);
- });
-};
-
-(function() {
-
- this.$timeout = 500;
-
- this.setTimeout = function(timeout) {
- this.$timeout = timeout;
- };
-
- this.setValue = function(value) {
- this.doc.setValue(value);
- this.deferredUpdate.schedule(this.$timeout);
- };
-
- this.getValue = function(callbackId) {
- this.sender.callback(this.doc.getValue(), callbackId);
- };
-
- this.onUpdate = function() {
- // abstract method
- };
-
-}).call(Mirror.prototype);
-
-});
-
-define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-var Range = require("./range").Range;
-var Anchor = require("./anchor").Anchor;
-
- /**
- * new Document([text])
- * - text (String | Array): The starting text
- *
- * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
- *
- **/
-
-var Document = function(text) {
- this.$lines = [];
-
- // There has to be one line at least in the document. If you pass an empty
- // string to the insert function, nothing will happen. Workaround.
- if (text.length == 0) {
- this.$lines = [""];
- } else if (Array.isArray(text)) {
- this.insertLines(0, text);
- } else {
- this.insert({row: 0, column:0}, text);
- }
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
- this.setValue = function(text) {
- var len = this.getLength();
- this.remove(new Range(0, 0, len, this.getLine(len-1).length));
- this.insert({row: 0, column:0}, text);
- };
- this.getValue = function() {
- return this.getAllLines().join(this.getNewLineCharacter());
- };
- this.createAnchor = function(row, column) {
- return new Anchor(this, row, column);
- };
-
- // check for IE split bug
- if ("aaa".split(/a/).length == 0)
- this.$split = function(text) {
- return text.replace(/\r\n|\r/g, "\n").split("\n");
- }
- else
- this.$split = function(text) {
- return text.split(/\r\n|\r|\n/);
- };
- this.$detectNewLine = function(text) {
- var match = text.match(/^.*?(\r\n|\r|\n)/m);
- if (match) {
- this.$autoNewLine = match[1];
- } else {
- this.$autoNewLine = "\n";
- }
- };
- this.getNewLineCharacter = function() {
- switch (this.$newLineMode) {
- case "windows":
- return "\r\n";
-
- case "unix":
- return "\n";
-
- case "auto":
- return this.$autoNewLine;
- }
- };
-
- this.$autoNewLine = "\n";
- this.$newLineMode = "auto";
- this.setNewLineMode = function(newLineMode) {
- if (this.$newLineMode === newLineMode)
- return;
-
- this.$newLineMode = newLineMode;
- };
- this.getNewLineMode = function() {
- return this.$newLineMode;
- };
- this.isNewLine = function(text) {
- return (text == "\r\n" || text == "\r" || text == "\n");
- };
- this.getLine = function(row) {
- return this.$lines[row] || "";
- };
- this.getLines = function(firstRow, lastRow) {
- return this.$lines.slice(firstRow, lastRow + 1);
- };
- this.getAllLines = function() {
- return this.getLines(0, this.getLength());
- };
- this.getLength = function() {
- return this.$lines.length;
- };
- this.getTextRange = function(range) {
- if (range.start.row == range.end.row) {
- return this.$lines[range.start.row].substring(range.start.column,
- range.end.column);
- }
- else {
- var lines = this.getLines(range.start.row+1, range.end.row-1);
- lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
- lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
- return lines.join(this.getNewLineCharacter());
- }
- };
- this.$clipPosition = function(position) {
- var length = this.getLength();
- if (position.row >= length) {
- position.row = Math.max(0, length - 1);
- position.column = this.getLine(length-1).length;
- }
- return position;
- };
- this.insert = function(position, text) {
- if (!text || text.length === 0)
- return position;
-
- position = this.$clipPosition(position);
-
- // only detect new lines if the document has no line break yet
- if (this.getLength() <= 1)
- this.$detectNewLine(text);
-
- var lines = this.$split(text);
- var firstLine = lines.splice(0, 1)[0];
- var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];
-
- position = this.insertInLine(position, firstLine);
- if (lastLine !== null) {
- position = this.insertNewLine(position); // terminate first line
- position = this.insertLines(position.row, lines);
- position = this.insertInLine(position, lastLine || "");
- }
- return position;
- };
- /**
- * Document@change(e)
- * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
- *
- * Fires whenever the document changes.
- *
- * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
- *
- * * `"insertLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that are changing
- * * `"insertText"` (emitted by [[Document.insertNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being added
- * * `"removeLines"` (emitted by [[Document.insertLines]])
- * * `range`: the [[Range]] of the change within the document
- * * `lines`: the lines in the document that were removed
- * * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
- * * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
- * * `range`: the [[Range]] of the change within the document
- * * `text`: the text that's being removed
- *
- **/
- this.insertLines = function(row, lines) {
- if (lines.length == 0)
- return {row: row, column: 0};
-
- // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
- // to circumvent that we have to break huge inserts into smaller chunks here
- if (lines.length > 0xFFFF) {
- var end = this.insertLines(row, lines.slice(0xFFFF));
- lines = lines.slice(0, 0xFFFF);
- }
-
- var args = [row, 0];
- args.push.apply(args, lines);
- this.$lines.splice.apply(this.$lines, args);
-
- var range = new Range(row, 0, row + lines.length, 0);
- var delta = {
- action: "insertLines",
- range: range,
- lines: lines
- };
- this._emit("change", { data: delta });
- return end || range.end;
- };
- this.insertNewLine = function(position) {
- position = this.$clipPosition(position);
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column);
- this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));
-
- var end = {
- row : position.row + 1,
- column : 0
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.insertInLine = function(position, text) {
- if (text.length == 0)
- return position;
-
- var line = this.$lines[position.row] || "";
-
- this.$lines[position.row] = line.substring(0, position.column) + text
- + line.substring(position.column);
-
- var end = {
- row : position.row,
- column : position.column + text.length
- };
-
- var delta = {
- action: "insertText",
- range: Range.fromPoints(position, end),
- text: text
- };
- this._emit("change", { data: delta });
-
- return end;
- };
- this.remove = function(range) {
- // clip to document
- range.start = this.$clipPosition(range.start);
- range.end = this.$clipPosition(range.end);
-
- if (range.isEmpty())
- return range.start;
-
- var firstRow = range.start.row;
- var lastRow = range.end.row;
-
- if (range.isMultiLine()) {
- var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
- var lastFullRow = lastRow - 1;
-
- if (range.end.column > 0)
- this.removeInLine(lastRow, 0, range.end.column);
-
- if (lastFullRow >= firstFullRow)
- this.removeLines(firstFullRow, lastFullRow);
-
- if (firstFullRow != firstRow) {
- this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
- this.removeNewLine(range.start.row);
- }
- }
- else {
- this.removeInLine(firstRow, range.start.column, range.end.column);
- }
- return range.start;
- };
- this.removeInLine = function(row, startColumn, endColumn) {
- if (startColumn == endColumn)
- return;
-
- var range = new Range(row, startColumn, row, endColumn);
- var line = this.getLine(row);
- var removed = line.substring(startColumn, endColumn);
- var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
- this.$lines.splice(row, 1, newLine);
-
- var delta = {
- action: "removeText",
- range: range,
- text: removed
- };
- this._emit("change", { data: delta });
- return range.start;
- };
- this.removeLines = function(firstRow, lastRow) {
- var range = new Range(firstRow, 0, lastRow + 1, 0);
- var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);
-
- var delta = {
- action: "removeLines",
- range: range,
- nl: this.getNewLineCharacter(),
- lines: removed
- };
- this._emit("change", { data: delta });
- return removed;
- };
- this.removeNewLine = function(row) {
- var firstLine = this.getLine(row);
- var secondLine = this.getLine(row+1);
-
- var range = new Range(row, firstLine.length, row+1, 0);
- var line = firstLine + secondLine;
-
- this.$lines.splice(row, 2, line);
-
- var delta = {
- action: "removeText",
- range: range,
- text: this.getNewLineCharacter()
- };
- this._emit("change", { data: delta });
- };
- this.replace = function(range, text) {
- if (text.length == 0 && range.isEmpty())
- return range.start;
-
- // Shortcut: If the text we want to insert is the same as it is already
- // in the document, we don't have to replace anything.
- if (text == this.getTextRange(range))
- return range.end;
-
- this.remove(range);
- if (text) {
- var end = this.insert(range.start, text);
- }
- else {
- end = range.start;
- }
-
- return end;
- };
- this.applyDeltas = function(deltas) {
- for (var i=0; i<deltas.length; i++) {
- var delta = deltas[i];
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "insertText")
- this.insert(range.start, delta.text);
- else if (delta.action == "removeLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "removeText")
- this.remove(range);
- }
- };
- this.revertDeltas = function(deltas) {
- for (var i=deltas.length-1; i>=0; i--) {
- var delta = deltas[i];
-
- var range = Range.fromPoints(delta.range.start, delta.range.end);
-
- if (delta.action == "insertLines")
- this.removeLines(range.start.row, range.end.row - 1);
- else if (delta.action == "insertText")
- this.remove(range);
- else if (delta.action == "removeLines")
- this.insertLines(range.start.row, delta.lines);
- else if (delta.action == "removeText")
- this.insert(range.start, delta.text);
- }
- };
-
-}).call(Document.prototype);
-
-exports.Document = Document;
-});
-
-define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Range
- *
- * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
- *
- **/
-
-/**
- * new Range(startRow, startColumn, endRow, endColumn)
- * - startRow (Number): The starting row
- * - startColumn (Number): The starting column
- * - endRow (Number): The ending row
- * - endColumn (Number): The ending column
- *
- * Creates a new `Range` object with the given starting and ending row and column points.
- *
- **/
-var Range = function(startRow, startColumn, endRow, endColumn) {
- this.start = {
- row: startRow,
- column: startColumn
- };
-
- this.end = {
- row: endRow,
- column: endColumn
- };
-};
-
-(function() {
- /**
- * Range.isEqual(range) -> Boolean
- * - range (Range): A range to check against
- *
- * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
- *
- **/
- this.isEqual = function(range) {
- return this.start.row == range.start.row &&
- this.end.row == range.end.row &&
- this.start.column == range.start.column &&
- this.end.column == range.end.column
- };
- this.toString = function() {
- return ("Range: [" + this.start.row + "/" + this.start.column +
- "] -> [" + this.end.row + "/" + this.end.column + "]");
- };
-
- this.contains = function(row, column) {
- return this.compare(row, column) == 0;
- };
- this.compareRange = function(range) {
- var cmp,
- end = range.end,
- start = range.start;
-
- cmp = this.compare(end.row, end.column);
- if (cmp == 1) {
- cmp = this.compare(start.row, start.column);
- if (cmp == 1) {
- return 2;
- } else if (cmp == 0) {
- return 1;
- } else {
- return 0;
- }
- } else if (cmp == -1) {
- return -2;
- } else {
- cmp = this.compare(start.row, start.column);
- if (cmp == -1) {
- return -1;
- } else if (cmp == 1) {
- return 42;
- } else {
- return 0;
- }
- }
- }
-
- /** related to: Range.compare
- * Range.comparePoint(p) -> Number
- * - p (Range): A point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1<br/>
- *
- * Checks the row and column points of `p` with the row and column points of the calling range.
- *
- *
- *
- **/
- this.comparePoint = function(p) {
- return this.compare(p.row, p.column);
- }
-
- /** related to: Range.comparePoint
- * Range.containsRange(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
- *
- **/
- this.containsRange = function(range) {
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
- }
-
- /**
- * Range.intersects(range) -> Boolean
- * - range (Range): A range to compare with
- *
- * Returns `true` if passed in `range` intersects with the one calling this method.
- *
- **/
- this.intersects = function(range) {
- var cmp = this.compareRange(range);
- return (cmp == -1 || cmp == 0 || cmp == 1);
- }
-
- /**
- * Range.isEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
- *
- **/
- this.isEnd = function(row, column) {
- return this.end.row == row && this.end.column == column;
- }
-
- /**
- * Range.isStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
- *
- **/
- this.isStart = function(row, column) {
- return this.start.row == row && this.start.column == column;
- }
-
- /**
- * Range.setStart(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setStart = function(row, column) {
- if (typeof row == "object") {
- this.start.column = row.column;
- this.start.row = row.row;
- } else {
- this.start.row = row;
- this.start.column = column;
- }
- }
-
- /**
- * Range.setEnd(row, column)
- * - row (Number): A row point to set
- * - column (Number): A column point to set
- *
- * Sets the starting row and column for the range.
- *
- **/
- this.setEnd = function(row, column) {
- if (typeof row == "object") {
- this.end.column = row.column;
- this.end.row = row.row;
- } else {
- this.end.row = row;
- this.end.column = column;
- }
- }
-
- /** related to: Range.compare
- * Range.inside(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range.
- *
- **/
- this.inside = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column) || this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideStart(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's starting points.
- *
- **/
- this.insideStart = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isEnd(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /** related to: Range.compare
- * Range.insideEnd(row, column) -> Boolean
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- *
- * Returns `true` if the `row` and `column` are within the given range's ending points.
- *
- **/
- this.insideEnd = function(row, column) {
- if (this.compare(row, column) == 0) {
- if (this.isStart(row, column)) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Range.compare(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal <br/>
- * * `-1` if `p.row` is less then the calling range <br/>
- * * `1` if `p.row` is greater than the calling range <br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- * <br/>
- * If the ending row of the calling range is equal to `p.row`, and: <br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compare = function(row, column) {
- if (!this.isMultiLine()) {
- if (row === this.start.row) {
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
- };
- }
-
- if (row < this.start.row)
- return -1;
-
- if (row > this.end.row)
- return 1;
-
- if (this.start.row === row)
- return column >= this.start.column ? 0 : -1;
-
- if (this.end.row === row)
- return column <= this.end.column ? 0 : 1;
-
- return 0;
- };
- this.compareStart = function(row, column) {
- if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareEnd(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `0` if the two points are exactly equal<br/>
- * * `-1` if `p.row` is less then the calling range<br/>
- * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
- * <br/>
- * If the starting row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
- * * Otherwise, it returns -1<br/>
- *<br/>
- * If the ending row of the calling range is equal to `p.row`, and:<br/>
- * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
- * * Otherwise, it returns 1
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- **/
- this.compareEnd = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.compareInside(row, column) -> Number
- * - row (Number): A row point to compare with
- * - column (Number): A column point to compare with
- * + (Number): This method returns one of the following numbers:<br/>
- * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
- * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
- * <br/>
- * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
- *
- * Checks the row and column points with the row and column points of the calling range.
- *
- *
- *
- **/
- this.compareInside = function(row, column) {
- if (this.end.row == row && this.end.column == column) {
- return 1;
- } else if (this.start.row == row && this.start.column == column) {
- return -1;
- } else {
- return this.compare(row, column);
- }
- }
-
- /**
- * Range.clipRows(firstRow, lastRow) -> Range
- * - firstRow (Number): The starting row
- * - lastRow (Number): The ending row
- *
- * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
- *
- **/
- this.clipRows = function(firstRow, lastRow) {
- if (this.end.row > lastRow) {
- var end = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row > lastRow) {
- var start = {
- row: lastRow+1,
- column: 0
- };
- }
-
- if (this.start.row < firstRow) {
- var start = {
- row: firstRow,
- column: 0
- };
- }
-
- if (this.end.row < firstRow) {
- var end = {
- row: firstRow,
- column: 0
- };
- }
- return Range.fromPoints(start || this.start, end || this.end);
- };
- this.extend = function(row, column) {
- var cmp = this.compare(row, column);
-
- if (cmp == 0)
- return this;
- else if (cmp == -1)
- var start = {row: row, column: column};
- else
- var end = {row: row, column: column};
-
- return Range.fromPoints(start || this.start, end || this.end);
- };
-
- this.isEmpty = function() {
- return (this.start.row == this.end.row && this.start.column == this.end.column);
- };
- this.isMultiLine = function() {
- return (this.start.row !== this.end.row);
- };
- this.clone = function() {
- return Range.fromPoints(this.start, this.end);
- };
- this.collapseRows = function() {
- if (this.end.column == 0)
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
- else
- return new Range(this.start.row, 0, this.end.row, 0)
- };
- this.toScreenRange = function(session) {
- var screenPosStart =
- session.documentToScreenPosition(this.start);
- var screenPosEnd =
- session.documentToScreenPosition(this.end);
-
- return new Range(
- screenPosStart.row, screenPosStart.column,
- screenPosEnd.row, screenPosEnd.column
- );
- };
-
-}).call(Range.prototype);
-Range.fromPoints = function(start, end) {
- return new Range(start.row, start.column, end.row, end.column);
-};
-
-exports.Range = Range;
-});
-
-define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
-
-
-var oop = require("./lib/oop");
-var EventEmitter = require("./lib/event_emitter").EventEmitter;
-
-/**
- * new Anchor(doc, row, column)
- * - doc (Document): The document to associate with the anchor
- * - row (Number): The starting row position
- * - column (Number): The starting column position
- *
- * Creates a new `Anchor` and associates it with a document.
- *
- **/
-
-var Anchor = exports.Anchor = function(doc, row, column) {
- this.document = doc;
-
- if (typeof column == "undefined")
- this.setPosition(row.row, row.column);
- else
- this.setPosition(row, column);
-
- this.$onChange = this.onChange.bind(this);
- doc.on("change", this.$onChange);
-};
-
-(function() {
-
- oop.implement(this, EventEmitter);
-
- this.getPosition = function() {
- return this.$clipPositionToDocument(this.row, this.column);
- };
-
- this.getDocument = function() {
- return this.document;
- };
-
- this.onChange = function(e) {
- var delta = e.data;
- var range = delta.range;
-
- if (range.start.row == range.end.row && range.start.row != this.row)
- return;
-
- if (range.start.row > this.row)
- return;
-
- if (range.start.row == this.row && range.start.column > this.column)
- return;
-
- var row = this.row;
- var column = this.column;
-
- if (delta.action === "insertText") {
- if (range.start.row === row && range.start.column <= column) {
- if (range.start.row === range.end.row) {
- column += range.end.column - range.start.column;
- }
- else {
- column -= range.start.column;
- row += range.end.row - range.start.row;
- }
- }
- else if (range.start.row !== range.end.row && range.start.row < row) {
- row += range.end.row - range.start.row;
- }
- } else if (delta.action === "insertLines") {
- if (range.start.row <= row) {
- row += range.end.row - range.start.row;
- }
- }
- else if (delta.action == "removeText") {
- if (range.start.row == row && range.start.column < column) {
- if (range.end.column >= column)
- column = range.start.column;
- else
- column = Math.max(0, column - (range.end.column - range.start.column));
-
- } else if (range.start.row !== range.end.row && range.start.row < row) {
- if (range.end.row == row) {
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- row -= (range.end.row - range.start.row);
- }
- else if (range.end.row == row) {
- row -= range.end.row - range.start.row;
- column = Math.max(0, column - range.end.column) + range.start.column;
- }
- } else if (delta.action == "removeLines") {
- if (range.start.row <= row) {
- if (range.end.row <= row)
- row -= range.end.row - range.start.row;
- else {
- row = range.start.row;
- column = 0;
- }
- }
- }
-
- this.setPosition(row, column, true);
- };
-
- this.setPosition = function(row, column, noClip) {
- var pos;
- if (noClip) {
- pos = {
- row: row,
- column: column
- };
- }
- else {
- pos = this.$clipPositionToDocument(row, column);
- }
-
- if (this.row == pos.row && this.column == pos.column)
- return;
-
- var old = {
- row: this.row,
- column: this.column
- };
-
- this.row = pos.row;
- this.column = pos.column;
- this._emit("change", {
- old: old,
- value: pos
- });
- };
-
- this.detach = function() {
- this.document.removeEventListener("change", this.$onChange);
- };
-
- this.$clipPositionToDocument = function(row, column) {
- var pos = {};
-
- if (row >= this.document.getLength()) {
- pos.row = Math.max(0, this.document.getLength() - 1);
- pos.column = this.document.getLine(pos.row).length;
- }
- else if (row < 0) {
- pos.row = 0;
- pos.column = 0;
- }
- else {
- pos.row = row;
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
- }
-
- if (column < 0)
- pos.column = 0;
-
- return pos;
- };
-
-}).call(Anchor.prototype);
-
-});
-
-define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-exports.stringReverse = function(string) {
- return string.split("").reverse().join("");
-};
-
-exports.stringRepeat = function (string, count) {
- return new Array(count + 1).join(string);
-};
-
-var trimBeginRegexp = /^\s\s*/;
-var trimEndRegexp = /\s\s*$/;
-
-exports.stringTrimLeft = function (string) {
- return string.replace(trimBeginRegexp, '');
-};
-
-exports.stringTrimRight = function (string) {
- return string.replace(trimEndRegexp, '');
-};
-
-exports.copyObject = function(obj) {
- var copy = {};
- for (var key in obj) {
- copy[key] = obj[key];
- }
- return copy;
-};
-
-exports.copyArray = function(array){
- var copy = [];
- for (var i=0, l=array.length; i<l; i++) {
- if (array[i] && typeof array[i] == "object")
- copy[i] = this.copyObject( array[i] );
- else
- copy[i] = array[i];
- }
- return copy;
-};
-
-exports.deepCopy = function (obj) {
- if (typeof obj != "object") {
- return obj;
- }
-
- var copy = obj.constructor();
- for (var key in obj) {
- if (typeof obj[key] == "object") {
- copy[key] = this.deepCopy(obj[key]);
- } else {
- copy[key] = obj[key];
- }
- }
- return copy;
-};
-
-exports.arrayToMap = function(arr) {
- var map = {};
- for (var i=0; i<arr.length; i++) {
- map[arr[i]] = 1;
- }
- return map;
-
-};
-
-exports.createMap = function(props) {
- var map = Object.create(null);
- for (var i in props) {
- map[i] = props[i];
- }
- return map;
-};
-exports.arrayRemove = function(array, value) {
- for (var i = 0; i <= array.length; i++) {
- if (value === array[i]) {
- array.splice(i, 1);
- }
- }
-};
-
-exports.escapeRegExp = function(str) {
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
-};
-
-exports.getMatchOffsets = function(string, regExp) {
- var matches = [];
-
- string.replace(regExp, function(str) {
- matches.push({
- offset: arguments[arguments.length-2],
- length: str.length
- });
- });
-
- return matches;
-};
-
-
-exports.deferredCall = function(fcn) {
-
- var timer = null;
- var callback = function() {
- timer = null;
- fcn();
- };
-
- var deferred = function(timeout) {
- deferred.cancel();
- timer = setTimeout(callback, timeout || 0);
- return deferred;
- };
-
- deferred.schedule = deferred;
-
- deferred.call = function() {
- this.cancel();
- fcn();
- return deferred;
- };
-
- deferred.cancel = function() {
- clearTimeout(timer);
- timer = null;
- return deferred;
- };
-
- return deferred;
-};
-
-});
-
-define('ace/mode/xquery/xquery', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQueryLexer', 'ace/mode/xquery/XQueryParser'], function(require, exports, module) {
-
- var antlr = require("./antlr3-all");
- var org = antlr.org;
- var NewLazyTokenStream = antlr.NewLazyTokenStream;
- var XQueryLexer = require("./XQueryLexer").XQueryLexer;
- var XQueryParser = require("./XQueryParser").XQueryParser;
-
- exports.getParser = function(code) {
- var cstream = new org.antlr.runtime.ANTLRStringStream(code);
- var lexer = new XQueryLexer(cstream);
- var tstream = new NewLazyTokenStream(lexer);
- tstream.jumpToFirstValidToken();
- var parser = new XQueryParser(tstream);
- parser.setSource(cstream);
- return parser;
- };
-});
-/*
-Some portions:
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.5.1
-*/
-define('ace/mode/xquery/antlr3-all', ['require', 'exports', 'module' ], function(require, exports, module) {
-var NewLazyTokenStream = exports.NewLazyTokenStream = function(tokenSource) {
-
- this.tokenSource = tokenSource;
- this.tokens = [];
- this.isWsExplicit = false;
- this.p = 0;
- this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
-
- this.LT = function(k) {
- if (k == 0)
- return null;
- if (k < 0)
- return this.readReverseNthGoodToken(-k);
-
- return this.readNthGoodToken(k);
- };
-
- this.get = function(i) {
- if (i >= this.tokens.length)
- return org.antlr.runtime.Token.EOF_TOKEN;
- else
- return this.tokens[i];
- };
-
- this.getTokenSource = function() {
- return this.tokenSource;
- };
-
- this.toString = function(start, stop) {
- if(start == undefined) {
- return this.toString(0, this.tokens.length - 1);
- } else
- if(start instanceof org.antlr.runtime.Token) {
- return this.toString(start.getTokenIndex(), stop.getTokenIndex());
- } else {
- if (start < 0)
- start = 0;
- if (this.p <= stop) {
- this.readNTokens(stop - this.p + 1);
- }
-
- var sb = "";
- for (var i = start; i <= stop && i < this.tokens.length; i++) {
- sb += this.tokens[i].getText();
- }
- return sb;
- }
- };
-
- this.LA = function(i) {
- return this.LT(i).getType();
- };
-
- this.done = false;
-
- this.consume = function() {
- if (this.done) {
- return;
- }
- this.p++;
- if (!this.isWsExplicit) {
- this.jumpToFirstValidToken();
- }
- };
-
- this.getSourceName = function() {
- return this.getTokenSource().getSourceName();
- };
-
- this.index = function() {
- return this.p;
- };
-
- this.mark = function() {
- this.lastMarker = this.index();
- return this.lastMarker;
- };
-
- this.release = function(marker) {
- };
-
- this.rewind = function(marker) {
- if(arguments.length == 1) {
- this.seek(marker);
- } else {
- this.seek(this.lastMarker);
- }
- };
-
- this.seek = function(index) {
- this.p = index;
- this.done = false;
- };
-
- this.size = function() {
- return this.tokens.length;
- };
-
- this.setTokenSource = function(source) {
- this.tokenSource = source;
- this.setWsExplicit(source.isWsExplicit);
- // un-read the unused tokens
- // they are different for the new source
- if (this.p < this.tokens.length) {
- var rIndex = this.p > 0 ? this.tokens[this.p - 1].getStopIndex() : 0;
- this.tokenSource.rewindToIndex(rIndex + 1);
- for (var i = this.tokens.length - 1; i >= this.p; i--) {
- this.tokens.splice(i, 1);
- }
- }
-
- // if we ignore WS, jump to next token
- if (!this.isWsExplicit) {
- this.jumpToFirstValidToken();
- }
- };
-
- this.setWsExplicit = function(explicit) {
- this.isWsExplicit = explicit;
- if (!explicit) {
- this.jumpToFirstValidToken();
- }
- };
-
- this.readNthGoodToken = function(n) {
- var count = this.tokens.length;
- // number of buffered tokens available
- var avt = count - this.p;
- // i counts good tokens, j counts all tokens
- var i = 1, j = 0;
- var t = null;
- while (i <= n) {
- if (j < avt) // read from buffer
- t = this.tokens[this.p + j];
- else { // read from source
- t = this.tokenSource.nextToken();
- if (t == org.antlr.runtime.Token.EOF_TOKEN) {
- return t;
- }
- t.setTokenIndex(count++);
- this.tokens.push(t);
- }
- if (this.isWsExplicit || t.getChannel() == this.channel) {
- i++;
- }
- j++;
- }
- return t;
- };
-
- this.readReverseNthGoodToken = function(n) {
- if (n == 0 || (this.p - n) < 0)
- return null;
-
- // i counts good tokens, j counts all tokens
- var i = 1, j = 0;
- var t = null;
- while (this.p - 1 - j >= 0) {
- t = this.get(this.p - 1 - j);
-
- if (this.isWsExplicit || t.getChannel() == this.channel) {
- if (i++ == n)
- return t;
- }
- j++;
- }
- return null;
- };
-
- this.readNTokens = function(n) {
- var t = null;
- for (var i = 0; i < n; i++) {
- if (this.tokens.length > this.p + i)
- continue;
-
- t = this.tokenSource.nextToken();
- if (t == org.antlr.runtime.Token.EOF_TOKEN)
- return;
-
- t.setTokenIndex(this.p + i);
- this.tokens.push(t);
- }
- };
-
- this.jumpToFirstValidToken = function() {
- var t = this.LT(1);
- if (t != org.antlr.runtime.Token.EOF_TOKEN) {
- this.done = false;
- this.p = t.getTokenIndex();
- }
- };
-};
-
-// create org.antlr module
-if (typeof org == "undefined" || !org) {
- var org = {};
-}
-if (typeof org.antlr == "undefined" || !org.antlr) {
- /**
- * The org.antlr global namespace object. If antlr is already defined, the
- * existing antlr object will not be overwritten so that defined
- * namespaces are preserved.
- * @namespace org.antlr
- */
- org.antlr = {};
-}
-
-/**
- * The global JavaScript object.
- */
-org.antlr.global = (function() {
- return this;
-}).call(null);
-org.antlr.namespace = function() {
- var a=arguments, o=null, i, j, d;
- for (i=0; i<a.length; i=i+1) {
- d=a[i].split(".");
- o=org.antlr.global;
-
- // ANTLR is implied, so it is ignored if it is included
- for (j=0; j<d.length; j=j+1) {
- o[d[j]]=o[d[j]] || {};
- o=o[d[j]];
- }
- }
-
- return o;
-};
-org.antlr.env = org.antlr.env || {};
-/**
- * JavaScript runtime library tree parser code.
- * @name org.antlr.runtime.tree
- * @namespace
- */
-org.antlr.namespace("org.antlr.runtime.tree");
-org.antlr.lang = org.antlr.lang || /** @lends org.antlr.lang */ {
- /**
- * Determines whether or not the provided object is an array.
- * Testing typeof/instanceof/constructor of arrays across frame
- * boundaries isn't possible in Safari unless you have a reference
- * to the other frame to test against its Array prototype. To
- * handle this case, we test well-known array properties instead.
- * properties.
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isArray: function(o) {
- if (o) {
- var l = org.antlr.lang;
- return l.isNumber(o.length) && l.isFunction(o.splice);
- }
- return false;
- },
-
- /**
- * Determines whether or not the provided object is a boolean
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isBoolean: function(o) {
- return typeof o === 'boolean';
- },
-
- /**
- * Determines whether or not the provided object is a function
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isFunction: function(o) {
- return typeof o === 'function';
- },
-
- /**
- * Determines whether or not the provided object is null
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isNull: function(o) {
- return o === null;
- },
-
- /**
- * Determines whether or not the provided object is a legal number
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isNumber: function(o) {
- return typeof o === 'number' && isFinite(o);
- },
-
- /**
- * Determines whether or not the provided object is of type object
- * or function
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isObject: function(o) {
-return (o && (typeof o === 'object' || org.antlr.lang.isFunction(o))) || false;
- },
-
- /**
- * Determines whether or not the provided object is a string
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isString: function(o) {
- return typeof o === 'string';
- },
-
- /**
- * Determines whether or not the provided object is undefined
- * @param {any} o The object being testing
- * @return {boolean} the result
- */
- isUndefined: function(o) {
- return typeof o === 'undefined';
- },
-
- /**
- * IE will not enumerate native functions in a derived object even if the
- * function was overridden. This is a workaround for specific functions
- * we care about on the Object prototype.
- * @param {Function} r the object to receive the augmentation
- * @param {Function} s the object that supplies the properties to augment
- * @private
- */
- _IEEnumFix: function(r, s) {
- if (false) {
- var add=["toString", "valueOf"], i;
- for (i=0;i<add.length;i=i+1) {
- var fname=add[i],f=s[fname];
- if (org.antlr.lang.isFunction(f) && f!=Object.prototype[fname]) {
- r[fname]=f;
- }
- }
- }
- },
-
- /**
- * Utility to set up the prototype, constructor and superclass properties to
- * support an inheritance strategy that can chain constructors and methods.
- * Static members will not be inherited.
- *
- * @method extend
- * @static
- * @param {Function} subc the object to modify
- * @param {Function} superc the object to inherit
- * @param {Object} [overrides] additional properties/methods to add to the
- * subclass prototype. These will override the
- * matching items obtained from the superclass
- * if present.
- */
- extend: function(subc, superc, overrides) {
- if (!superc||!subc) {
- throw new Error("org.antlr.lang.extend failed, please check that " +
- "all dependencies are included.");
- }
- var F = function() {};
- F.prototype=superc.prototype;
- subc.prototype=new F();
- subc.prototype.constructor=subc;
- subc.superclass=superc.prototype;
- if (superc.prototype.constructor == Object.prototype.constructor) {
- superc.prototype.constructor=superc;
- }
-
- if (overrides) {
- for (var i in overrides) {
- subc.prototype[i]=overrides[i];
- }
-
- org.antlr.lang._IEEnumFix(subc.prototype, overrides);
- }
- },
-
- /**
- * Applies all properties in the supplier to the receiver if the
- * receiver does not have these properties yet. Optionally, one or
- * more methods/properties can be specified (as additional
- * parameters). This option will overwrite the property if receiver
- * has it already. If true is passed as the third parameter, all
- * properties will be applied and _will_ overwrite properties in
- * the receiver.
- *
- * @param {Function} r the object to receive the augmentation
- * @param {Function} s the object that supplies the properties to augment
- * @param {String*|boolean} [arguments] zero or more properties methods
- * to augment the receiver with. If none specified, everything
- * in the supplier will be used unless it would
- * overwrite an existing property in the receiver. If true
- * is specified as the third parameter, all properties will
- * be applied and will overwrite an existing property in
- * the receiver
- */
- augmentObject: function(r, s) {
- if (!s||!r) {
- throw new Error("Absorb failed, verify dependencies.");
- }
- var a=arguments, i, p, override=a[2];
- if (override && override!==true) { // only absorb the specified properties
- for (i=2; i<a.length; i=i+1) {
- r[a[i]] = s[a[i]];
- }
- } else { // take everything, overwriting only if the third parameter is true
- for (p in s) {
- if (override || !r[p]) {
- r[p] = s[p];
- }
- }
-
- org.antlr.lang._IEEnumFix(r, s);
- }
- },
-
- /**
- * Same as org.antlr.lang.augmentObject, except it only applies prototype properties
- * @see org.antlr.lang.augmentObject
- * @param {Function} r the object to receive the augmentation
- * @param {Function} s the object that supplies the properties to augment
- * @param {String*|boolean} [arguments] zero or more properties methods
- * to augment the receiver with. If none specified, everything
- * in the supplier will be used unless it would overwrite an existing
- * property in the receiver. if true is specified as the third
- * parameter, all properties will be applied and will overwrite an
- * existing property in the receiver
- */
- augmentProto: function(r, s) {
- if (!s||!r) {
- throw new Error("Augment failed, verify dependencies.");
- }
- //var a=[].concat(arguments);
- var a=[r.prototype,s.prototype];
- for (var i=2;i<arguments.length;i=i+1) {
- a.push(arguments[i]);
- }
- org.antlr.lang.augmentObject.apply(this, a);
- },
-
- /**
- * Returns a new object containing all of the properties of
- * all the supplied objects. The properties from later objects
- * will overwrite those in earlier objects.
- * @param arguments {Object*} the objects to merge
- * @return the new merged object
- */
- merge: function() {
- var o={}, a=arguments;
- for (var i=0, l=a.length; i<l; i=i+1) {
- org.antlr.lang.augmentObject(o, a[i], true);
- }
- return o;
- },
-
- /**
- * A convenience method for detecting a legitimate non-null value.
- * Returns false for null/undefined/NaN, true for other values,
- * including 0/false/''
- * @param o {any} the item to test
- * @return {boolean} true if it is not null/undefined/NaN || false
- */
- isValue: function(o) {
- var l = org.antlr.lang;
-return (l.isObject(o) || l.isString(o) || l.isNumber(o) || l.isBoolean(o));
- },
-
- /** @namespace org.antlr.lang.array Array convenience methods. */
- array: /** @lends org.antlr.lang.array */ {
- /**
- * Retrieve the last element of an array. Throws an error if a is not
- * an array or empty.
- * @param a {Array} the array stack to peek in
- * @return the last element of the array
- */
- peek: function(a) {
- if (!org.antlr.lang.isArray(a)) {
- throw new Error("org.antlr.lang.array.peek: a is not an array.");
- }
- var l = a.length;
- if (l<=0) {
- throw new Error("org.antlr.lang.array.peek: a is empty.");
- }
- return a[l-1];
- }
- }
-};
-org.antlr.runtime = {};
-org.antlr.runtime.RecognizerSharedState = function() {
- /** Track the set of token types that can follow any rule invocation.
- * Stack grows upwards. When it hits the max, it grows 2x in size
- * and keeps going.
- */
- this.following = [];
-
- this._fsp = -1;
- this.errorRecovery = false;
- this.lastErrorIndex = -1;
- this.failed = false;
- this.syntaxErrors = 0;
- this.backtracking = 0;
- this.ruleMemo = null;
-
-
- // LEXER FIELDS (must be in same state object to avoid casting
- // constantly in generated code and Lexer object) :(
-
-
- /** The goal of all lexer rules/methods is to create a token object.
- * This is an instance variable as multiple rules may collaborate to
- * create a single token. nextToken will return this object after
- * matching lexer rule(s). If you subclass to allow multiple token
- * emissions, then set this to the last token to be matched or
- * something nonnull so that the auto token emit mechanism will not
- * emit another token.
- */
- this.token = null;
- this.tokenStartCharIndex = -1;
- // this.tokenStartLine;
- // this.tokenStartCharPositionInLine;
- // this.channel;
- // this.type;
- this.text = null;
-};
-org.antlr.runtime.IndexOutOfBoundsException = function(m) {
- org.antlr.runtime.IndexOutOfBoundsException.superclass.constructor.call(this, m);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.IndexOutOfBoundsException, Error, {
- name: "org.antlr.runtime.IndexOutOfBoundsException"
-});
-org.antlr.runtime.RecognitionException = function(input) {
- org.antlr.runtime.RecognitionException.superclass.constructor.call(this);
- this.input = input;
- this.index = input.index();
- if ( input instanceof NewLazyTokenStream ) {//org.antlr.runtime.CommonTokenStream ) {
- this.token = input.LT(1);
- this.line = this.token.getLine();
- this.charPositionInLine = this.token.getCharPositionInLine();
- }
- if ( input instanceof org.antlr.runtime.tree.TreeNodeStream ) {
- this.extractInformationFromTreeNodeStream(input);
- }
- else if ( input instanceof org.antlr.runtime.ANTLRStringStream ) {
- // Note: removed CharStream from hierarchy in JS port so checking for
- // StringStream instead
- this.c = input.LA(1);
- this.line = input.getLine();
- this.charPositionInLine = input.getCharPositionInLine();
- }
- else {
- this.c = input.LA(1);
- }
-
- this.message = this.toString();
-};
-
-org.antlr.lang.extend(org.antlr.runtime.RecognitionException, Error,
-/** @lends org.antlr.runtime.RecognitionException.prototype */
-{
- /**
- * What input stream did the error occur in?
- */
- input: null,
-
- /** What is index of token/char were we looking at when the error occurred?
- * @type Number
- */
- index: null,
-
- /** The current Token when an error occurred. Since not all streams
- * can retrieve the ith Token, we have to track the Token object.
- * For parsers. Even when it's a tree parser, token might be set.
- * @type org.antlr.runtime.CommonToken
- */
- token: null,
-
- /** If this is a tree parser exception, node is set to the node with
- * the problem.
- * @type Object
- */
- node: null,
-
- /** The current char when an error occurred. For lexers.
- * @type Number
- */
- c: null,
-
- /** Track the line at which the error occurred in case this is
- * generated from a lexer. We need to track this since the
- * unexpected char doesn't carry the line info.
- * @type Number
- */
- line: null,
-
- /** The exception's class name.
- * @type String
- */
- name: "org.antlr.runtime.RecognitionException",
-
- /** Position in the line where exception occurred.
- * @type Number
- */
- charPositionInLine: null,
-
- /** If you are parsing a tree node stream, you will encounter som
- * imaginary nodes w/o line/col info. We now search backwards looking
- * for most recent token with line/col info, but notify getErrorHeader()
- * that info is approximate.
- * @type Boolean
- */
- approximateLineInfo: null,
-
- /** Gather exception information from input stream.
- * @param {org.antlr.runtime.CommonTokenStream|org.antlr.runtime.tree.TreeNodeStream|org.antlr.runtime.ANTLRStringStream} input input stream that has an exception.
- */
- extractInformationFromTreeNodeStream: function(input) {
- var nodes = input,
- priorNode,
- priorPayLoad,
- type,
- text,
- i;
-
- this.node = nodes.LT(1);
- var adaptor = nodes.getTreeAdaptor(),
- payload = adaptor.getToken(this.node);
- if ( payload ) {
- this.token = payload;
- if ( payload.getLine()<= 0 ) {
- // imaginary node; no line/pos info; scan backwards
- i = -1;
- priorNode = nodes.LT(i);
- while ( priorNode ) {
- priorPayload = adaptor.getToken(priorNode);
- if ( priorPayload && priorPayload.getLine()>0 ) {
- // we found the most recent real line / pos info
- this.line = priorPayload.getLine();
- this.charPositionInLine = priorPayload.getCharPositionInLine();
- this.approximateLineInfo = true;
- break;
- }
- --i;
- priorNode = nodes.LT(i);
- }
- }
- else { // node created from real token
- this.line = payload.getLine();
- this.charPositionInLine = payload.getCharPositionInLine();
- }
- }
- else if ( this.node instanceof org.antlr.runtime.tree.CommonTree) {
- this.line = this.node.getLine();
- this.charPositionInLine = this.node.getCharPositionInLine();
- if ( this.node instanceof org.antlr.runtime.tree.CommonTree) {
- this.token = this.node.token;
- }
- }
- else {
- type = adaptor.getType(this.node);
- text = adaptor.getText(this.node);
- this.token = new org.antlr.runtime.CommonToken(type, text);
- }
- },
-
- /** Return the token type or char of the unexpected input element
- * @return {Number} type of the unexpected input element.
- */
- getUnexpectedType: function() {
- if ( this.input instanceof NewLazyTokenStream) {//org.antlr.runtime.CommonTokenStream ) {
- return this.token.getType();
- }
- else if ( this.input instanceof org.antlr.runtime.tree.TreeNodeStream ) {
- var nodes = this.input;
- var adaptor = nodes.getTreeAdaptor();
- return adaptor.getType(this.node);
- }
- else {
- return this.c;
- }
- }
-});
-org.antlr.runtime.MismatchedTokenException = function(expecting, input) {
- if (arguments.length===0) {
- this.expecting = org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
- } else {
- org.antlr.runtime.MismatchedTokenException.superclass.constructor.call(
- this, input);
- this.expecting = expecting;
- }
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MismatchedTokenException,
- org.antlr.runtime.RecognitionException, {
- toString: function() {
- return "MismatchedTokenException(" +
- this.getUnexpectedType() + "!=" + this.expecting + ")";
- },
- name: "org.antlr.runtime.MismatchedTokenException"
-});
-org.antlr.runtime.UnwantedTokenException = function(expecting, input) {
- if (arguments.length>0) {
- org.antlr.runtime.UnwantedTokenException.superclass.constructor.call(
- this, expecting, input);
- }
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.UnwantedTokenException,
- org.antlr.runtime.MismatchedTokenException, {
- getUnexpectedToken: function() {
- return this.token;
- },
- toString: function() {
- var exp = ", expected "+this.expecting;
- if ( this.expecting===org.antlr.runtime.Token.INVALID_TOKEN_TYPE ) {
- exp = "";
- }
- if ( !org.antlr.lang.isValue(this.token) ) {
- return "UnwantedTokenException(found="+exp+")";
- }
- return "UnwantedTokenException(found="+this.token.getText()+exp+")";
- },
- name: "org.antlr.runtime.UnwantedTokenException"
-});
-org.antlr.runtime.MissingTokenException = function(expecting, input, inserted) {
- if (arguments.length>0) {
- org.antlr.runtime.MissingTokenException.superclass.constructor.call(
- this, expecting, input);
- this.inserted = inserted;
- }
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MissingTokenException,
- org.antlr.runtime.MismatchedTokenException, {
- getMissingType: function() {
- return this.expecting;
- },
-
- toString: function() {
- if (org.antlr.lang.isValue(this.inserted) &&
- org.antlr.lang.isValue(this.token))
- {
- return "MissingTokenException(inserted "+this.inserted+" at "+this.token.getText()+")";
- }
- if ( org.antlr.lang.isValue(this.token) ) {
- return "MissingTokenException(at "+this.token.getText()+")";
- }
- return "MissingTokenException";
- },
- name: "org.antlr.runtime.MissingTokenException"
-});
-org.antlr.runtime.NoViableAltException = function(grammarDecisionDescription,
- decisionNumber,
- stateNumber,
- input)
-{
- org.antlr.runtime.NoViableAltException.superclass.constructor.call(this, input);
- this.grammarDecisionDescription = grammarDecisionDescription;
- this.decisionNumber = decisionNumber;
- this.stateNumber = stateNumber;
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.NoViableAltException,
- org.antlr.runtime.RecognitionException, {
- toString: function() {
- if ( this.input instanceof org.antlr.runtime.ANTLRStringStream ) {
- return "NoViableAltException('"+this.getUnexpectedType()+"'@["+this.grammarDecisionDescription+"])";
- }
- else {
- return "NoViableAltException("+this.getUnexpectedType()+"@["+this.grammarDecisionDescription+"])";
- }
- },
- name: "org.antlr.runtime.NoViableAltException"
-});
-org.antlr.runtime.EarlyExitException = function(decisionNumber, input) {
- org.antlr.runtime.EarlyExitException.superclass.constructor.call(
- this, input);
- this.decisionNumber = decisionNumber;
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.EarlyExitException,
- org.antlr.runtime.RecognitionException,
-/** @lends org.antlr.runtime.EarlyExitException.prototype */
-{
- /** Name of this class.
- * @type String
- */
- name: "org.antlr.runtime.EarlyExitException"
-});
-org.antlr.runtime.MismatchedSetException = function(expecting, input) {
- org.antlr.runtime.MismatchedSetException.superclass.constructor.call(
- this, input);
- this.expecting = expecting;
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MismatchedSetException,
- org.antlr.runtime.RecognitionException, {
- toString: function() {
- return "MismatchedSetException(" +
- this.getUnexpectedType() + "!=" + this.expecting + ")";
- },
- name: "org.antlr.runtime.MismatchedSetException"
-});
-org.antlr.runtime.MismatchedNotSetException = function(expecting, input) {
- org.antlr.runtime.MismatchedNotSetException.superclass.constructor.call(this, expecting, input);
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MismatchedNotSetException,
- org.antlr.runtime.MismatchedSetException, {
- toString: function() {
- return "MismatchedNotSetException(" +
- this.getUnexpectedType() + "!=" + this.expecting + ")";
- },
- name: "org.antlr.runtime.MismatchedNotSetException"
-});
-org.antlr.runtime.MismatchedRangeException = function(a, b, input) {
- if (arguments.length===0) {
- return this;
- }
-
- org.antlr.runtime.MismatchedRangeException.superclass.constructor.call(
- this, input);
- this.a = a;
- this.b = b;
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MismatchedRangeException,
- org.antlr.runtime.RecognitionException, {
- toString: function() {
- return "MismatchedRangeException(" +
- this.getUnexpectedType()+" not in ["+this.a+","+this.b+"])";
- },
- name: "org.antlr.runtime.MismatchedRangeException"
-});
-org.antlr.runtime.FailedPredicateException = function(input, ruleName, predicateText){
- org.antlr.runtime.FailedPredicateException.superclass.constructor.call(this, input);
- this.ruleName = ruleName;
- this.predicateText = predicateText;
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.FailedPredicateException,
- org.antlr.runtime.RecognitionException,
-/** @lends org.antlr.runtime.FailedPredicateException.prototype */
-{
- /** Create a string representation of this exception.
- * @returns {String}
- */
- toString: function() {
- return "FailedPredicateException("+this.ruleName+",{"+this.predicateText+"}?)";
- },
-
- /** Name of this class.
- * @type String
- */
- name: "org.antlr.runtime.FailedPredicateException"
-});
-org.antlr.runtime.BitSet = function(bits) {
- if (!bits) {
- bits = org.antlr.runtime.BitSet.BITS;
- }
-
- if (org.antlr.lang.isArray(bits)) {
- /**
- * An array of Numbers representing the BitSet.
- * @type Array
- */
- this.bits = bits;
- } else if(org.antlr.lang.isNumber(bits)) {
- this.bits = [];
- }
-};
-
-org.antlr.lang.augmentObject(org.antlr.runtime.BitSet, {
- /**
- * Number of bits in each number.
- * @constant
- * @memberOf org.antlr.runtime.BitSet
- */
- BITS: 32,
-
- /**
- * Log (base 2) of the number of bits in each number.
- * @constant
- * @memberOf org.antlr.runtime.BitSet
- */
- LOG_BITS: 5, // 2^5 == 32
-
- /**
- * We will often need to do a mod operator (i mod nbits). Its
- * turns out that, for powers of two, this mod operation is
- * same as (i & (nbits-1)). Since mod is slow, we use a
- * precomputed mod mask to do the mod instead.
- * @constant
- * @memberOf org.antlr.runtime.BitSet
- */
- MOD_MASK: 31, // BITS - 1
-
- /**
- * Create mask for bit modded to fit in a single word.
- * @example
- * bitmask(35) => 00000000000000000000000000000100
- * bitmask(3) => 00000000000000000000000000000100
- * @param {Number} bitNumber the bit to create a mask for.
- * @returns {Number} the bitmask.
- * @memberOf org.antlr.runtime.BitSet
- * @private
- */
- bitMask: function(bitNumber) {
- var bitPosition = bitNumber & org.antlr.runtime.BitSet.MOD_MASK;
- return 1 << bitPosition;
- },
-
- /**
- * Calculate the minimum number of bits needed to represent el.
- * @param {Number} el a number to be included in the BitSet.
- * @returns {Number} the number of bits need to create a BitSet with member
- * el.
- * @memberOf org.antlr.runtime.BitSet
- * @private
- */
- numWordsToHold: function(el) {
- return (el >> org.antlr.runtime.BitSet.LOG_BITS) + 1;
- },
-
- /**
- * @param {Number} bit a number to be included in the BitSet
- * @returns {Number} the index of the word in the field bits that would
- * hold bit.
- * @memberOf org.antlr.runtime.BitSet
- * @private
- */
- wordNumber: function(bit) {
- return bit >> org.antlr.runtime.BitSet.LOG_BITS; // bit / BITS
- },
-
- /**
- * BitSet factory method.
- *
- * <p>Operates in a number of modes:
- * <ul>
- * <li>If el is a number create the BitSet containing that number.</li>
- * <li>If el is an array create the BitSet containing each number in the
- * array.</li>
- * <li>If el is a BitSet return el.</li>
- * <li>If el is an Object create the BitSet containing each numeric value
- * in el.</li>
- * <li>If el is a number and el2 is a number return a BitSet containing
- * the numbers between el and el2 (inclusive).</li>
- * </ul>
- * </p>
- * @param {Number|Array|org.antlr.runtime.BitSet|Object} el
- * @param {Number} el2
- * @returns {org.antlr.runtime.BitSet}
- * @memberOf org.antlr.runtime.BitSet
- */
- of: function(el, el2) {
- var i, n, s, keys;
-
- if (org.antlr.lang.isNumber(el)) {
- if (org.antlr.lang.isNumber(el2)) {
- s = new org.antlr.runtime.BitSet(el2 + 1);
- for (i = el; i <= el2; i++) {
- n = org.antlr.runtime.BitSet.wordNumber(i);
- s.bits[n] |= org.antlr.runtime.BitSet.bitMask(i);
- }
- return s;
- } else {
- s = new org.antlr.runtime.BitSet(el + 1);
- s.add(el);
- return s;
- }
- } else if(org.antlr.lang.isArray(el)) {
- s = new org.antlr.runtime.BitSet();
- for (i=el.length-1; i>=0; i--) {
- s.add(el[i]);
- }
- return s;
- } else if (el instanceof org.antlr.runtime.BitSet) {
- if (!el) {
- return null;
- }
- return el;
- } else if (el instanceof org.antlr.runtime.IntervalSet) {
- if (!el) {
- return null;
- }
- s = new org.antlr.runtime.BitSet();
- s.addAll(el);
- return s;
- } else if (org.antlr.lang.isObject(el)) {
- keys = [];
- for (i in el) {
- if (org.antlr.lang.isNumber(i)) {
- keys.push(i);
- }
- }
- return org.antlr.runtime.BitSet.of(keys);
- }
- }
-});
-
-
-
-org.antlr.runtime.BitSet.prototype = {
- /**
- * Add el into this set.
- * @param {Number} el the number to add to the set.
- */
- add: function(el) {
- var n = org.antlr.runtime.BitSet.wordNumber(el);
- if (n >= this.bits.length) {
- this.growToInclude(el);
- }
- this.bits[n] |= org.antlr.runtime.BitSet.bitMask(el);
- },
-
- /**
- * Add multiple elements into this set.
- * @param {Array|org.antlr.runtime.BitSet} elements the elements to be added to
- * this set.
- */
- addAll: function(elements) {
- var other,
- i,
- e;
-
- if ( elements instanceof org.antlr.runtime.BitSet ) {
- this.orInPlace(elements);
- }
- else if ( elements instanceof org.antlr.runtime.IntervalSet ) {
- other = elements;
- // walk set and add each interval
- /* @todo after implementing intervalset
- for (Iterator iter = other.intervals.iterator(); iter.hasNext();) {
- Interval I = (Interval) iter.next();
- this.orInPlace(BitSet.range(I.a,I.b));
- }*/
- } else if (org.antlr.lang.isArray(elements)) {
- for (i = 0; i < elements.length; i++) {
- e = elements[i];
- this.add(e);
- }
- } else {
- return;
- }
- },
-
- /**
- * Clone this BitSet and then {@link #andInPlace} with a.
- * @param {org.antlr.runtime.BitSet} a a bit set.
- * @returns {org.antlr.runtime.BitSet}
- */
- and: function(a) {
- var s = this.clone();
- s.andInPlace(a);
- return s;
- },
-
- /**
- * Perform a logical AND of this target BitSet with the argument BitSet.
- *
- * This bit set is modified so that each bit in it has the value true if
- * and only if it both initially had the value true and the corresponding
- * bit in the bit set argument also had the value true.
- * @param {org.antlr.runtime.BitSet} a a bit set.
- * @returns {org.antlr.runtime.BitSet}
- */
- andInPlace: function(a) {
- var min = Math.min(this.bits.length, a.bits.length),
- i;
- for (i = min - 1; i >= 0; i--) {
- this.bits[i] &= a.bits[i];
- }
- // clear all bits in this not present in a (if this bigger than a).
- for (i = min; i < this.bits.length; i++) {
- this.bits[i] = 0;
- }
- },
-
- /**
- * Clear all bits or a specific bit.
- *
- * If no arguments given, sets all of the bits in this BitSet to false.
- * If one argument given, sets the bit specified by the index to false.
- * @param {Number} [el] the index of the bit to be cleared.
- */
- clear: function(el) {
- if (arguments.length===0) {
- var i;
- for (i = this.bits.length - 1; i >= 0; i--) {
- this.bits[i] = 0;
- }
- return;
- }
-
- var n = org.antlr.runtime.BitSet.wordNumber(el);
- if (n >= this.bits.length) { // grow as necessary to accommodate
- this.growToInclude(el);
- }
- this.bits[n] &= ~org.antlr.runtime.BitSet.bitMask(el);
- },
-
- /**
- * Cloning this BitSet produces a new BitSet that is equal to it.
- *
- * The clone of the bit set is another bit set that has exactly the same
- * bit set to true as this bit set.
- * @returns {org.antlr.runtime.BitSet} a clone of this BitSet.
- */
- clone: function() {
- var i, len, b=[];
- for (i=0, len=this.bits.length; i<len; i++) {
- b[i] = this.bits[i];
- }
- return new org.antlr.runtime.BitSet(b);
- },
-
- /**
- * Returns the number of bits of space actually in use by this BitSet to
- * represent bit values.
- *
- * The maximum element in the set is the size - 1st element.
- * @returns {Number} the number of bits currently in this bit set.
- */
- size: function() {
- var deg = 0, i, word, bit;
- for (i = this.bits.length - 1; i >= 0; i--) {
- word = this.bits[i];
- if (word !== 0) {
- for (bit = org.antlr.runtime.BitSet.BITS - 1; bit >= 0; bit--) {
- if ((word & (1 << bit)) !== 0) {
- deg++;
- }
- }
- }
- }
- return deg;
- },
-
- /**
- * Compares this object against the specified object.
- *
- * The result is true if and only if the argument is not null and is a
- * BitSet object that has exactly the same set of bits set to true as
- * this bit set. That is, for every nonnegative int index k,
- * <pre><code>
- * ((BitSet)obj).get(k) == this.get(k)
- * </code></pre>
- * must be true. The current sizes of the two bit sets are not compared.
- * @param {Object} other the object to compare with.
- * @returns {Boolean} if the objects are the same; false otherwise.
- */
- equals: function(other) {
- if ( !other || !(other instanceof org.antlr.runtime.BitSet) ) {
- return false;
- }
-
- var otherSet = other,
- i,
- n = Math.min(this.bits.length, otherSet.bits.length);
-
- // for any bits in common, compare
- for (i=0; i<n; i++) {
- if (this.bits[i] != otherSet.bits[i]) {
- return false;
- }
- }
-
- // make sure any extra bits are off
-
- if (this.bits.length > n) {
- for (i = n+1; i<this.bits.length; i++) {
- if (this.bits[i] !== 0) {
- return false;
- }
- }
- }
- else if (otherSet.bits.length > n) {
- for (i = n+1; i<otherSet.bits.length; i++) {
- if (otherSet.bits[i] !== 0) {
- return false;
- }
- }
- }
-
- return true;
- },
-
- /**
- * Grows the set to a larger number of bits.
- * @param {Number} bit element that must fit in set
- * @private
- */
- growToInclude: function(bit) {
- var newSize = Math.max(this.bits.length << 1, org.antlr.runtime.BitSet.numWordsToHold(bit)),
- newbits = [], //new Array(newSize),
- i;
- for (i=0, len=this.bits.length; i<len; i++) {
- newbits[i] = this.bits[i];
- }
- this.bits = newbits;
- },
-
- /**
- * Returns the value of the bit with the specified index.
- *
- * The value is true if the bit with the index el is currently set
- * in this BitSet; otherwise, the result is false.
- * @param {Number} el the bit index.
- * @returns {Boolean} the value of the bit with the specified index.
- */
- member: function(el) {
- var n = org.antlr.runtime.BitSet.wordNumber(el);
- if (n >= this.bits.length) { return false; }
- return (this.bits[n] & org.antlr.runtime.BitSet.bitMask(el)) !== 0;
- },
-
- /**
- * Returns the index of the first bit that is set to true.
- * If no such bit exists then -1 is returned.
- * @returns {Number} the index of the next set bit.
- */
- getSingleElement: function() {
- var i;
- for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
- if (this.member(i)) {
- return i;
- }
- }
- return -1; //Label.INVALID;
- },
-
- /**
- * Returns true if this BitSet contains no bits that are set to true.
- * @returns {Boolean} boolean indicating whether this BitSet is empty.
- */
- isNil: function() {
- var i;
- for (i = this.bits.length - 1; i >= 0; i--) {
- if (this.bits[i] !== 0) {
- return false;
- }
- }
- return true;
- },
-
- /**
- * If a bit set argument is passed performs a {@link #subtract} of this bit
- * set with the argument bit set. If no argument is passed, clone this bit
- * set and {@link #notInPlace}.
- * @param {org.antlr.runtime.BitSet} [set]
- * @returns {org.antlr.runtime.BitSet}
- */
- complement: function(set) {
- if (set) {
- return set.subtract(this);
- } else {
- var s = this.clone();
- s.notInPlace();
- return s;
- }
- },
-
- /**
- * If no arguments are passed sets all bits to the complement of their
- * current values. If one argument is passed sets each bit from the
- * beginning of the bit set to index1 (inclusive) to the complement of its
- * current value. If two arguments are passed sets each bit from the
- * specified index1 (inclusive) to the sepcified index2 (inclusive) to the
- * complement of its current value.
- * @param {Number} index1
- * @param {Number} index2
- */
- notInPlace: function() {
- var minBit, maxBit, i, n;
- if (arguments.length===0) {
- for (i = this.bits.length - 1; i >= 0; i--) {
- this.bits[i] = ~this.bits[i];
- }
- } else {
- if (arguments.length===1) {
- minBit = 0;
- maxBit = arguments[0];
- } else {
- minBit = arguments[0];
- maxBit = arguments[1];
- }
- // make sure that we have room for maxBit
- this.growToInclude(maxBit);
- for (i = minBit; i <= maxBit; i++) {
- n = org.antlr.runtime.BitSet.wordNumber(i);
- this.bits[n] ^= org.antlr.runtime.BitSet.bitMask(i);
- }
- }
-
- },
-
- /**
- * Performs a logical OR of this bit set with the bit set argument.
- * If no argument is passed, return this bit set. Otherwise a clone of
- * this bit set is modified so that a bit in it has the value true if and
- * only if it either already had the value true or the corresponding bit
- * in the bit set argument has the value true.
- * @param {org.antlr.runtime.BitSet} [a] a bit set.
- * @returns {org.antlr.runtime.BitSet}
- */
- or: function(a) {
- if ( !a ) {
- return this;
- }
- var s = this.clone();
- s.orInPlace(a);
- return s;
- },
-
- /**
- * Performs a logical {@link #or} in place.
- * @param {org.antlr.runtime.BitSet} [a]
- * @returns {org.antlr.runtime.BitSet}
- */
- orInPlace: function(a) {
- if ( !a ) {
- return;
- }
- // If this is smaller than a, grow this first
- if (a.bits.length > this.bits.length) {
- this.setSize(a.bits.length);
- }
- var min = Math.min(this.bits.length, a.bits.length),
- i;
- for (i = min - 1; i >= 0; i--) {
- this.bits[i] |= a.bits[i];
- }
- },
-
- /**
- * Sets the bit specified by the index to false.
- * @param {Number} bitIndex the index of the bit to be cleared.
- */
- remove: function(el) {
- var n = org.antlr.runtime.BitSet.wordNumber(el);
- if (n >= this.bits.length) {
- this.growToInclude(el);
- }
- this.bits[n] &= ~org.antlr.runtime.BitSet.bitMask(el);
- },
-
- /**
- * Grows the internal bits array to include at least nwords numbers.
- * @private
- * @param {Number} nwords how many words the new set should be
- * @private
- */
- setSize: function(nwords) {
- var n = nwords - this.bits.length;
- while (n>=0) {
- this.bits.push(0);
- n--;
- }
- },
-
- /**
- * Returns the number of bits capable of being represented by this bit set
- * given its current size.
- * @returns {Number} the maximum number of bits that can be represented at
- * the moment.
- * @private
- */
- numBits: function() {
- return this.bits.length << org.antlr.runtime.BitSet.LOG_BITS; // num words * bits per word
- },
-
- /**
- * Return how much space is being used by the bits array not
- * how many actually have member bits on.
- * @returns {Number} the length of the internal bits array.
- * @private
- */
- lengthInLongWords: function() {
- return this.bits.length;
- },
-
- /**
- * Is this bit set contained within a?
- * @param {org.antlr.runtime.BitSet} a bit set
- * @returns {Boolean} true if and only if a is a subset of this bit set.
- */
- subset: function(a) {
- if (!a) { return false; }
- return this.and(a).equals(this);
- },
-
- /**
- * Subtract the elements of the argument bit set from this bit set in place.
- * That is, for each set bit in the argument bit set, set the corresponding
- * bit in this bit set to false.
- * @param {org.antlr.runtime.BitSet} a bit set.
- */
- subtractInPlace: function(a) {
- if (!a) { return; }
- // for all words of 'a', turn off corresponding bits of 'this'
- var i;
- for (i = 0; i < this.bits.length && i < a.bits.length; i++) {
- this.bits[i] &= ~a.bits[i];
- }
- },
-
- /**
- * Perform a {@link #subtractInPlace} on a clone of this bit set.
- * @param {org.antlr.runtime.BitSet} a bit set.
- * @returns {org.antlr.runtime.BitSet} the new bit set.
- */
- subtract: function(a) {
- if (!a || !(a instanceof org.antlr.runtime.BitSet)) { return null; }
-
- var s = this.clone();
- s.subtractInPlace(a);
- return s;
- },
-
- /* antlr-java needs this to make its class hierarchy happy . . .
- toList: function() {
- throw new Error("BitSet.toList() unimplemented");
- },
- */
-
- /**
- * Creates an array of the indexes of each bit set in this bit set.
- * @returns {Array}
- */
- toArray: function() {
- var elems = [], //new Array(this.size()),
- i,
- en = 0;
- for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
- if (this.member(i)) {
- elems[en++] = i;
- }
- }
- return elems;
- },
-
- /**
- * Returns the internal representation of this bit set.
- * This representation is an array of numbers, each representing 32 bits.
- * @returns {Array}
- */
- toPackedArray: function() {
- return this.bits;
- },
-
- /**
- * Returns a string representation of this bit set.
- * <p>For every index for which this BitSet contains a bit in the set state,
- * the decimal representation of that index is included in the result.
- * Such indices are listed in order from lowest to highest, separated by
- * ", " (a comma and a space) and surrounded by braces, resulting in the
- * usual mathematical notation for a set of integers.</p>
- *
- * <p>If a grammar g is passed, print g.getTokenDisplayName(i) for each set
- * index instead of the numerical index.</p>
- *
- * <>If two arguments are passed, the first will be used as a custom
- * separator string. The second argument is an array whose i-th element
- * will be added if the corresponding bit is set.</p>
- *
- * @param {Object|String} [arg1] an Object with function property
- * getTokenDispalyName or a String that will be used as a list
- * separator.
- * @param {Array} [vocabulary] array from which the i-th value will be
- * drawn if the corresponding bit is set. Must pass a string as the
- * first argument if using this option.
- * @return A commma-separated list of values
- */
- toString: function() {
- if (arguments.length===0) {
- return this.toString1(null);
- } else {
- if (org.antlr.lang.isString(arguments[0])) {
- if (!org.antlr.lang.isValue(arguments[1])) {
- return this.toString1(null);
- } else {
- return this.toString2(arguments[0], arguments[1]);
- }
- } else {
- return this.toString1(arguments[0]);
- }
- }
- },
-
- /**
- * Transform a bit set into a string by formatting each element as an
- * integer separator The string to put in between elements
- * @private
- * @return A commma-separated list of values
- */
- toString1: function(g) {
- var buf = "{",
- separator = ",",
- i,
- havePrintedAnElement = false;
-
- for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
- if (this.member(i)) {
- if (i > 0 && havePrintedAnElement ) {
- buf += separator;
- }
- if ( g ) {
- buf += g.getTokenDisplayName(i);
- }
- else {
- buf += i.toString();
- }
- havePrintedAnElement = true;
- }
- }
- return buf + "}";
- },
-
- /**
- * Create a string representation where instead of integer elements, the
- * ith element of vocabulary is displayed instead. Vocabulary is a Vector
- * of Strings.
- * separator The string to put in between elements
- * @private
- * @return A commma-separated list of character constants.
- */
- toString2: function(separator, vocabulary) {
- var str = "",
- i;
- for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
- if (this.member(i)) {
- if (str.length > 0) {
- str += separator;
- }
- if (i >= vocabulary.size()) {
- str += "'" + i + "'";
- }
- else if (!org.antlr.lang.isValue(vocabulary.get(i))) {
- str += "'" + i + "'";
- }
- else {
- str += vocabulary.get(i);
- }
- }
- }
- return str;
- }
-
- /*
- * Dump a comma-separated list of the words making up the bit set.
- * Split each 32 bit number into two more manageable 16 bit numbers.
- * @returns {String} comma separated list view of the this.bits property.
- *
- toStringOfHalfWords: function() {
- var s = "",
- tmp,
- i;
- for (i = 0; i < this.bits.length; i++) {
- if (i !== 0) {
- s+=", ";
- }
- tmp = this.bits[i];
- tmp &= 0xFFFF;
- s += tmp + "UL, ";
- tmp = this.bits[i] >> 16;
- tmp &= 0xFFFF;
- s += tmp+"UL";
- }
- return s;
- },
- */
-
- /*
- * Dump a comma-separated list of the words making up the bit set.
- * This generates a comma-separated list of Java-like long int constants.
- *
- toStringOfWords: function() {
- var s="",
- i;
- for (i = 0; i < this.bits.length; i++) {
- if (i !== 0) {
- s+=", ";
- }
- s += this.bits[i]+"L";
- }
- return s;
- },
-
- toStringWithRanges: function() {
- return this.toString();
- }
- */
-};
-org.antlr.runtime.CharStream = {
- EOF: -1
-};
-org.antlr.runtime.CommonToken = function() {
- var oldToken;
-
- this.charPositionInLine = -1; // set to invalid position
- this.channel = 0; // org.antlr.runtime.CommonToken.DEFAULT_CHANNEL
- this.index = -1;
-
- if (arguments.length == 1) {
- if (org.antlr.lang.isNumber(arguments[0])) {
- this.type = arguments[0];
- } else {
- oldToken = arguments[0];
- this.text = oldToken.getText();
- this.type = oldToken.getType();
- this.line = oldToken.getLine();
- this.index = oldToken.getTokenIndex();
- this.charPositionInLine = oldToken.getCharPositionInLine();
- this.channel = oldToken.getChannel();
- if ( oldToken instanceof org.antlr.runtime.CommonToken ) {
- this.start = oldToken.start;
- this.stop = oldToken.stop;
- }
- }
- } else if (arguments.length == 2) {
- this.type = arguments[0];
- this.text = arguments[1];
- this.channel = 0; // org.antlr.runtime.CommonToken.DEFAULT_CHANNEL
- } else if (arguments.length == 5) {
- this.input = arguments[0];
- this.type = arguments[1];
- this.channel = arguments[2];
- this.start = arguments[3];
- this.stop = arguments[4];
- }
-};
-
-org.antlr.runtime.CommonToken.prototype = {
- getType: function() {
- return this.type;
- },
-
- setLine: function(line) {
- this.line = line;
- },
-
- getText: function() {
- if ( org.antlr.lang.isString(this.text) ) {
- return this.text;
- }
- if ( !this.input ) {
- return null;
- }
- this.text = this.input.substring(this.start,this.stop);
- return this.text;
- },
-
- /** Override the text for this token. getText() will return this text
- * rather than pulling from the buffer. Note that this does not mean
- * that start/stop indexes are not valid. It means that that input
- * was converted to a new string in the token object.
- */
- setText: function(text) {
- this.text = text;
- },
-
- getLine: function() {
- return this.line;
- },
-
- getCharPositionInLine: function() {
- return this.charPositionInLine;
- },
-
- setCharPositionInLine: function(charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- },
-
- getChannel: function() {
- return this.channel;
- },
-
- setChannel: function(channel) {
- this.channel = channel;
- },
-
- setType: function(type) {
- this.type = type;
- },
-
- getStartIndex: function() {
- return this.start;
- },
-
- setStartIndex: function(start) {
- this.start = start;
- },
-
- getStopIndex: function() {
- return this.stop;
- },
-
- setStopIndex: function(stop) {
- this.stop = stop;
- },
-
- getTokenIndex: function() {
- return this.index;
- },
-
- setTokenIndex: function(index) {
- this.index = index;
- },
-
- getInputStream: function() {
- return this.input;
- },
-
- setInputStream: function(input) {
- this.input = input;
- },
-
- toString: function() {
- var channelStr = "";
- if ( this.channel>0 ) {
- channelStr=",channel="+this.channel;
- }
- var txt = this.getText();
- if ( !org.antlr.lang.isNull(txt) ) {
- txt = txt.replace(/\n/g,"\\\\n");
- txt = txt.replace(/\r/g,"\\\\r");
- txt = txt.replace(/\t/g,"\\\\t");
- }
- else {
- txt = "<no text>";
- }
- return "[@"+this.getTokenIndex()+","+this.start+":"+this.stop+"='"+txt+"',<"+this.type+">"+channelStr+","+this.line+":"+this.getCharPositionInLine()+"]";
- }
-};
-// NB: Because Token has static members of type CommonToken, the Token dummy
-// constructor is defined in CommonToken. All methods and vars of Token are
-// defined here. Token is an interface, not a subclass in the Java runtime.
-
-/**
- * @class Abstract base class of all token types.
- * @name Token
- * @memberOf org.antlr.runtime
- */
-org.antlr.runtime.Token = function() {};
-org.antlr.lang.augmentObject(org.antlr.runtime.Token, /** @lends Token */ {
- EOR_TOKEN_TYPE: 1,
-
- /** imaginary tree navigation type; traverse "get child" link */
- DOWN: 2,
- /** imaginary tree navigation type; finish with a child list */
- UP: 3,
-
- MIN_TOKEN_TYPE: 4, // UP+1,
-
- EOF: org.antlr.runtime.CharStream.EOF,
- EOF_TOKEN: new org.antlr.runtime.CommonToken(org.antlr.runtime.CharStream.EOF),
-
- INVALID_TOKEN_TYPE: 0,
- INVALID_TOKEN: new org.antlr.runtime.CommonToken(0),
-
- /** In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR
- * will avoid creating a token for this symbol and try to fetch another.
- */
- SKIP_TOKEN: new org.antlr.runtime.CommonToken(0),
-
- /** All tokens go to the parser (unless skip() is called in that rule)
- * on a particular "channel". The parser tunes to a particular channel
- * so that whitespace etc... can go to the parser on a "hidden" channel.
- */
- DEFAULT_CHANNEL: 0,
-
- /** Anything on different channel than DEFAULT_CHANNEL is not parsed
- * by parser.
- */
- HIDDEN_CHANNEL: 99
-});
-
-org.antlr.lang.augmentObject(org.antlr.runtime.CommonToken, org.antlr.runtime.Token);
-org.antlr.runtime.tree = {};
-org.antlr.runtime.tree.RewriteCardinalityException = function(elementDescription) {
- this.elementDescription = elementDescription;
-};
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteCardinalityException, Error, {
- getMessage: function() {
- if ( org.antlr.lang.isString(this.elementDescription) ) {
- return this.elementDescription;
- }
- return null;
- },
- name: function() {
- return "org.antlr.runtime.tree.RewriteCardinalityException";
- }
-});
-org.antlr.runtime.tree.RewriteEmptyStreamException = function(elementDescription) {
- var sup = org.antlr.runtime.tree.RewriteEmptyStreamException.superclass;
- sup.constructor.call(this, elementDescription);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteEmptyStreamException,
- org.antlr.runtime.tree.RewriteCardinalityException, {
- name: function() {
- return "org.antlr.runtime.tree.RewriteEmptyStreamException";
- }
-});
-org.antlr.runtime.tree.RewriteEarlyExitException = function(elementDescription) {
- var sup = org.antlr.runtime.tree.RewriteEarlyExitException.superclass;
- if (org.antlr.lang.isUndefined(elementDescription)) {
- elementDescription = null;
- }
- sup.constructor.call(this, elementDescription);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteEarlyExitException,
- org.antlr.runtime.tree.RewriteCardinalityException, {
- name: function() {
- return "org.antlr.runtime.tree.RewriteEarlyExitException";
- }
-});
-org.antlr.runtime.MismatchedTreeNodeException = function(expecting, input) {
- if (expecting && input) {
- org.antlr.runtime.MismatchedTreeNodeException.superclass.constructor.call(
- this, input);
- this.expecting = expecting;
- }
-};
-
-org.antlr.lang.extend(
- org.antlr.runtime.MismatchedTreeNodeException,
- org.antlr.runtime.RecognitionException, {
- toString: function() {
- return "MismatchedTreeNodeException(" +
- this.getUnexpectedType() + "!=" + this.expecting + ")";
- },
- name: "org.antlr.runtime.MismatchedTreeNodeException"
-});
-org.antlr.runtime.tree.BaseTree = function() {};
-
-org.antlr.runtime.tree.BaseTree.prototype = {
- getChild: function(i) {
- if ( !this.children || i>=this.children.length ) {
- return null;
- }
- return this.children[i];
- },
-
- /** Get the children internal List; note that if you directly mess with
- * the list, do so at your own risk.
- */
- getChildren: function() {
- return this.children;
- },
-
- getFirstChildWithType: function(type) {
- var i, t;
- for (i = 0; this.children && i < this.children.length; i++) {
- t = this.children[i];
- if ( t.getType()===type ) {
- return t;
- }
- }
- return null;
- },
-
- getChildCount: function() {
- if ( !this.children ) {
- return 0;
- }
- return this.children.length;
- },
-
- /** Add t as child of this node.
- *
- * Warning: if t has no children, but child does
- * and child isNil then this routine moves children to t via
- * t.children = child.children; i.e., without copying the array.
- */
- addChild: function(t) {
- if ( !org.antlr.lang.isValue(t) ) {
- return; // do nothing upon addChild(null)
- }
- var childTree = t, n, i, c;
- if ( childTree.isNil() ) { // t is an empty node possibly with children
- if ( this.children && this.children == childTree.children ) {
- throw new Error("attempt to add child list to itself");
- }
- // just add all of childTree's children to this
- if ( childTree.children ) {
- if ( this.children ) { // must copy, this has children already
- n = childTree.children.length;
- for (i = 0; i < n; i++) {
- c = childTree.children[i];
- this.children.push(c);
- // handle double-link stuff for each child of nil root
- c.setParent(this);
- c.setChildIndex(this.children.length-1);
- }
- }
- else {
- // no children for this but t has children; just set pointer
- // call general freshener routine
- this.children = childTree.children;
- this.freshenParentAndChildIndexes();
- }
- }
- }
- else { // child is not nil (don't care about children)
- if ( !this.children ) {
- this.children = this.createChildrenList(); // create children list on demand
- }
- this.children.push(t);
- childTree.setParent(this);
- childTree.setChildIndex(this.children.length-1);
- }
- },
-
- /** Add all elements of kids list as children of this node */
- addChildren: function(kids) {
- var i, t;
- for (i = 0; i < kids.length; i++) {
- t = kids[i];
- this.addChild(t);
- }
- },
-
- setChild: function(i, t) {
- if ( !t ) {
- return;
- }
- if ( t.isNil() ) {
- throw new Error("Can't set single child to a list");
- }
- if ( !this.children ) {
- this.children = this.createChildrenList();
- }
- this.children[i] = t;
- t.setParent(this);
- t.setChildIndex(i);
- },
-
- deleteChild: function(i) {
- if ( !this.children ) {
- return null;
- }
- if (i<0 || i>=this.children.length) {
- throw new Error("Index out of bounds.");
- }
- var killed = this.children.splice(i, 1)[0];
- // walk rest and decrement their child indexes
- this.freshenParentAndChildIndexes(i);
- return killed;
- },
-
- /** Delete children from start to stop and replace with t even if t is
- * a list (nil-root tree). num of children can increase or decrease.
- * For huge child lists, inserting children can force walking rest of
- * children to set their childindex; could be slow.
- */
- replaceChildren: function(startChildIndex, stopChildIndex, t) {
- if ( !this.children ) {
- throw new Error("indexes invalid; no children in list");
- }
- var replacingHowMany = stopChildIndex - startChildIndex + 1;
- var replacingWithHowMany;
- var newTree = t;
- var newChildren = null;
- // normalize to a list of children to add: newChildren
- if ( newTree.isNil() ) {
- newChildren = newTree.children;
- }
- else {
- newChildren = [];
- newChildren.push(newTree);
- }
- replacingWithHowMany = newChildren.length;
- var numNewChildren = newChildren.length;
- var delta = replacingHowMany - replacingWithHowMany;
- var j, i, child, indexToDelete, c, killed, numToInsert;
- // if same number of nodes, do direct replace
- if ( delta === 0 ) {
- j = 0; // index into new children
- for (i=startChildIndex; i<=stopChildIndex; i++) {
- child = newChildren[j];
- this.children[i] = child;
- child.setParent(this);
- child.setChildIndex(i);
- j++;
- }
- }
- else if ( delta > 0 ) { // fewer new nodes than there were
- // set children and then delete extra
- for (j=0; j<numNewChildren; j++) {
- this.children[startChildIndex+j] = newChildren[j];
- }
- indexToDelete = startChildIndex+numNewChildren;
- for (c=indexToDelete; c<=stopChildIndex; c++) {
- // delete same index, shifting everybody down each time
- killed = this.children.splice(indexToDelete, 1)[0];
- }
- this.freshenParentAndChildIndexes(startChildIndex);
- }
- else { // more new nodes than were there before
- // fill in as many children as we can (replacingHowMany) w/o moving data
- for (j=0; j<replacingHowMany; j++) {
- this.children[startChildIndex+j] = newChildren[j];
- }
- numToInsert = replacingWithHowMany-replacingHowMany;
- for (j=replacingHowMany; j<replacingWithHowMany; j++) {
- this.children.splice(startChildIndex+j, 0, newChildren[j]);
- }
- this.freshenParentAndChildIndexes(startChildIndex);
- }
- },
-
- /** Override in a subclass to change the impl of children list */
- createChildrenList: function() {
- return [];
- },
-
- isNil: function() {
- return false;
- },
-
- freshenParentAndChildIndexes: function(offset) {
- if (!org.antlr.lang.isNumber(offset)) {
- offset = 0;
- }
- var n = this.getChildCount(),
- c,
- child;
- for (c = offset; c < n; c++) {
- child = this.getChild(c);
- child.setChildIndex(c);
- child.setParent(this);
- }
- },
-
- sanityCheckParentAndChildIndexes: function(parent, i) {
- if (arguments.length===0) {
- parent = null;
- i = -1;
- }
-
- if ( parent!==this.getParent() ) {
- throw new Error("parents don't match; expected "+parent+" found "+this.getParent());
- }
- if ( i!==this.getChildIndex() ) {
- throw new Error("child indexes don't match; expected "+i+" found "+this.getChildIndex());
- }
- var n = this.getChildCount(),
- c,
- child;
- for (c = 0; c < n; c++) {
- child = this.getChild(c);
- child.sanityCheckParentAndChildIndexes(this, c);
- }
- },
-
- /** BaseTree doesn't track child indexes. */
- getChildIndex: function() {
- return 0;
- },
- setChildIndex: function(index) {
- },
-
- /** BaseTree doesn't track parent pointers. */
- getParent: function() {
- return null;
- },
- setParent: function(t) {
- },
-
- getTree: function() {
- return this;
- },
-
- /** Print out a whole tree not just a node */
- toStringTree: function() {
- if ( !this.children || this.children.length===0 ) {
- return this.toString();
- }
- var buf = "",
- i,
- t;
- if ( !this.isNil() ) {
- buf += "(";
- buf += this.toString();
- buf += ' ';
- }
- for (i = 0; this.children && i < this.children.length; i++) {
- t = this.children[i];
- if ( i>0 ) {
- buf += ' ';
- }
- buf += t.toStringTree();
- }
- if ( !this.isNil() ) {
- buf += ")";
- }
- return buf;
- },
-
- getLine: function() {
- return 0;
- },
-
- getCharPositionInLine: function() {
- return 0;
- }
-};
-org.antlr.runtime.tree.CommonTree = function(node) {
- /** What token indexes bracket all tokens associated with this node
- * and below?
- */
- this.startIndex = -1;
- this.stopIndex = -1;
- this.childIndex = -1;
- this.parent = null;
- this.token = null;
-
- if (node instanceof org.antlr.runtime.tree.CommonTree) {
- org.antlr.runtime.tree.CommonTree.superclass.constructor.call(this, node);
- this.token = node.token;
- this.startIndex = node.startIndex;
- this.stopIndex = node.stopIndex;
- } else if (node instanceof org.antlr.runtime.CommonToken) {
- this.token = node;
- }
-};
-org.antlr.lang.extend(org.antlr.runtime.tree.CommonTree, org.antlr.runtime.tree.BaseTree, {
- getToken: function() {
- return this.token;
- },
-
- dupNode: function() {
- return new org.antlr.runtime.tree.CommonTree(this);
- },
-
- isNil: function() {
- return !this.token;
- },
-
- getType: function() {
- if ( !this.token ) {
- return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
- }
- return this.token.getType();
- },
-
- getText: function() {
- if ( !this.token ) {
- return null;
- }
- return this.token.getText();
- },
-
- getLine: function() {
- if ( !this.token || this.token.getLine()===0 ) {
- if ( this.getChildCount()>0 ) {
- return this.getChild(0).getLine();
- }
- return 0;
- }
- return this.token.getLine();
- },
-
- getCharPositionInLine: function() {
- if ( !this.token || this.token.getCharPositionInLine()===-1 ) {
- if ( this.getChildCount()>0 ) {
- return this.getChild(0).getCharPositionInLine();
- }
- return 0;
- }
- return this.token.getCharPositionInLine();
- },
-
- getTokenStartIndex: function() {
- if ( this.token ) {
- return this.token.getTokenIndex();
- }
- return this.startIndex;
- },
-
- setTokenStartIndex: function(index) {
- this.startIndex = index;
- },
-
- getTokenStopIndex: function() {
- if ( this.token ) {
- return this.token.getTokenIndex();
- }
- return this.stopIndex;
- },
-
- setTokenStopIndex: function(index) {
- this.stopIndex = index;
- },
-
- getChildIndex: function() {
- return this.childIndex;
- },
-
- getParent: function() {
- return this.parent;
- },
-
- setParent: function(t) {
- this.parent = t;
- },
-
- setChildIndex: function(index) {
- this.childIndex = index;
- },
-
- toString: function() {
- if ( this.isNil() ) {
- return "nil";
- }
- if ( this.getType()===org.antlr.runtime.Token.INVALID_TOKEN_TYPE ) {
- return "<errornode>";
- }
- if ( !this.token ) {
- return null;
- }
- return this.token.getText();
- }
-});
-org.antlr.runtime.tree.Tree = {
- INVALID_NODE: new org.antlr.runtime.tree.CommonTree(org.antlr.runtime.Token.INVALID_TOKEN)
-};
-org.antlr.runtime.tree.CommonErrorNode = function(input, start, stop, e) {
- if ( !stop ||
- (stop.getTokenIndex() < start.getTokenIndex() &&
- stop.getType()!=org.antlr.runtime.Token.EOF) )
- {
- // sometimes resync does not consume a token (when LT(1) is
- // in follow set. So, stop will be 1 to left to start. adjust.
- // Also handle case where start is the first token and no token
- // is consumed during recovery; LT(-1) will return null.
- stop = start;
- }
- this.input = input;
- this.start = start;
- this.stop = stop;
- this.trappedException = e;
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.CommonErrorNode, org.antlr.runtime.tree.CommonTree, {
- isNil: function() {
- return false;
- },
-
- getType: function() {
- return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
- },
-
- getText: function() {
- var badText = null;
- if ( this.start instanceof org.antlr.runtime.CommonToken ) {
- var i = this.start.getTokenIndex();
- var j = this.stop.getTokenIndex();
- if ( this.stop.getType() === org.antlr.runtime.Token.EOF ) {
- j = this.input.size();
- }
- badText = this.input.toString(i, j);
- }
- else if ( this.start instanceof org.antlr.runtime.tree.CommonTree ) {
- badText = this.input.toString(this.start, this.stop);
- }
- else {
- // people should subclass if they alter the tree type so this
- // next one is for sure correct.
- badText = "<unknown>";
- }
- return badText;
- },
-
- toString: function() {
- if ( this.trappedException instanceof org.antlr.runtime.MissingTokenException ) {
- return "<missing type: "+
- this.trappedException.getMissingType()+
- ">";
- }
- else if ( this.trappedException instanceof org.antlr.runtime.UnwantedTokenException ) {
- return "<extraneous: "+
- this.trappedException.getUnexpectedToken()+
- ", resync="+this.getText()+">";
- }
- else if ( this.trappedException instanceof org.antlr.runtime.MismatchedTokenException ) {
- return "<mismatched token: "+this.trappedException.token+", resync="+this.getText()+">";
- }
- else if ( this.trappedException instanceof org.antlr.runtime.NoViableAltException ) {
- return "<unexpected: "+this.trappedException.token+
- ", resync="+this.getText()+">";
- }
- return "<error: "+this.getText()+">";
- }
-});
-org.antlr.runtime.tree.BaseTreeAdaptor = function() {
- this.uniqueNodeID = 1;
-};
-
-org.antlr.runtime.tree.BaseTreeAdaptor.prototype = {
- nil: function() {
- return this.create(null);
- },
-
- /** create tree node that holds the start and stop tokens associated
- * with an error.
- *
- * If you specify your own kind of tree nodes, you will likely have to
- * override this method. CommonTree returns Token.INVALID_TOKEN_TYPE
- * if no token payload but you might have to set token type for diff
- * node type.
- */
- errorNode: function(input, start, stop, e) {
- var t = new org.antlr.runtime.tree.CommonErrorNode(input, start, stop, e);
- return t;
- },
-
- isNil: function(tree) {
- return tree.isNil();
- },
-
- /** This is generic in the sense that it will work with any kind of
- * tree (not just Tree interface). It invokes the adaptor routines
- * not the tree node routines to do the construction.
- */
- dupTree: function(t, parent) {
- if (arguments.length===1) {
- parent = null;
- }
- if ( !t ) {
- return null;
- }
- var newTree = this.dupNode(t);
- // ensure new subtree root has parent/child index set
- this.setChildIndex(newTree, this.getChildIndex(t)); // same index in new tree
- this.setParent(newTree, parent);
- var n = this.getChildCount(t),
- i, child, newSubTree;
- for (i = 0; i < n; i++) {
- child = this.getChild(t, i);
- newSubTree = this.dupTree(child, t);
- this.addChild(newTree, newSubTree);
- }
- return newTree;
- },
-
- /** Add a child to the tree t. If child is a flat tree (a list), make all
- * in list children of t. Warning: if t has no children, but child does
- * and child isNil then you can decide it is ok to move children to t via
- * t.children = child.children; i.e., without copying the array. Just
- * make sure that this is consistent with have the user will build
- * ASTs.
- */
- addChild: function(t, child) {
- if ( t && org.antlr.lang.isValue(child) ) {
- t.addChild(child);
- }
- },
-
- /** If oldRoot is a nil root, just copy or move the children to newRoot.
- * If not a nil root, make oldRoot a child of newRoot.
- *
- * old=^(nil a b c), new=r yields ^(r a b c)
- * old=^(a b c), new=r yields ^(r ^(a b c))
- *
- * If newRoot is a nil-rooted single child tree, use the single
- * child as the new root node.
- *
- * old=^(nil a b c), new=^(nil r) yields ^(r a b c)
- * old=^(a b c), new=^(nil r) yields ^(r ^(a b c))
- *
- * If oldRoot was null, it's ok, just return newRoot (even if isNil).
- *
- * old=null, new=r yields r
- * old=null, new=^(nil r) yields ^(nil r)
- *
- * Return newRoot. Throw an exception if newRoot is not a
- * simple node or nil root with a single child node--it must be a root
- * node. If newRoot is ^(nil x) return x as newRoot.
- *
- * Be advised that it's ok for newRoot to point at oldRoot's
- * children; i.e., you don't have to copy the list. We are
- * constructing these nodes so we should have this control for
- * efficiency.
- */
- becomeRoot: function(newRoot, oldRoot) {
- if (newRoot instanceof org.antlr.runtime.CommonToken || !newRoot) {
- newRoot = this.create(newRoot);
- }
-
- var newRootTree = newRoot,
- oldRootTree = oldRoot;
- if ( !oldRoot ) {
- return newRoot;
- }
- // handle ^(nil real-node)
- if ( newRootTree.isNil() ) {
- if ( newRootTree.getChildCount()>1 ) {
- // TODO: make tree run time exceptions hierarchy
- throw new Error("more than one node as root (TODO: make exception hierarchy)");
- }
- newRootTree = newRootTree.getChild(0);
- }
- // add oldRoot to newRoot; addChild takes care of case where oldRoot
- // is a flat list (i.e., nil-rooted tree). All children of oldRoot
- // are added to newRoot.
- newRootTree.addChild(oldRootTree);
- return newRootTree;
- },
-
- /** Transform ^(nil x) to x */
- rulePostProcessing: function(root) {
- var r = root;
- if ( r && r.isNil() ) {
- if ( r.getChildCount()===0 ) {
- r = null;
- }
- else if ( r.getChildCount()===1 ) {
- r = r.getChild(0);
- // whoever invokes rule will set parent and child index
- r.setParent(null);
- r.setChildIndex(-1);
- }
- }
- return r;
- },
-
- create: function(tokenType, fromToken) {
- var text, t;
- if (arguments.length===2) {
- if (org.antlr.lang.isString(arguments[1])) {
- text = arguments[1];
- fromToken = this.createToken(tokenType, text);
- t = this.create(fromToken);
- return t;
- } else {
- fromToken = this.createToken(fromToken);
- fromToken.setType(tokenType);
- t = this.create(fromToken);
- return t;
- }
- } else if (arguments.length===3) {
- text = arguments[2];
- fromToken = this.createToken(fromToken);
- fromToken.setType(tokenType);
- fromToken.setText(text);
- t = this.create(fromToken);
- return t;
- }
- },
-
- getType: function(t) {
- t.getType();
- return 0;
- },
-
- setType: function(t, type) {
- throw new Error("don't know enough about Tree node");
- },
-
- getText: function(t) {
- return t.getText();
- },
-
- setText: function(t, text) {
- throw new Error("don't know enough about Tree node");
- },
-
- getChild: function(t, i) {
- return t.getChild(i);
- },
-
- setChild: function(t, i, child) {
- t.setChild(i, child);
- },
-
- deleteChild: function(t, i) {
- return t.deleteChild(i);
- },
-
- getChildCount: function(t) {
- return t.getChildCount();
- },
-
- getUniqueID: function(node) {
- if ( !this.treeToUniqueIDMap ) {
- this.treeToUniqueIDMap = {};
- }
- var prevID = this.treeToUniqueIDMap[node];
- if ( org.antlr.lang.isValue(prevID) ) {
- return prevID;
- }
- var ID = this.uniqueNodeID;
- this.treeToUniqueIDMap[node] = ID;
- this.uniqueNodeID++;
- return ID;
- // GC makes these nonunique:
- // return System.identityHashCode(node);
- }
-};
-org.antlr.runtime.tree.CommonTreeAdaptor = function() {};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.CommonTreeAdaptor,
- org.antlr.runtime.tree.BaseTreeAdaptor, {
- /** Duplicate a node. This is part of the factory;
- * override if you want another kind of node to be built.
- *
- * I could use reflection to prevent having to override this
- * but reflection is slow.
- */
- dupNode: function(t) {
- if ( !org.antlr.lang.isValue(t) ) {
- return null;
- }
- return t.dupNode();
- },
-
- create: function(payload) {
- if (arguments.length>1) {
- return org.antlr.runtime.tree.CommonTreeAdaptor.superclass.create.apply(this, arguments);
- }
- return new org.antlr.runtime.tree.CommonTree(payload);
- },
-
- /** Tell me how to create a token for use with imaginary token nodes.
- * For example, there is probably no input symbol associated with imaginary
- * token DECL, but you need to create it as a payload or whatever for
- * the DECL node as in ^(DECL type ID).
- *
- * If you care what the token payload objects' type is, you should
- * override this method and any other createToken variant.
- *
- * Tell me how to create a token for use with imaginary token nodes.
- * For example, there is probably no input symbol associated with imaginary
- * token DECL, but you need to create it as a payload or whatever for
- * the DECL node as in ^(DECL type ID).
- *
- * This is a variant of createToken where the new token is derived from
- * an actual real input token. Typically this is for converting '{'
- * tokens to BLOCK etc... You'll see
- *
- * r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ;
- *
- * If you care what the token payload objects' type is, you should
- * override this method and any other createToken variant.
- */
- createToken: function(fromToken) {
- if (arguments.length===2) {
- return new org.antlr.runtime.CommonToken(arguments[0], arguments[1]);
- } else {
- return new org.antlr.runtime.CommonToken(arguments[0]);
- }
- },
-
- /** Track start/stop token for subtree root created for a rule.
- * Only works with Tree nodes. For rules that match nothing,
- * seems like this will yield start=i and stop=i-1 in a nil node.
- * Might be useful info so I'll not force to be i..i.
- */
- setTokenBoundaries: function(t, startToken, stopToken) {
- if ( !org.antlr.lang.isValue(t) ) {
- return;
- }
- var start = 0,
- stop = 0;
- if ( org.antlr.lang.isValue(startToken) ) {
- if (startToken.getTokenIndex) {
- start = startToken.getTokenIndex();
- } else if (startToken.getStartIndex) {
- start = startToken.getStartIndex();
- } else {
- start = startToken.getTokenStartIndex();
- }
- }
- if ( org.antlr.lang.isValue(stopToken) ) {
- if (stop.getTokenIndex) {
- stop = stopToken.getTokenIndex();
- } else if (stopToken.getStopIndex) {
- stop = stopToken.getStopIndex();
- } else {
- stop = stopToken.getTokenStopIndex();
- }
- }
- t.setTokenStartIndex(start);
- t.setTokenStopIndex(stop);
- },
-
- getTokenStartIndex: function(t) {
- if (!t) {
- return -1;
- }
- return t.getTokenStartIndex();
- },
-
- getTokenStopIndex: function(t) {
- if (!t) {
- return -1;
- }
- return t.getTokenStopIndex();
- },
-
- getText: function(t) {
- if (!t) {
- return null;
- }
- return t.getText();
- },
-
- getType: function(t) {
- if (!t) {
- return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
- }
- return t.getType();
- },
-
- /** What is the Token associated with this node? If
- * you are not using CommonTree, then you must
- * override this in your own adaptor.
- */
- getToken: function(t) {
- if ( t instanceof org.antlr.runtime.tree.CommonTree ) {
- return t.getToken();
- }
- return null; // no idea what to do
- },
-
- getChild: function(t, i) {
- if (!t) {
- return null;
- }
- return t.getChild(i);
- },
-
- getChildCount: function(t) {
- if (!t) {
- return 0;
- }
- return t.getChildCount();
- },
-
- getParent: function(t) {
- return t.getParent();
- },
-
- setParent: function(t, parent) {
- t.setParent(parent);
- },
-
- getChildIndex: function(t) {
- return t.getChildIndex();
- },
-
- setChildIndex: function(t, index) {
- t.setChildIndex(index);
- },
-
- replaceChildren: function(parent, startChildIndex, stopChildIndex, t) {
- if ( parent ) {
- parent.replaceChildren(startChildIndex, stopChildIndex, t);
- }
- }
-});
-org.antlr.runtime.ANTLRStringStream = function(data) {
- /**
- * Location in the stream.
- * Ranges from 0 to (stream length - 1).
- * @private
- * @type Number
- */
- this.p = 0;
- this.line = 1;
- this.charPositionInLine = 0;
- this.markDepth = 0;
- this.markers = null;
- this.lastMarker = null;
- this.data = data;
- this.n = data.length;
-};
-
-org.antlr.runtime.ANTLRStringStream.prototype = {
- /**
- * Reset the stream so that it's in the same state it was
- * when the object was created *except* the data array is not
- * touched.
- */
- reset: function() {
- this.p = 0;
- this.line = 1;
- this.charPositionInLine = 0;
- this.markDepth = 0;
- },
-
- /**
- * Consume the next character of data in the stream.
- */
- consume: function() {
- //console.log("prev p="+ this.p +", c="+ this.data.charAt(this.p));
- if ( this.p < this.n ) {
- this.charPositionInLine++;
- if ( this.data.charAt(this.p)==="\n" ) {
- this.line++;
- this.charPositionInLine=0;
- }
- this.p++;
- //console.log("p moves to " + this.p + " (c='"+ this.data.charAt(this.p) +"')");
- }
- },
-
- /**
- * Get character at current input pointer + i ahead where i=1 is next int.
- * Negative indexes are allowed. LA(-1) is previous token (token
- * just matched). LA(-i) where i is before first token should
- * yield -1, invalid char / EOF.
- * @param {Number} i non-zero amount of lookahead or lookback
- * @returns {String|Number} The charcter at the specified position or -1 if
- * you fell off either end of the stream.
- */
- LA: function(i) {
- if ( i<0 ) {
- i++; // e.g., translate LA(-1) to use offset i=0; then data[p+0-1]
- }
-
- var new_pos = this.p+i-1;
- if (new_pos>=this.n || new_pos<0) {
- return org.antlr.runtime.CharStream.EOF;
- }
- return this.data.charAt(new_pos);
- },
-
-
- /**
- * Return the current input symbol index 0..n where n indicates the
- * last symbol has been read. The index is the index of char to
- * be returned from LA(1) (i.e. the one about to be consumed).
- * @returns {Number} the index of the current input symbol
- */
- index: function() {
- return this.p;
- },
-
- /**
- * The length of this stream.
- * @returns {Number} the length of this stream.
- */
- size: function() {
- return this.n;
- },
-
- /**
- * Tell the stream to start buffering if it hasn't already. Return
- * current input position, index(), or some other marker so that
- * when passed to rewind() you get back to the same spot.
- * rewind(mark()) should not affect the input cursor. The Lexer
- * tracks line/col info as well as input index so its markers are
- * not pure input indexes. Same for tree node streams.
- *
- * <p>Marking is a mechanism for storing the current position of a stream
- * in a stack. This corresponds with the predictive look-ahead mechanism
- * used in Lexers.</p>
- * @returns {Number} the current size of the mark stack.
- */
- mark: function() {
- if ( !this.markers ) {
- this.markers = [];
- this.markers.push(null); // depth 0 means no backtracking, leave blank
- }
- this.markDepth++;
- var state = null;
- if ( this.markDepth>=this.markers.length ) {
- state = {};
- this.markers.push(state);
- }
- else {
- state = this.markers[this.markDepth];
- }
- state.p = this.p;
- state.line = this.line;
- state.charPositionInLine = this.charPositionInLine;
- this.lastMarker = this.markDepth;
- return this.markDepth;
- },
-
- /**
- * Rewind to the input position of the last marker.
- * Used currently only after a cyclic DFA and just
- * before starting a sem/syn predicate to get the
- * input position back to the start of the decision.
- * Do not "pop" the marker off the state. mark(i)
- * and rewind(i) should balance still. It is
- * like invoking rewind(last marker) but it should not "pop"
- * the marker off. It's like seek(last marker's input position).
- * @param {Number} [m] the index in the mark stack to load instead of the
- * last.
- */
- rewind: function(m) {
- if (!org.antlr.lang.isNumber(m)) {
- m = this.lastMarker;
- }
-
- var state = this.markers[m];
- // restore stream state
- this.seek(state.p);
- this.line = state.line;
- this.charPositionInLine = state.charPositionInLine;
- this.release(m);
- },
-
- /**
- * You may want to commit to a backtrack but don't want to force the
- * stream to keep bookkeeping objects around for a marker that is
- * no longer necessary. This will have the same behavior as
- * rewind() except it releases resources without the backward seek.
- * This must throw away resources for all markers back to the marker
- * argument. So if you're nested 5 levels of mark(), and then release(2)
- * you have to release resources for depths 2..5.
- * @param {Number} marker the mark depth above which all mark states will
- * be released.
- */
- release: function(marker) {
- // unwind any other markers made after m and release m
- this.markDepth = marker;
- // release this marker
- this.markDepth--;
- },
-
- /**
- * Set the input cursor to the position indicated by index. This is
- * normally used to seek ahead in the input stream. No buffering is
- * required to do this unless you know your stream will use seek to
- * move backwards such as when backtracking.
- *
- * <p>This is different from rewind in its multi-directional
- * requirement and in that its argument is strictly an input cursor
- * (index).</p>
- *
- * <p>For char streams, seeking forward must update the stream state such
- * as line number. For seeking backwards, you will be presumably
- * backtracking using the mark/rewind mechanism that restores state and
- * so this method does not need to update state when seeking backwards.</p>
- *
- * <p>Currently, this method is only used for efficient backtracking using
- * memoization, but in the future it may be used for incremental
- * parsing.</p>
- *
- * <p>The index is 0..n-1. A seek to position i means that LA(1) will
- * return the ith symbol. So, seeking to 0 means LA(1) will return the
- * first element in the stream.</p>
- *
- * <p>Esentially this method method moves the input position,
- * {@link #consume}-ing data if necessary.</p>
- *
- * @param {Number} index the position to seek to.
- */
- seek: function(index) {
- if ( index<=this.p ) {
- this.p = index; // just jump; don't update stream state (line, ...)
- return;
- }
- // seek forward, consume until p hits index
- while ( this.p<index ) {
- this.consume();
- }
- },
-
- /**
- * Retrieve a substring from this stream.
- * @param {Number} start the starting index of the substring (inclusive).
- * @param {Number} stop the last index of the substring (inclusive).
- * @returns {String}
- */
- substring: function(start, stop) {
- return this.data.substr(start,stop-start+1);
- },
-
- /**
- * Return the current line position in the stream.
- * @returns {Number} the current line position in the stream (1..numlines).
- */
- getLine: function() {
- return this.line;
- },
-
- /**
- * Get the index of the character relative to the beginning of the line.
- * Ranges from 0 to (length of line - 1).
- * @returns {Number}
- */
- getCharPositionInLine: function() {
- return this.charPositionInLine;
- },
-
- /**
- * Set the current line in the input stream.
- * This is used internally when performing rewinds.
- * @param {Number} line
- * @private
- */
- setLine: function(line) {
- this.line = line;
- },
-
- /**
- * Set the index of the character relative to the beginning of the line.
- * Ranges from 0 to (length of line - 1).
- * @param {Number} pos
- * @private
- */
- setCharPositionInLine: function(pos) {
- this.charPositionInLine = pos;
- },
-
- /** Where are you getting symbols from? Normally, implementations will
- * pass the buck all the way to the lexer who can ask its input stream
- * for the file name or whatever.
- */
- getSourceName: function() {
- return null;
- }
-};
-org.antlr.runtime.ANTLRStringStream.LT = org.antlr.runtime.ANTLRStringStream.LA;
-org.antlr.runtime.CommonTokenStream = function(tokenSource, channel) {
- this.p = -1;
- this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
- this.v_discardOffChannelTokens = false;
-
- this.tokens = [];
- if (arguments.length >= 2) {
- this.channel = channel;
- } else if (arguments.length === 1) {
- this.tokenSource = tokenSource;
- }
-};
-
-org.antlr.runtime.CommonTokenStream.prototype = {
- /** Reset this token stream by setting its token source. */
- setTokenSource: function(tokenSource) {
- this.tokenSource = tokenSource;
- this.tokens = [];
- this.p = -1;
- this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
- },
-
- /** Load all tokens from the token source and put in tokens.
- * This is done upon first LT request because you might want to
- * set some token type / channel overrides before filling buffer.
- */
- fillBuffer: function() {
- var index = 0,
- t = this.tokenSource.nextToken(),
- discard,
- channelI;
- while ( org.antlr.lang.isValue(t) &&
- t.getType()!=org.antlr.runtime.CharStream.EOF )
- {
- discard = false;
- // is there a channel override for token type?
- if ( this.channelOverrideMap ) {
- channelI = this.channelOverrideMap[t.getType()];
- if ( org.antlr.lang.isValue(channelI) ) {
- t.setChannel(channelI);
- }
- }
- if ( this.discardSet && this.discardSet[t.getType()] )
- {
- discard = true;
- }
- else if ( this.v_discardOffChannelTokens &&
- t.getChannel()!=this.channel )
- {
- discard = true;
- }
- if ( !discard ) {
- t.setTokenIndex(index);
- this.tokens.push(t);
- index++;
- }
- t = this.tokenSource.nextToken();
- }
- // leave p pointing at first token on channel
- this.p = 0;
- this.p = this.skipOffTokenChannels(this.p);
- },
-
- /** Move the input pointer to the next incoming token. The stream
- * must become active with LT(1) available. consume() simply
- * moves the input pointer so that LT(1) points at the next
- * input symbol. Consume at least one token.
- *
- * Walk past any token not on the channel the parser is listening to.
- */
- consume: function() {
- if ( this.p<this.tokens.length ) {
- this.p++;
- this.p = this.skipOffTokenChannels(this.p); // leave p on valid token
- }
- },
-
- /** Given a starting index, return the index of the first on-channel
- * token.
- */
- skipOffTokenChannels: function(i) {
- var n = this.tokens.length;
- while ( i<n && (this.tokens[i]).getChannel()!=this.channel ) {
- i++;
- }
- return i;
- },
-
- skipOffTokenChannelsReverse: function(i) {
- while ( i>=0 && (this.tokens[i]).getChannel()!=this.channel ) {
- i--;
- }
- return i;
- },
-
- /** A simple filter mechanism whereby you can tell this token stream
- * to force all tokens of type ttype to be on channel. For example,
- * when interpreting, we cannot exec actions so we need to tell
- * the stream to force all WS and NEWLINE to be a different, ignored
- * channel.
- */
- setTokenTypeChannel: function(ttype, channel) {
- if ( !this.channelOverrideMap ) {
- this.channelOverrideMap = {};
- }
- this.channelOverrideMap[ttype] = channel;
- },
-
- discardTokenType: function(ttype) {
- if ( !this.discardSet ) {
- this.discardSet = {};
- }
- this.discardSet[ttype] = true;
- },
-
- discardOffChannelTokens: function(b) {
- this.v_discardOffChannelTokens = b;
- },
-
- /** Given a start and stop index, return a List of all tokens in
- * the token type BitSet. Return null if no tokens were found. This
- * method looks at both on and off channel tokens.
- */
- getTokens: function(start, stop, types) {
- if ( this.p === -1 ) {
- this.fillBuffer();
- }
-
- if (arguments.length===0) {
- return this.tokens;
- }
-
- if (org.antlr.lang.isArray(types)) {
- types = new org.antlr.runtime.BitSet(types);
- } else if (org.antlr.lang.isNumber(types)) {
- types = org.antlr.runtime.BitSet.of(types);
- }
-
- if ( stop>=this.tokens.length ) {
- stop=this.tokens.length-1;
- }
- if ( start<0 ) {
- start=0;
- }
- if ( start>stop ) {
- return null;
- }
-
- // list = tokens[start:stop]:{Token t, t.getType() in types}
- var filteredTokens = [],
- i,
- t;
- for (i=start; i<=stop; i++) {
- t = this.tokens[i];
- if ( !this.types || types.member(t.getType()) ) {
- filteredTokens.push(t);
- }
- }
- if ( filteredTokens.length===0 ) {
- filteredTokens = null;
- }
- return filteredTokens;
- },
-
- /** Get the ith token from the current position 1..n where k=1 is the
- * first symbol of lookahead.
- */
- LT: function(k) {
- if ( this.p === -1 ) {
- this.fillBuffer();
- }
- if ( k===0 ) {
- return null;
- }
- if ( k<0 ) {
- return this.LB(-1*k);
- }
- if ( (this.p+k-1) >= this.tokens.length ) {
- return org.antlr.runtime.Token.EOF_TOKEN;
- }
- var i = this.p,
- n = 1;
- // find k good tokens
- while ( n<k ) {
- // skip off-channel tokens
- i = this.skipOffTokenChannels(i+1); // leave p on valid token
- n++;
- }
- if ( i>=this.tokens.length ) {
- return org.antlr.runtime.Token.EOF_TOKEN;
- }
- return this.tokens[i];
- },
-
- /** Look backwards k tokens on-channel tokens */
- LB: function(k) {
- if ( this.p === -1 ) {
- this.fillBuffer();
- }
- if ( k===0 ) {
- return null;
- }
- if ( (this.p-k)<0 ) {
- return null;
- }
-
- var i = this.p,
- n = 1;
- // find k good tokens looking backwards
- while ( n<=k ) {
- // skip off-channel tokens
- i = this.skipOffTokenChannelsReverse(i-1); // leave p on valid token
- n++;
- }
- if ( i<0 ) {
- return null;
- }
- return this.tokens[i];
- },
-
- /** Return absolute token i; ignore which channel the tokens are on;
- * that is, count all tokens not just on-channel tokens.
- */
- get: function(i) {
- return this.tokens[i];
- },
-
- LA: function(i) {
- return this.LT(i).getType();
- },
-
- mark: function() {
- if ( this.p === -1 ) {
- this.fillBuffer();
- }
- this.lastMarker = this.index();
- return this.lastMarker;
- },
-
- release: function(marker) {
- // no resources to release
- },
-
- size: function() {
- return this.tokens.length;
- },
-
- index: function() {
- return this.p;
- },
-
- rewind: function(marker) {
- if (!org.antlr.lang.isNumber(marker)) {
- marker = this.lastMarker;
- }
- this.seek(marker);
- },
-
- reset: function() {
- this.p = -1;
- this.lastMarker = 0;
- },
-
- seek: function(index) {
- this.p = index;
- },
-
- getTokenSource: function() {
- return this.tokenSource;
- },
-
- getSourceName: function() {
- return this.getTokenSource().getSourceName();
- },
-
- toString: function(start, stop) {
- if (arguments.length===0) {
- if ( this.p === -1 ) {
- this.fillBuffer();
- }
- start = 0;
- stop = this.tokens.length-1;
- }
-
- if (!org.antlr.lang.isNumber(start) && !org.antlr.lang.isNumber(stop)) {
- if ( org.antlr.lang.isValue(start) && org.antlr.lang.isValue(stop) ) {
- start = start.getTokenIndex();
- stop = stop.getTokenIndex();
- } else {
- return null;
- }
- }
-
- var buf = "",
- i;
-
- if ( start<0 || stop<0 ) {
- return null;
- }
- if ( this.p == -1 ) {
- this.fillBuffer();
- }
- if ( stop>=this.tokens.length ) {
- stop = this.tokens.length-1;
- }
- for (i = start; i <= stop; i++) {
- t = this.tokens[i];
- buf = buf + this.tokens[i].getText();
- }
- return buf;
- }
-};
-
-org.antlr.runtime.TokenRewriteStream = function() {
- var sup = org.antlr.runtime.TokenRewriteStream.superclass;
- this.programs = null;
- this.lastRewriteTokenIndexes = null;
-
-
- if (arguments.length===0) {
- this.init();
- } else {
- sup.constructor.apply(this, arguments);
- this.init();
- }
-};
-
-(function(){
-var trs = org.antlr.runtime.TokenRewriteStream;
-
-org.antlr.lang.augmentObject(trs, {
- DEFAULT_PROGRAM_NAME: "default",
- PROGRAM_INIT_SIZE: 100,
- MIN_TOKEN_INDEX: 0
-});
-
-//
-// Define the rewrite operation hierarchy
-//
-
-trs.RewriteOperation = function(index, text) {
- this.index = index;
- this.text = text;
-};
-trs.RewriteOperation.prototype = {
- execute: function(buf) {
- return this.index;
- },
- toString: function() {
- /*String opName = getClass().getName();
- int $index = opName.indexOf('$');
- opName = opName.substring($index+1, opName.length());
- return opName+"@"+index+'"'+text+'"';*/
- return this.text;
- }
-};
-
-trs.InsertBeforeOp = function(index, text) {
- trs.InsertBeforeOp.superclass.constructor.call(this, index, text);
-};
-org.antlr.lang.extend(trs.InsertBeforeOp, trs.RewriteOperation, {
- execute: function(buf) {
- buf.push(this.text);
- return this.index;
- }
-});
-trs.ReplaceOp = function(from, to, text) {
- trs.ReplaceOp.superclass.constructor.call(this, from, text);
- this.lastIndex = to;
-};
-org.antlr.lang.extend(trs.ReplaceOp, trs.RewriteOperation, {
- execute: function(buf) {
- if (org.antlr.lang.isValue(this.text)) {
- buf.push(this.text);
- }
- return this.lastIndex+1;
- }
-});
-
-trs.DeleteOp = function(from, to) {
- trs.DeleteOp.superclass.constructor.call(this, from, to);
-};
-org.antlr.lang.extend(trs.DeleteOp, trs.ReplaceOp);
-
-org.antlr.lang.extend(trs, org.antlr.runtime.CommonTokenStream, {
- init: function() {
- this.programs = {};
- this.programs[trs.DEFAULT_PROGRAM_NAME] = [];
- this.lastRewriteTokenIndexes = {};
- },
-
- /** Rollback the instruction stream for a program so that
- * the indicated instruction (via instructionIndex) is no
- * longer in the stream. UNTESTED!
- */
- rollback: function() {
- var programName,
- instructionIndex;
-
- if (arguments.length===1) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- instructionIndex = arguments[0];
- } else if (arguments.length===2) {
- programName = arguments[0];
- instructionIndex = arguments[1];
- }
- var is = this.programs[programName];
- if (is) {
- programs[programName] = is.slice(trs.MIN_TOKEN_INDEX, this.instructionIndex);
- }
- },
-
- /** Reset the program so that no instructions exist */
- deleteProgram: function(programName) {
- programName = programName || trs.DEFAULT_PROGRAM_NAME;
- this.rollback(programName, trs.MIN_TOKEN_INDEX);
- },
-
- /** Add an instruction to the rewrite instruction list ordered by
- * the instruction number (use a binary search for efficiency).
- * The list is ordered so that toString() can be done efficiently.
- *
- * When there are multiple instructions at the same index, the instructions
- * must be ordered to ensure proper behavior. For example, a delete at
- * index i must kill any replace operation at i. Insert-before operations
- * must come before any replace / delete instructions. If there are
- * multiple insert instructions for a single index, they are done in
- * reverse insertion order so that "insert foo" then "insert bar" yields
- * "foobar" in front rather than "barfoo". This is convenient because
- * I can insert new InsertOp instructions at the index returned by
- * the binary search. A ReplaceOp kills any previous replace op. Since
- * delete is the same as replace with null text, i can check for
- * ReplaceOp and cover DeleteOp at same time. :)
- */
- addToSortedRewriteList: function() {
- var programName,
- op;
- if (arguments.length===1) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- op = arguments[0];
- } else if (arguments.length===2) {
- programName = arguments[0];
- op = arguments[1];
- }
-
- var rewrites = this.getProgram(programName);
- var len, pos, searchOp, replaced, prevOp, i;
- for (pos=0, len=rewrites.length; pos<len; pos++) {
- searchOp = rewrites[pos];
- if (searchOp.index===op.index) {
- // now pos is the index in rewrites of first op with op.index
-
- // an instruction operating already on that index was found;
- // make this one happen after all the others
- if (op instanceof trs.ReplaceOp) {
- replaced = false;
- // look for an existing replace
- for (i=pos; i<rewrites.length; i++) {
- prevOp = rewrites[pos];
- if (prevOp.index!==op.index) {
- break;
- }
- if (prevOp instanceof trs.ReplaceOp) {
- rewrites[pos] = op; // replace old with new
- replaced=true;
- break;
- }
- // keep going; must be an insert
- }
- if ( !replaced ) {
- // add replace op to the end of all the inserts
- rewrites.splice(i, 0, op);
- }
- } else {
- // inserts are added in front of existing inserts
- rewrites.splice(pos, 0, op);
- }
- break;
- } else if (searchOp.index > op.index) {
- rewrites.splice(pos, 0, op);
- break;
- }
- }
- if (pos===len) {
- rewrites.push(op);
- }
- },
-
- insertAfter: function() {
- var index, programName, text;
- if (arguments.length===2) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- index = arguments[0];
- text = arguments[1];
- } else if (arguments.length===3) {
- programName = arguments[0];
- index = arguments[1];
- text = arguments[2];
- }
-
- if (index instanceof org.antlr.runtime.CommonToken) {
- // index is a Token, grab it's stream index
- index = index.index; // that's ugly
- }
-
- // insert after is the same as insert before the next index
- this.insertBefore(programName, index+1, text);
- },
-
- insertBefore: function() {
- var index, programName, text;
- if (arguments.length===2) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- index = arguments[0];
- text = arguments[1];
- } else if (arguments.length===3) {
- programName = arguments[0];
- index = arguments[1];
- text = arguments[2];
- }
-
- if (index instanceof org.antlr.runtime.CommonToken) {
- // index is a Token, grab it's stream index
- index = index.index; // that's ugly
- }
-
- this.addToSortedRewriteList(
- programName,
- new trs.InsertBeforeOp(index,text)
- );
- },
-
- replace: function() {
- var programName, first, last, text;
- if (arguments.length===2) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- first = arguments[0];
- last = arguments[0];
- text = arguments[1];
- } else if (arguments.length===3) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- first = arguments[0];
- last = arguments[1];
- text = arguments[2];
- } if (arguments.length===4) {
- programName = arguments[0];
- first = arguments[1];
- last = arguments[2];
- text = arguments[3];
- }
-
- if (first instanceof org.antlr.runtime.CommonToken) {
- first = first.index;
- }
-
- if (last instanceof org.antlr.runtime.CommonToken) {
- last = last.index; // that's ugly
- }
-
- if ( first > last || last<0 || first<0 ) {
- return;
- }
- this.addToSortedRewriteList(
- programName,
- new trs.ReplaceOp(first, last, text));
- },
-
- // !!! API Break: delete is a JS keyword, so using remove instead.
- remove: function() {
- // convert arguments to a real array
- var args=[], i=arguments.length-1;
- while (i>=0) {
- args[i] = arguments[i];
- i--;
- }
-
- args.push("");
- this.replace.apply(this, args);
- },
-
- getLastRewriteTokenIndex: function(programName) {
- programName = programName || trs.DEFAULT_PROGRAM_NAME;
- return this.lastRewriteTokenIndexes[programName] || -1;
- },
-
- setLastRewriteTokenIndex: function(programName, i) {
- this.lastRewriteTokenIndexes[programName] = i;
- },
-
- getProgram: function(name) {
- var is = this.programs[name];
- if ( !is ) {
- is = this.initializeProgram(name);
- }
- return is;
- },
-
- initializeProgram: function(name) {
- var is = [];
- this.programs[name] = is;
- return is;
- },
-
- toOriginalString: function(start, end) {
- if (!org.antlr.lang.isNumber(start)) {
- start = trs.MIN_TOKEN_INDEX;
- }
- if (!org.antlr.lang.isNumber(end)) {
- end = this.size()-1;
- }
-
- var buf = [], i;
- for (i=start; i>=trs.MIN_TOKEN_INDEX && i<=end && i<this.tokens.length; i++) {
- buf.push(this.get(i).getText());
- }
- return buf.join("");
- },
-
- toString: function() {
- var programName, start, end;
- if (arguments.length===0) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- start = trs.MIN_TOKEN_INDEX;
- end = this.size() - 1;
- } else if (arguments.length===1) {
- programName = arguments[0];
- start = trs.MIN_TOKEN_INDEX;
- end = this.size() - 1;
- } else if (arguments.length===2) {
- programName = trs.DEFAULT_PROGRAM_NAME;
- start = arguments[0];
- end = arguments[1];
- }
-
- var rewrites = this.programs[programName];
- if ( !rewrites || rewrites.length===0 ) {
- return this.toOriginalString(start,end);
- }
-
- /// Index of first rewrite we have not done
- var rewriteOpIndex = 0,
- tokenCursor=start,
- buf = [],
- op;
- while ( tokenCursor>=trs.MIN_TOKEN_INDEX &&
- tokenCursor<=end &&
- tokenCursor<this.tokens.length )
- {
- // execute instructions associated with this token index
- if ( rewriteOpIndex<rewrites.length ) {
- op = rewrites[rewriteOpIndex];
-
- // skip all ops at lower index
- while (op.index<tokenCursor && rewriteOpIndex<rewrites.length) {
- rewriteOpIndex++;
- if ( rewriteOpIndex<rewrites.length ) {
- op = rewrites[rewriteOpIndex];
- }
- }
-
- // while we have ops for this token index, exec them
- while (tokenCursor===op.index && rewriteOpIndex<rewrites.length) {
- //System.out.println("execute "+op+" at instruction "+rewriteOpIndex);
- tokenCursor = op.execute(buf);
- //System.out.println("after execute tokenCursor = "+tokenCursor);
- rewriteOpIndex++;
- if ( rewriteOpIndex<rewrites.length ) {
- op = rewrites[rewriteOpIndex];
- }
- }
- }
- // dump the token at this index
- if ( tokenCursor<=end ) {
- buf.push(this.get(tokenCursor).getText());
- tokenCursor++;
- }
- }
- // now see if there are operations (append) beyond last token index
- var opi;
- for (opi=rewriteOpIndex; opi<rewrites.length; opi++) {
- op = rewrites[opi];
- if ( op.index>=this.size() ) {
- op.execute(buf); // must be insertions if after last token
- }
- }
-
- return buf.join("");
- },
-
- toDebugString: function(start, end) {
- if (!org.antlr.lang.isNumber(start)) {
- start = trs.MIN_TOKEN_INDEX;
- }
- if (!org.antlr.lang.isNumber(end)) {
- end = this.size()-1;
- }
-
- var buf = [],
- i;
- for (i=start; i>=trs.MIN_TOKEN_INDEX && i<=end && i<this.tokens.length; i++) {
- buf.push(this.get(i));
- }
- return buf.join("");
- }
-});
-
-})();
-org.antlr.runtime.tree.TreeNodeStream = function() {};
-org.antlr.runtime.tree.CommonTreeNodeStream = function(adaptor,
- tree,
- initialBufferSize)
-{
- if (arguments.length===1) {
- tree = adaptor;
- adaptor = new org.antlr.runtime.tree.CommonTreeAdaptor();
- }
- if (arguments.length <= 2) {
- initialBufferSize =
- org.antlr.runtime.tree.CommonTreeNodeStream.DEFAULT_INITIAL_BUFFER_SIZE;
- }
-
- /** Reuse same DOWN, UP navigation nodes unless this is true */
- this.uniqueNavigationNodes = false;
- this.p = -1;
-
- var Token = org.antlr.runtime.Token;
- this.root = tree;
- this.adaptor = adaptor;
- this.nodes = []; //new ArrayList(initialBufferSize);
- this.down = this.adaptor.create(Token.DOWN, "DOWN");
- this.up = this.adaptor.create(Token.UP, "UP");
- this.eof = this.adaptor.create(Token.EOF, "EOF");
-};
-
-org.antlr.lang.augmentObject(org.antlr.runtime.tree.CommonTreeNodeStream, {
- DEFAULT_INITIAL_BUFFER_SIZE: 100,
- INITIAL_CALL_STACK_SIZE: 10
-});
-
-org.antlr.lang.extend(org.antlr.runtime.tree.CommonTreeNodeStream,
- org.antlr.runtime.tree.TreeNodeStream,
-{
- StreamIterator: function() {
- var i = 0,
- nodes = this.nodes,
- eof = this.eof;
-
- return {
- hasNext: function() {
- return i<nodes.length;
- },
-
- next: function() {
- var current = i;
- i++;
- if ( current < nodes.length ) {
- return nodes[current];
- }
- return eof;
- },
-
- remove: function() {
- throw new Error("cannot remove nodes from stream");
- }
- };
- },
-
- /** Walk tree with depth-first-search and fill nodes buffer.
- * Don't do DOWN, UP nodes if its a list (t is isNil).
- */
- fillBuffer: function(t) {
- var reset_p = false;
- if (org.antlr.lang.isUndefined(t)) {
- t = this.root;
- reset_p = true;
- }
-
- var nil = this.adaptor.isNil(t);
- if ( !nil ) {
- this.nodes.push(t); // add this node
- }
- // add DOWN node if t has children
- var n = this.adaptor.getChildCount(t);
- if ( !nil && n>0 ) {
- this.addNavigationNode(org.antlr.runtime.Token.DOWN);
- }
- // and now add all its children
- var c, child;
- for (c=0; c<n; c++) {
- child = this.adaptor.getChild(t,c);
- this.fillBuffer(child);
- }
- // add UP node if t has children
- if ( !nil && n>0 ) {
- this.addNavigationNode(org.antlr.runtime.Token.UP);
- }
-
- if (reset_p) {
- this.p = 0; // buffer of nodes intialized now
- }
- },
-
- getNodeIndex: function(node) {
- if ( this.p==-1 ) {
- this.fillBuffer();
- }
- var i, t;
- for (i=0; i<this.nodes.length; i++) {
- t = this.nodes[i];
- if ( t===node ) {
- return i;
- }
- }
- return -1;
- },
-
- /** As we flatten the tree, we use UP, DOWN nodes to represent
- * the tree structure. When debugging we need unique nodes
- * so instantiate new ones when uniqueNavigationNodes is true.
- */
- addNavigationNode: function(ttype) {
- var navNode = null;
- if ( ttype===org.antlr.runtime.Token.DOWN ) {
- if ( this.hasUniqueNavigationNodes() ) {
- navNode = this.adaptor.create(org.antlr.runtime.Token.DOWN, "DOWN");
- }
- else {
- navNode = this.down;
- }
- }
- else {
- if ( this.hasUniqueNavigationNodes() ) {
- navNode = this.adaptor.create(org.antlr.runtime.Token.UP, "UP");
- }
- else {
- navNode = this.up;
- }
- }
- this.nodes.push(navNode);
- },
-
- get: function(i) {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- return this.nodes[i];
- },
-
- LT: function(k) {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- if ( k===0 ) {
- return null;
- }
- if ( k<0 ) {
- return this.LB(-1*k);
- }
- if ( (this.p+k-1) >= this.nodes.length ) {
- return this.eof;
- }
- return this.nodes[this.p+k-1];
- },
-
- getCurrentSymbol: function() { return this.LT(1); },
-
- /** Look backwards k nodes */
- LB: function(k) {
- if ( k===0 ) {
- return null;
- }
- if ( (this.p-k)<0 ) {
- return null;
- }
- return this.nodes[this.p-k];
- },
-
- getTreeSource: function() {
- return this.root;
- },
-
- getSourceName: function() {
- return this.getTokenStream().getSourceName();
- },
-
- getTokenStream: function() {
- return this.tokens;
- },
-
- setTokenStream: function(tokens) {
- this.tokens = tokens;
- },
-
- getTreeAdaptor: function() {
- return this.adaptor;
- },
-
- setTreeAdaptor: function(adaptor) {
- this.adaptor = adaptor;
- },
-
- hasUniqueNavigationNodes: function() {
- return this.uniqueNavigationNodes;
- },
-
- setUniqueNavigationNodes: function(uniqueNavigationNodes) {
- this.uniqueNavigationNodes = uniqueNavigationNodes;
- },
-
- consume: function() {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- this.p++;
- },
-
- LA: function(i) {
- return this.adaptor.getType(this.LT(i));
- },
-
- mark: function() {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- this.lastMarker = this.index();
- return this.lastMarker;
- },
-
- release: function(marker) {
- // no resources to release
- },
-
- index: function() {
- return this.p;
- },
-
- rewind: function(marker) {
- if (!org.antlr.lang.isNumber(marker)) {
- marker = this.lastMarker;
- }
- this.seek(marker);
- },
-
- seek: function(index) {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- this.p = index;
- },
-
- /** Make stream jump to a new location, saving old location.
- * Switch back with pop().
- */
- push: function(index) {
- if ( !this.calls ) {
- this.calls = [];
- }
- this.calls.push(this.p); // save current index
- this.seek(index);
- },
-
- /** Seek back to previous index saved during last push() call.
- * Return top of stack (return index).
- */
- pop: function() {
- var ret = this.calls.pop();
- this.seek(ret);
- return ret;
- },
-
- reset: function() {
- this.p = -1;
- this.lastMarker = 0;
- if (this.calls) {
- this.calls = [];
- }
- },
-
- size: function() {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- return this.nodes.length;
- },
-
- iterator: function() {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- return this.StreamIterator();
- },
-
- replaceChildren: function(parent, startChildIndex, stopChildIndex, t) {
- if ( parent ) {
- this.adaptor.replaceChildren(parent, startChildIndex, stopChildIndex, t);
- }
- },
-
- /** Debugging */
- toTokenString: function(start, stop) {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- var buf='', i, t;
- for (i = start; i < this.nodes.length && i <= stop; i++) {
- t = this.nodes[i];
- buf += " "+this.adaptor.getToken(t);
- }
- return buf;
- },
-
- /** Used for testing, just return the token type stream */
- toString: function(start, stop) {
- var buf = "",
- text,
- t,
- i;
- if (arguments.length===0) {
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- for (i = 0; i < this.nodes.length; i++) {
- t = this.nodes[i];
- buf += " ";
- buf += this.adaptor.getType(t);
- }
- return buf;
- } else {
- if ( !org.antlr.lang.isNumber(start) || !org.antlr.lang.isNumber(stop) ) {
- return null;
- }
- if ( this.p===-1 ) {
- this.fillBuffer();
- }
- //System.out.println("stop: "+stop);
- if ( start instanceof org.antlr.runtime.tree.CommonTree ) {
- //System.out.print("toString: "+((CommonTree)start).getToken()+", ");
- } else {
- //System.out.println(start);
- }
- if ( stop instanceof org.antlr.runtime.tree.CommonTree ) {
- //System.out.println(((CommonTree)stop).getToken());
- } else {
- //System.out.println(stop);
- }
- // if we have the token stream, use that to dump text in order
- var beginTokenIndex,
- endTokenIndex;
- if ( this.tokens ) {
- beginTokenIndex = this.adaptor.getTokenStartIndex(start);
- endTokenIndex = this.adaptor.getTokenStopIndex(stop);
- // if it's a tree, use start/stop index from start node
- // else use token range from start/stop nodes
- if ( this.adaptor.getType(stop)===org.antlr.runtime.Token.UP ) {
- endTokenIndex = this.adaptor.getTokenStopIndex(start);
- }
- else if ( this.adaptor.getType(stop)==org.antlr.runtime.Token.EOF )
- {
- endTokenIndex = this.size()-2; // don't use EOF
- }
- return this.tokens.toString(beginTokenIndex, endTokenIndex);
- }
- // walk nodes looking for start
- t = null;
- i = 0;
- for (; i < this.nodes.length; i++) {
- t = this.nodes[i];
- if ( t===start ) {
- break;
- }
- }
- // now walk until we see stop, filling string buffer with text
- buf = text = "";
- t = this.nodes[i];
- while ( t!==stop ) {
- text = this.adaptor.getText(t);
- if ( !org.antlr.lang.isString(text) ) {
- text = " "+this.adaptor.getType(t).toString();
- }
- buf += text;
- i++;
- t = nodes[i];
- }
- // include stop node too
- text = this.adaptor.getText(stop);
- if ( !org.antlr.lang.isString(text) ) {
- text = " "+this.adaptor.getType(stop).toString();
- }
- buf += text;
- return buf;
- }
- }
-});
-org.antlr.runtime.tree.RewriteRuleElementStream = function(adaptor, elementDescription, el) {
- /** Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(),
- * which bumps it to 1 meaning no more elements.
- */
- this.cursor = 0;
- this.dirty = false;
-
- this.elementDescription = elementDescription;
- this.adaptor = adaptor;
- if (el) {
- if (org.antlr.lang.isArray(el)) {
- this.singleElement = null;
- this.elements = el;
- } else {
- this.add(el);
- }
- }
-};
-
-org.antlr.runtime.tree.RewriteRuleElementStream.prototype = {
- /** Reset the condition of this stream so that it appears we have
- * not consumed any of its elements. Elements themselves are untouched.
- * Once we reset the stream, any future use will need duplicates. Set
- * the dirty bit.
- */
- reset: function() {
- this.cursor = 0;
- this.dirty = true;
- },
-
- add: function(el) {
- if ( !org.antlr.lang.isValue(el) ) {
- return;
- }
- if ( this.elements ) { // if in list, just add
- this.elements.push(el);
- return;
- }
- if ( !org.antlr.lang.isValue(this.singleElement) ) { // no elements yet, track w/o list
- this.singleElement = el;
- return;
- }
- // adding 2nd element, move to list
- this.elements = [];
- this.elements.push(this.singleElement);
- this.singleElement = null;
- this.elements.push(el);
- },
-
- /** Return the next element in the stream. If out of elements, throw
- * an exception unless size()==1. If size is 1, then return elements[0].
- * Return a duplicate node/subtree if stream is out of elements and
- * size==1. If we've already used the element, dup (dirty bit set).
- */
- nextTree: function() {
- var n = this.size(),
- el;
- if ( this.dirty || (this.cursor>=n && n==1) ) {
- // if out of elements and size is 1, dup
- el = this._next();
- return this.dup(el);
- }
- // test size above then fetch
- el = this._next();
- return el;
- },
-
- /** do the work of getting the next element, making sure that it's
- * a tree node or subtree. Deal with the optimization of single-
- * element list versus list of size > 1. Throw an exception
- * if the stream is empty or we're out of elements and size>1.
- * protected so you can override in a subclass if necessary.
- */
- _next: function() {
- var n = this.size();
- if (n===0) {
- throw new org.antlr.runtime.tree.RewriteEmptyStreamException(this.elementDescription);
- }
- if ( this.cursor>= n) { // out of elements?
- if ( n===1 ) { // if size is 1, it's ok; return and we'll dup
- return this.toTree(this.singleElement);
- }
- // out of elements and size was not 1, so we can't dup
- throw new org.antlr.runtime.tree.RewriteCardinalityException(this.elementDescription);
- }
- // we have elements
- if ( org.antlr.lang.isValue(this.singleElement) ) {
- this.cursor++; // move cursor even for single element list
- return this.toTree(this.singleElement);
- }
- // must have more than one in list, pull from elements
- var o = this.toTree(this.elements[this.cursor]);
- this.cursor++;
- return o;
- },
-
- /** Ensure stream emits trees; tokens must be converted to AST nodes.
- * AST nodes can be passed through unmolested.
- */
- toTree: function(el) {
- if (el && el.getTree) {
- return el.getTree();
- }
- return el;
- },
-
- hasNext: function() {
- return (org.antlr.lang.isValue(this.singleElement) && this.cursor < 1) ||
- (this.elements && this.cursor < this.elements.length);
- },
-
- size: function() {
- var n = 0;
- if ( org.antlr.lang.isValue(this.singleElement) ) {
- n = 1;
- }
- if ( this.elements ) {
- return this.elements.length;
- }
- return n;
- },
-
- getDescription: function() {
- return this.elementDescription;
- }
-};
-org.antlr.runtime.tree.RewriteRuleNodeStream = function(adaptor, elementDescription, el) {
- org.antlr.runtime.tree.RewriteRuleNodeStream.superclass.constructor.apply(this, arguments);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleNodeStream,
- org.antlr.runtime.tree.RewriteRuleElementStream,
-{
- nextNode: function() {
- return this._next();
- },
-
- toTree: function(el) {
- return this.adaptor.dupNode(el);
- },
-
- dup: function() {
- // we dup every node, so don't have to worry about calling dup; short-
- // circuited next() so it doesn't call.
- throw new Error("dup can't be called for a node stream.");
- }
-});
-org.antlr.runtime.tree.RewriteRuleTokenStream = function(adaptor, elementDescription, el) {
- var sup = org.antlr.runtime.tree.RewriteRuleTokenStream.superclass;
- sup.constructor.apply(this, arguments);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleTokenStream,
- org.antlr.runtime.tree.RewriteRuleElementStream, {
- /** Get next token from stream and make a node for it */
- nextNode: function() {
- var t = this._next();
- return this.adaptor.create(t);
- },
-
- nextToken: function() {
- return this._next();
- },
-
- /** Don't convert to a tree unless they explicitly call nextTree.
- * This way we can do hetero tree nodes in rewrite.
- */
- toTree: function(el) {
- return el;
- },
-
- dup: function(el) {
- throw new Error("dup can't be called for a token stream.");
- }
-});
-org.antlr.runtime.tree.RewriteRuleSubtreeStream = function() {
- var sup = org.antlr.runtime.tree.RewriteRuleSubtreeStream.superclass;
- sup.constructor.apply(this, arguments);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleSubtreeStream,
- org.antlr.runtime.tree.RewriteRuleElementStream, {
- /** Treat next element as a single node even if it's a subtree.
- * This is used instead of next() when the result has to be a
- * tree root node. Also prevents us from duplicating recently-added
- * children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration
- * must dup the type node, but ID has been added.
- *
- * Referencing a rule result twice is ok; dup entire tree as
- * we can't be adding trees as root; e.g., expr expr.
- *
- * Hideous code duplication here with super.next(). Can't think of
- * a proper way to refactor. This needs to always call dup node
- * and super.next() doesn't know which to call: dup node or dup tree.
- */
- nextNode: function() {
- var n = this.size(),
- el;
- if ( this.dirty || (this.cursor>=n && n===1) ) {
- // if out of elements and size is 1, dup (at most a single node
- // since this is for making root nodes).
- el = this._next();
- return this.adaptor.dupNode(el);
- }
- // test size above then fetch
- el = this._next();
- return el;
- },
-
- dup: function(el) {
- return this.adaptor.dupTree(el);
- }
-});
-org.antlr.runtime.BaseRecognizer = function(state) {
- /** State of a lexer, parser, or tree parser are collected into a state
- * object so the state can be shared. This sharing is needed to
- * have one grammar import others and share same error variables
- * and other state variables. It's a kind of explicit multiple
- * inheritance via delegation of methods and shared state.
- */
- this.state = state || new org.antlr.runtime.RecognizerSharedState();
-};
-org.antlr.lang.augmentObject(org.antlr.runtime.BaseRecognizer, {
- MEMO_RULE_FAILED: -2,
- MEMO_RULE_UNKNOWN: -1,
- INITIAL_FOLLOW_STACK_SIZE: 100,
- MEMO_RULE_FAILED_I: -2,
- DEFAULT_TOKEN_CHANNEL: org.antlr.runtime.Token.DEFAULT_CHANNEL,
- HIDDEN: org.antlr.runtime.Token.HIDDEN_CHANNEL,
- NEXT_TOKEN_RULE_NAME: "nextToken"
-});
-
-org.antlr.runtime.BaseRecognizer.prototype = {
- /** Reset the parser's state. Subclasses must rewinds the input stream */
- reset: function() {
- var i, len;
-
- // wack everything related to error recovery
- if (!this.state) {
- return; // no shared state work to do
- }
- this.state._fsp = -1;
- this.state.errorRecovery = false;
- this.state.lastErrorIndex = -1;
- this.state.failed = false;
- this.state.syntaxErrors = 0;
- // wack everything related to backtracking and memoization
- this.state.backtracking = 0;
- // wipe cache
- if (this.state.ruleMemo) {
- for (i=0, len=this.state.ruleMemo.length; i<len; i++) {
- this.state.ruleMemo[i] = null;
- }
- }
- },
-
- /** Match current input symbol against ttype. Attempt
- * single token insertion or deletion error recovery. If
- * that fails, throw {@link org.antlr.runtime.MismatchedTokenException}.
- *
- * <p>To turn off single token insertion or deletion error
- * recovery, override {@link #mismatchRecover} and have it call
- * plain {@link #mismatch}, which does not recover. Then any error
- * in a rule will cause an exception and immediate exit from
- * rule. Rule would recover by resynchronizing to the set of
- * symbols that can follow rule ref.</p>
- *
- * @param {org.antlr.runtime.IntStream} input input stream to match against.
- * @param {Number} ttype input type to match.
- * @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
- * matched token.
- * @returns {Object} the matched symbol
- */
- match: function(input, ttype, follow) {
- var matchedSymbol = this.getCurrentInputSymbol(input);
- if ( input.LA(1)===ttype ) {
- input.consume();
- this.state.errorRecovery = false;
- this.state.failed = false;
- return matchedSymbol;
- }
- if ( this.state.backtracking>0 ) {
- this.state.failed = true;
- return matchedSymbol;
- }
- matchedSymbol = this.recoverFromMismatchedToken(input, ttype, follow);
- return matchedSymbol;
- },
-
- /**
- * Match any token.
- * @param {org.antlr.runtime.IntStream} input input stream to match against.
- */
- matchAny: function(input) {
- this.state.errorRecovery = false;
- this.state.failed = false;
- input.consume();
- },
-
- /**
- * Is the following token (LA(2)) the unwanted type (ttype)?
- * @param {org.antlr.runtime.IntStream} input input stream to match against.
- * @param {Number} ttype the undesired token type.
- * @returns {Boolean} true if and only if the following token is the
- * unwanted type.
- */
- mismatchIsUnwantedToken: function(input, ttype) {
- return input.LA(2)===ttype;
- },
-
- /**
- * Does the stream appear to be missing a single token?
- * @param {org.antlr.runtime.IntStream} input input stream to match against.
- * @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
- * matched token.
- * @returns {Boolean} true if and only if it appears that the stream is
- * missing a single token.
- */
- mismatchIsMissingToken: function(input, follow) {
- if ( !follow ) {
- // we have no information about the follow; we can only consume
- // a single token and hope for the best
- return false;
- }
- // compute what can follow this grammar element reference
- if ( follow.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) ) {
- if ( this.state._fsp>=0 ) { // remove EOR if we're not the start symbol
- follow.remove(org.antlr.runtime.Token.EOR_TOKEN_TYPE);
- }
- var viableTokensFollowingThisRule = this.computeContextSensitiveRuleFOLLOW();
- follow = follow.or(this.viableTokensFollowingThisRule);
- }
- // if current token is consistent with what could come after set
- // then we know we're missing a token; error recovery is free to
- // "insert" the missing token
-
- // BitSet cannot handle negative numbers like -1 (EOF) so I leave EOR
- // in follow set to indicate that the fall of the start symbol is
- // in the set (EOF can follow).
- if ( follow.member(input.LA(1)) ||
- follow.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) )
- {
- return true;
- }
- return false;
- },
-
- /** Factor out what to do upon token mismatch so tree parsers can behave
- * differently. Override and call {@link #mismatchRecover}
- * to get single token insertion and deletion.
- *
- * @param {org.antlr.runtime.IntStream} input input stream to match against.
- * @param {Number} ttype input type to match.
- * @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
- * matched token.
- */
- mismatch: function(input, ttype, follow) {
- if ( this.mismatchIsUnwantedToken(input, ttype) ) {
- throw new org.antlr.runtime.UnwantedTokenException(ttype, input);
- } else if ( this.mismatchIsMissingToken(input, follow) ) {
- throw new org.antlr.runtime.MissingTokenException(ttype, input, null);
- }
- throw new org.antlr.runtime.MismatchedTokenException(ttype, input);
- },
-
- /** Report a recognition problem.
- *
- * <p>This method sets errorRecovery to indicate the parser is recovering
- * not parsing. Once in recovery mode, no errors are generated.
- * To get out of recovery mode, the parser must successfully match
- * a token (after a resync). So it will go:</p>
- * <ol>
- * <li>error occurs</li>
- * <li>enter recovery mode, report error</li>
- * <li>consume until token found in resynch set</li>
- * <li>try to resume parsing</li>
- * <li>next match() will reset errorRecovery mode</li>
- * </ol>
- *
- * <p>If you override, make sure to update this.state.syntaxErrors if you
- * care about that.</p>
- * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
- */
- reportError: function(e) {
- if(this.input.size() != 0) {
- var token = this.input.get(e.index);
- var errorMessage = "";
- var column = 0;
- var line = 0;
- if(token.getType() == -1) {
- token = this.input.get(this.input.size() - 1);
- }
- errorMessage = this.getErrorMessage(e, this.getTokenNames());
- column = token.getStartIndex();
- line = token.getLine() - 1;
-
- var error = {
- line: line,
- message: errorMessage,
- column: column
- };
- this.addError(error);
- }
- // if we've already reported an error and have not matched a token
- // yet successfully, don't report any errors.
- if ( this.state.errorRecovery ) {
- return;
- }
- this.state.syntaxErrors++;
- this.state.errorRecovery = true;
-
- this.displayRecognitionError(this.getTokenNames(), e);
- },
-
- /**
- * Assemble recognition error message.
- * @param {Array} tokenNames array of token names (strings).
- * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
- */
- displayRecognitionError: function(tokenNames, e) {
- var hdr = this.getErrorHeader(e),
- msg = this.getErrorMessage(e, tokenNames);
- this.emitErrorMessage(hdr+" "+msg);
- },
-
- /**
- * Create error header message. Format is <q>line
- * lineNumber:positionInLine</q>.
- * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
- * @returns {String} The error header.
- */
- getErrorHeader: function(e) {
- /* handle null input */
- if (!org.antlr.lang.isNumber(e.line)) {
- e.line = 0;
- }
- return "line "+e.line+":"+e.charPositionInLine;
- },
-
- /**
- * Override this method to change where error messages go.
- * Defaults to "alert"-ing the error in browsers and "print"-ing the error
- * in other environments (e.g. Rhino, SpiderMonkey).
- * @param {String} msg the error message to be displayed.
- */
- emitErrorMessage: function(msg) {
- //throw msg;
- console.log(msg);
- },
-
- /** What error message should be generated for the various
- * exception types?
- *
- * <p>Not very object-oriented code, but I like having all error message
- * generation within one method rather than spread among all of the
- * exception classes. This also makes it much easier for the exception
- * handling because the exception classes do not have to have pointers back
- * to this object to access utility routines and so on. Also, changing
- * the message for an exception type would be difficult because you
- * would have to be subclassing exceptions, but then somehow get ANTLR
- * to make those kinds of exception objects instead of the default.</p>
- *
- * <p>For grammar debugging, you will want to override this to add
- * more information such as the stack frame and no viable alts.</p>
- *
- * <p>Override this to change the message generated for one or more
- * exception types.</p>
- *
- * @param {Array} tokenNames array of token names (strings).
- * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
- * @returns {String} the error message to be emitted.
- */
- getErrorMessage: function(e, tokenNames) {
- var msg = (e && e.getMessage) ? e.getMessage() : null,
- mte,
- tokenName;
- if ( e instanceof org.antlr.runtime.UnwantedTokenException ) {
- var ute = e;
- tokenName="<unknown>";
- if ( ute.expecting== org.antlr.runtime.Token.EOF ) {
- tokenName = "EOF";
- } else {
- tokenName = tokenNames[ute.expecting];
- }
- msg = "extraneous input "+this.getTokenErrorDisplay(ute.getUnexpectedToken())+
- " expecting "+tokenName;
- }
- else if ( e instanceof org.antlr.runtime.MissingTokenException ) {
- mte = e;
- tokenName="<unknown>";
- if ( mte.expecting== org.antlr.runtime.Token.EOF ) {
- tokenName = "EOF";
- } else {
- tokenName = tokenNames[mte.expecting];
- }
- msg = "missing "+tokenName+" at "+this.getTokenErrorDisplay(e.token);
- }
- else if ( e instanceof org.antlr.runtime.MismatchedTokenException ) {
- mte = e;
- tokenName="<unknown>";
- if ( mte.expecting== org.antlr.runtime.Token.EOF ) {
- tokenName = "EOF";
- }
- else {
- tokenName = tokenNames[mte.expecting];
- }
- msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
- " expecting "+tokenName;
- }
- else if ( e instanceof org.antlr.runtime.NoViableAltException ) {
- msg = "no viable alternative at input "+this.getTokenErrorDisplay(e.token);
- }
- else if ( e instanceof org.antlr.runtime.EarlyExitException ) {
- msg = "required (...)+ loop did not match anything at input "+
- this.getTokenErrorDisplay(e.token);
- }
- else if ( e instanceof org.antlr.runtime.MismatchedSetException ) {
- msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
- " expecting set "+e.expecting;
- }
- else if ( e instanceof org.antlr.runtime.MismatchedNotSetException ) {
- msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
- " expecting set "+e.expecting;
- }
- else if ( e instanceof org.antlr.runtime.FailedPredicateException ) {
- msg = "rule "+e.ruleName+" failed predicate: {"+
- e.predicateText+"}?";
- }
- return msg;
- },
-
- /** Get number of recognition errors (lexer, parser, tree parser). Each
- * recognizer tracks its own number. So parser and lexer each have
- * separate count. Does not count the spurious errors found between
- * an error and next valid token match
- *
- * See also reportError()
- */
- getNumberOfSyntaxErrors: function() {
- return this.state.syntaxErrors;
- },
-
- /** How should a token be displayed in an error message? The default
- * is to display just the text, but during development you might
- * want to have a lot of information spit out. Override in that case
- * to use t.toString() (which, for CommonToken, dumps everything about
- * the token). This is better than forcing you to override a method in
- * your token objects because you don't have to go modify your lexer
- * so that it creates a new Java type.
- */
- getTokenErrorDisplay: function(t) {
- var s = t.getText();
- if ( !org.antlr.lang.isValue(s) ) {
- if ( t.getType()==org.antlr.runtime.Token.EOF ) {
- s = "<EOF>";
- }
- else {
- s = "<"+t.getType()+">";
- }
- }
- s = s.replace(/\n/g,"\\n");
- s = s.replace(/\r/g,"\\r");
- s = s.replace(/\t/g,"\\t");
- return "'"+s+"'";
- },
-
- /** Recover from an error found on the input stream. This is
- * for NoViableAlt and mismatched symbol exceptions. If you enable
- * single token insertion and deletion, this will usually not
- * handle mismatched symbol exceptions but there could be a mismatched
- * token that the match() routine could not recover from.
- */
- recover: function(input, re) {
- if ( this.state.lastErrorIndex==input.index() ) {
- // uh oh, another error at same token index; must be a case
- // where LT(1) is in the recovery token set so nothing is
- // consumed; consume a single token so at least to prevent
- // an infinite loop; this is a failsafe.
- input.consume();
- }
- this.state.lastErrorIndex = input.index();
- var followSet = this.computeErrorRecoverySet();
- this.beginResync();
- this.consumeUntil(input, followSet);
- this.endResync();
- },
-
- /** A hook to listen in on the token consumption during error recovery.
- * The DebugParser subclasses this to fire events to the listenter.
- */
- beginResync: function() {
- },
-
- endResync: function() {
- },
-
- /* Compute the error recovery set for the current rule. During
- * rule invocation, the parser pushes the set of tokens that can
- * follow that rule reference on the stack; this amounts to
- * computing FIRST of what follows the rule reference in the
- * enclosing rule. This local follow set only includes tokens
- * from within the rule; i.e., the FIRST computation done by
- * ANTLR stops at the end of a rule.
- *
- * EXAMPLE
- *
- * When you find a "no viable alt exception", the input is not
- * consistent with any of the alternatives for rule r. The best
- * thing to do is to consume tokens until you see something that
- * can legally follow a call to r *or* any rule that called r.
- * You don't want the exact set of viable next tokens because the
- * input might just be missing a token--you might consume the
- * rest of the input looking for one of the missing tokens.
- *
- * Consider grammar:
- *
- * a : '[' b ']'
- * | '(' b ')'
- * ;
- * b : c '^' INT ;
- * c : ID
- * | INT
- * ;
- *
- * At each rule invocation, the set of tokens that could follow
- * that rule is pushed on a stack. Here are the various "local"
- * follow sets:
- *
- * FOLLOW(b1_in_a) = FIRST(']') = ']'
- * FOLLOW(b2_in_a) = FIRST(')') = ')'
- * FOLLOW(c_in_b) = FIRST('^') = '^'
- *
- * Upon erroneous input "[]", the call chain is
- *
- * a -> b -> c
- *
- * and, hence, the follow context stack is:
- *
- * depth local follow set after call to rule
- * 0 <EOF> a (from main())
- * 1 ']' b
- * 3 '^' c
- *
- * Notice that ')' is not included, because b would have to have
- * been called from a different context in rule a for ')' to be
- * included.
- *
- * For error recovery, we cannot consider FOLLOW(c)
- * (context-sensitive or otherwise). We need the combined set of
- * all context-sensitive FOLLOW sets--the set of all tokens that
- * could follow any reference in the call chain. We need to
- * resync to one of those tokens. Note that FOLLOW(c)='^' and if
- * we resync'd to that token, we'd consume until EOF. We need to
- * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.
- * In this case, for input "[]", LA(1) is in this set so we would
- * not consume anything and after printing an error rule c would
- * return normally. It would not find the required '^' though.
- * At this point, it gets a mismatched token error and throws an
- * exception (since LA(1) is not in the viable following token
- * set). The rule exception handler tries to recover, but finds
- * the same recovery set and doesn't consume anything. Rule b
- * exits normally returning to rule a. Now it finds the ']' (and
- * with the successful match exits errorRecovery mode).
- *
- * So, you cna see that the parser walks up call chain looking
- * for the token that was a member of the recovery set.
- *
- * Errors are not generated in errorRecovery mode.
- *
- * ANTLR's error recovery mechanism is based upon original ideas:
- *
- * "Algorithms + Data Structures = Programs" by Niklaus Wirth
- *
- * and
- *
- * "A note on error recovery in recursive descent parsers":
- * http://portal.acm.org/citation.cfm?id=947902.947905
- *
- * Later, Josef Grosch had some good ideas:
- *
- * "Efficient and Comfortable Error Recovery in Recursive Descent
- * Parsers":
- * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip
- *
- * Like Grosch I implemented local FOLLOW sets that are combined
- * at run-time upon error to avoid overhead during parsing.
- */
- computeErrorRecoverySet: function() {
- return this.combineFollows(false);
- },
-
-
- /** Compute the context-sensitive FOLLOW set for current rule.
- * This is set of token types that can follow a specific rule
- * reference given a specific call chain. You get the set of
- * viable tokens that can possibly come next (lookahead depth 1)
- * given the current call chain. Contrast this with the
- * definition of plain FOLLOW for rule r:
- *
- * FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)}
- *
- * where x in T* and alpha, beta in V*; T is set of terminals and
- * V is the set of terminals and nonterminals. In other words,
- * FOLLOW(r) is the set of all tokens that can possibly follow
- * references to r in *any* sentential form (context). At
- * runtime, however, we know precisely which context applies as
- * we have the call chain. We may compute the exact (rather
- * than covering superset) set of following tokens.
- *
- * For example, consider grammar:
- *
- * stat : ID '=' expr ';' // FOLLOW(stat)=={EOF}
- * | "return" expr '.'
- * ;
- * expr : atom ('+' atom)* ; // FOLLOW(expr)=={';','.',')'}
- * atom : INT // FOLLOW(atom)=={'+',')',';','.'}
- * | '(' expr ')'
- * ;
- *
- * The FOLLOW sets are all inclusive whereas context-sensitive
- * FOLLOW sets are precisely what could follow a rule reference.
- * For input input "i=(3);", here is the derivation:
- *
- * stat => ID '=' expr ';'
- * => ID '=' atom ('+' atom)* ';'
- * => ID '=' '(' expr ')' ('+' atom)* ';'
- * => ID '=' '(' atom ')' ('+' atom)* ';'
- * => ID '=' '(' INT ')' ('+' atom)* ';'
- * => ID '=' '(' INT ')' ';'
- *
- * At the "3" token, you'd have a call chain of
- *
- * stat -> expr -> atom -> expr -> atom
- *
- * What can follow that specific nested ref to atom? Exactly ')'
- * as you can see by looking at the derivation of this specific
- * input. Contrast this with the FOLLOW(atom)={'+',')',';','.'}.
- *
- * You want the exact viable token set when recovering from a
- * token mismatch. Upon token mismatch, if LA(1) is member of
- * the viable next token set, then you know there is most likely
- * a missing token in the input stream. "Insert" one by just not
- * throwing an exception.
- */
- computeContextSensitiveRuleFOLLOW: function() {
- return this.combineFollows(true);
- },
-
- combineFollows: function(exact) {
- var top = this.state._fsp,
- i,
- localFollowSet,
- followSet = new org.antlr.runtime.BitSet();
- for (i=top; i>=0; i--) {
- localFollowSet = this.state.following[i];
- followSet.orInPlace(localFollowSet);
- if ( exact ) {
- // can we see end of rule?
- if ( localFollowSet.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) )
- {
- // Only leave EOR in set if at top (start rule); this lets
- // us know if have to include follow(start rule); i.e., EOF
- if ( i>0 ) {
- followSet.remove(org.antlr.runtime.Token.EOR_TOKEN_TYPE);
- }
- }
- else { // can't see end of rule, quit
- break;
- }
- }
- }
- return followSet;
- },
-
- /** Attempt to recover from a single missing or extra token.
- *
- * EXTRA TOKEN
- *
- * LA(1) is not what we are looking for. If LA(2) has the right token,
- * however, then assume LA(1) is some extra spurious token. Delete it
- * and LA(2) as if we were doing a normal match(), which advances the
- * input.
- *
- * MISSING TOKEN
- *
- * If current token is consistent with what could come after
- * ttype then it is ok to "insert" the missing token, else throw
- * exception For example, Input "i=(3;" is clearly missing the
- * ')'. When the parser returns from the nested call to expr, it
- * will have call chain:
- *
- * stat -> expr -> atom
- *
- * and it will be trying to match the ')' at this point in the
- * derivation:
- *
- * => ID '=' '(' INT ')' ('+' atom)* ';'
- * ^
- * match() will see that ';' doesn't match ')' and report a
- * mismatched token error. To recover, it sees that LA(1)==';'
- * is in the set of tokens that can follow the ')' token
- * reference in rule atom. It can assume that you forgot the ')'.
- */
- recoverFromMismatchedToken: function(input,
- ttype,
- follow)
- {
- var e = null;
- // if next token is what we are looking for then "delete" this token
- if ( this.mismatchIsUnwantedToken(input, ttype) ) {
- e = new org.antlr.runtime.UnwantedTokenException(ttype, input);
- this.beginResync();
- input.consume(); // simply delete extra token
- this.endResync();
- this.reportError(e); // report after consuming so AW sees the token in the exception
- // we want to return the token we're actually matching
- var matchedSymbol = this.getCurrentInputSymbol(input);
- input.consume(); // move past ttype token as if all were ok
- return matchedSymbol;
- }
- // can't recover with single token deletion, try insertion
- if ( this.mismatchIsMissingToken(input, follow) ) {
- var inserted = this.getMissingSymbol(input, e, ttype, follow);
- e = new org.antlr.runtime.MissingTokenException(ttype, input, inserted);
- this.reportError(e); // report after inserting so AW sees the token in the exception
- return inserted;
- }
- // even that didn't work; must throw the exception
- e = new org.antlr.runtime.MismatchedTokenException(ttype, input);
- throw e;
- },
-
- recoverFromMismatchedSet: function(input,
- e,
- follow)
- {
- if ( this.mismatchIsMissingToken(input, follow) ) {
- // System.out.println("missing token");
- this.reportError(e);
- // we don't know how to conjure up a token for sets yet
- return this.getMissingSymbol(input, e, org.antlr.runtime.Token.INVALID_TOKEN_TYPE, follow);
- }
- throw e;
- },
-
- /** Match needs to return the current input symbol, which gets put
- * into the label for the associated token ref; e.g., x=ID. Token
- * and tree parsers need to return different objects. Rather than test
- * for input stream type or change the IntStream interface, I use
- * a simple method to ask the recognizer to tell me what the current
- * input symbol is.
- *
- * This is ignored for lexers.
- */
- getCurrentInputSymbol: function(input) { return null; },
-
- /** Conjure up a missing token during error recovery.
- *
- * The recognizer attempts to recover from single missing
- * symbols. But, actions might refer to that missing symbol.
- * For example, x=ID {f($x);}. The action clearly assumes
- * that there has been an identifier matched previously and that
- * $x points at that token. If that token is missing, but
- * the next token in the stream is what we want we assume that
- * this token is missing and we keep going. Because we
- * have to return some token to replace the missing token,
- * we have to conjure one up. This method gives the user control
- * over the tokens returned for missing tokens. Mostly,
- * you will want to create something special for identifier
- * tokens. For literals such as '{' and ',', the default
- * action in the parser or tree parser works. It simply creates
- * a CommonToken of the appropriate type. The text will be the token.
- * If you change what tokens must be created by the lexer,
- * override this method to create the appropriate tokens.
- */
- getMissingSymbol: function(input,
- e,
- expectedTokenType,
- follow)
- {
- return null;
- },
-
-
- /** Consume tokens until one matches the given token set */
- consumeUntil: function(input, set) {
- var ttype = input.LA(1);
- while (ttype != org.antlr.runtime.Token.EOF && !set.member(ttype) ) {
- input.consume();
- ttype = input.LA(1);
- }
- },
-
- /** Push a rule's follow set using our own hardcoded stack */
- pushFollow: function(fset) {
- if ( (this.state._fsp +1)>=this.state.following.length ) {
- var f = [];
- var i;
- for (i=this.state.following.length-1; i>=0; i--) {
- f[i] = this.state.following[i];
- }
- this.state.following = f;
- }
- this.state._fsp++;
- this.state.following[this.state._fsp] = fset;
- },
-
- /** Return List<String> of the rules in your parser instance
- * leading up to a call to this method. You could override if
- * you want more details such as the file/line info of where
- * in the parser java code a rule is invoked.
- *
- * This is very useful for error messages and for context-sensitive
- * error recovery.
- *
- * A more general version of getRuleInvocationStack where you can
- * pass in, for example, a RecognitionException to get it's rule
- * stack trace. This routine is shared with all recognizers, hence,
- * static.
- *
- * TODO: move to a utility class or something; weird having lexer call this
- *
- * Most JS interpreters can't do real stack reflection. See this
- * spidermonkey bug, for example:
- * https://bugzilla.mozilla.org/show_bug.cgi?id=332104
- *
- * JS is supposed to get real stack traces in v4, at which time it would
- * be easy to implement this function.
- *
- * Until then I'll leave this unimplemented. If there is enough clamor
- * it would be possible to keep track of the invocation stack using an
- * auxiliary array, but that will definitely be a performance hit.
- */
- getRuleInvocationStack: function(e, recognizerClassName)
- {
- throw new Error("Not implemented.");
- },
-
- getBacktrackingLevel: function() {
- return this.state.backtracking;
- },
-
- /** Used to print out token names like ID during debugging and
- * error reporting. The generated parsers implement a method
- * that overrides this to point to their String[] tokenNames.
- */
- getTokenNames: function() {
- return null;
- },
-
- /** For debugging and other purposes, might want the grammar name.
- * Have ANTLR generate an implementation for this method.
- */
- getGrammarFileName: function() {
- return null;
- },
-
- /** A convenience method for use most often with template rewrites.
- * Convert a List<Token> to List<String>
- */
- toStrings: function(tokens) {
- if ( !tokens ) {
- return null;
- }
- var strings = [];
- var i;
- for (i=0; i<tokens.length; i++) {
- strings.push(tokens[i].getText());
- }
- return strings;
- },
-
- /** Given a rule number and a start token index number, return
- * MEMO_RULE_UNKNOWN if the rule has not parsed input starting from
- * start index. If this rule has parsed input starting from the
- * start index before, then return where the rule stopped parsing.
- * It returns the index of the last token matched by the rule.
- *
- * For now we use a hashtable and just the slow Object-based one.
- * Later, we can make a special one for ints and also one that
- * tosses out data after we commit past input position i.
- */
- getRuleMemoization: function(ruleIndex, ruleStartIndex) {
- if ( !this.state.ruleMemo[ruleIndex] ) {
- this.state.ruleMemo[ruleIndex] = {};
- }
- var stopIndexI =
- this.state.ruleMemo[ruleIndex][ruleStartIndex];
- if ( !org.antlr.lang.isNumber(stopIndexI) ) {
- return org.antlr.runtime.BaseRecognizer.MEMO_RULE_UNKNOWN;
- }
- return stopIndexI;
- },
-
- /** Has this rule already parsed input at the current index in the
- * input stream? Return the stop token index or MEMO_RULE_UNKNOWN.
- * If we attempted but failed to parse properly before, return
- * MEMO_RULE_FAILED.
- *
- * This method has a side-effect: if we have seen this input for
- * this rule and successfully parsed before, then seek ahead to
- * 1 past the stop token matched for this rule last time.
- */
- alreadyParsedRule: function(input, ruleIndex) {
- var stopIndex = this.getRuleMemoization(ruleIndex, input.index());
- if ( stopIndex==org.antlr.runtime.BaseRecognizer.MEMO_RULE_UNKNOWN ) {
- return false;
- }
- if ( stopIndex==org.antlr.runtime.BaseRecognizer.MEMO_RULE_FAILED ) {
- //System.out.println("rule "+ruleIndex+" will never succeed");
- this.state.failed=true;
- }
- else {
- input.seek(stopIndex+1); // jump to one past stop token
- }
- return true;
- },
-
- /** Record whether or not this rule parsed the input at this position
- * successfully. Use a standard java hashtable for now.
- */
- memoize: function(input,
- ruleIndex,
- ruleStartIndex)
- {
- var stopTokenIndex = this.state.failed ?
- org.antlr.runtime.BaseRecognizer.MEMO_RULE_FAILED : input.index()-1;
- if ( !org.antlr.lang.isValue(this.state.ruleMemo) ) {
- throw new Error("!!!!!!!!! memo array is null for "+ this.getGrammarFileName());
- }
- if ( ruleIndex >= this.state.ruleMemo.length ) {
- throw new Error("!!!!!!!!! memo size is "+this.state.ruleMemo.length+", but rule index is "+ruleIndex);
- }
- if ( org.antlr.lang.isValue(this.state.ruleMemo[ruleIndex]) ) {
- this.state.ruleMemo[ruleIndex][ruleStartIndex] = stopTokenIndex;
- }
- },
-
- /** return how many rule/input-index pairs there are in total.
- * TODO: this includes synpreds.
- */
- getRuleMemoizationCacheSize: function() {
- var n = 0, i;
- for (i = 0; this.state.ruleMemo && i < this.state.ruleMemo.length; i++) {
- var ruleMap = this.state.ruleMemo[i];
- if ( ruleMap ) {
- // @todo need to get size of rulemap?
- n += ruleMap.length; // how many input indexes are recorded?
- }
- }
- return n;
- },
-
- traceIn: function(ruleName, ruleIndex, inputSymbol) {
- this.emitErrorMessage("enter "+ruleName+" "+inputSymbol);
- if ( this.state.failed ) {
- this.emitErrorMessage(" failed="+this.failed);
- }
- if ( this.state.backtracking>0 ) {
- this.emitErrorMessage(" backtracking="+this.state.backtracking);
- }
- // System.out.println();
- },
-
- traceOut: function(ruleName, ruleIndex, inputSymbol) {
- this.emitErrorMessage("exit "+ruleName+" "+inputSymbol);
- if ( this.state.failed ) {
- this.emitErrorMessage(" failed="+this.state.failed);
- }
- if ( this.state.backtracking>0 ) {
- this.emitErrorMessage(" backtracking="+this.state.backtracking);
- }
- }
-};
-org.antlr.runtime.Lexer = function(input, state) {
- if (state) {
- org.antlr.runtime.Lexer.superclass.constructor.call(this, state);
- }
- if (input) {
- this.input = input;
- }
-};
-
-org.antlr.lang.extend(org.antlr.runtime.Lexer, org.antlr.runtime.BaseRecognizer, {
- reset: function() {
- // reset all recognizer state variables
- org.antlr.runtime.Lexer.superclass.reset.call(this);
- if ( org.antlr.lang.isValue(this.input) ) {
- this.input.seek(0); // rewind the input
- }
- if ( !org.antlr.lang.isValue(this.state) ) {
- return; // no shared state work to do
- }
- this.state.token = null;
- this.state.type = org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
- this.state.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
- this.state.tokenStartCharIndex = -1;
- this.state.tokenStartCharPositionInLine = -1;
- this.state.tokenStartLine = -1;
- this.state.text = null;
- },
-
- /** Return a token from this source; i.e., match a token on the char
- * stream.
- */
- nextToken: function() {
- while (true) {
- this.state.token = null;
- this.state.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
- this.state.tokenStartCharIndex = this.input.index();
- this.state.tokenStartCharPositionInLine = this.input.getCharPositionInLine();
- this.state.tokenStartLine = this.input.getLine();
- this.state.text = null;
- if ( this.input.LA(1)===org.antlr.runtime.CharStream.EOF ) {
- return org.antlr.runtime.Token.EOF_TOKEN;
- }
- try {
- this.mTokens();
- if ( !org.antlr.lang.isValue(this.state.token) ) {
- this.emit();
- }
- else if ( this.state.token==org.antlr.runtime.Token.SKIP_TOKEN ) {
- continue;
- }
- return this.state.token;
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.NoViableAltException) {
- this.reportError(re);
- this.recover(re);
- } else if ( re instanceof org.antlr.runtime.RecognitionException ) {
- this.reportError(re);
- } else {
- throw re;
- }
- }
- }
- },
-
- /** Instruct the lexer to skip creating a token for current lexer rule
- * and look for another token. nextToken() knows to keep looking when
- * a lexer rule finishes with token set to SKIP_TOKEN. Recall that
- * if token==null at end of any token rule, it creates one for you
- * and emits it.
- */
- skip: function() {
- this.state.token = org.antlr.runtime.Token.SKIP_TOKEN;
- },
-
- /** Set the char stream and reset the lexer */
- setCharStream: function(input) {
- this.input = null;
- this.reset();
- this.input = input;
- },
-
- getCharStream: function() {
- return this.input;
- },
-
- getSourceName: function() {
- return this.input.getSourceName();
- },
-
- /** Currently does not support multiple emits per nextToken invocation
- * for efficiency reasons. Subclass and override this method and
- * nextToken (to push tokens into a list and pull from that list rather
- * than a single variable as this implementation does).
- *
- * The standard method called to automatically emit a token at the
- * outermost lexical rule. The token object should point into the
- * char buffer start..stop. If there is a text override in 'text',
- * use that to set the token's text. Override this method to emit
- * custom Token objects.
- *
- * If you are building trees, then you should also override
- * Parser or TreeParser.getMissingSymbol().
- */
- emit: function() {
- if (arguments.length===0) {
- var t = new org.antlr.runtime.CommonToken(this.input, this.state.type, this.state.channel, this.state.tokenStartCharIndex, this.getCharIndex()-1);
- t.setLine(this.state.tokenStartLine);
- t.setText(this.state.text);
- t.setCharPositionInLine(this.state.tokenStartCharPositionInLine);
- this.state.token = t;
- return t;
- } else {
- this.state.token = arguments[0];
- }
- },
-
- match: function(s) {
- var i = 0,
- mte;
-
- if (org.antlr.lang.isString(s)) {
- while ( i<s.length ) {
- if ( this.input.LA(1)!=s.charAt(i) ) {
- if ( this.state.backtracking>0 ) {
- this.state.failed = true;
- return;
- }
- mte = new org.antlr.runtime.MismatchedTokenException(s.charAt(i), this.input);
- this.recover(mte);
- throw mte;
- }
- i++;
- this.input.consume();
- this.state.failed = false;
- }
- } else if (org.antlr.lang.isNumber(s)) {
- if ( this.input.LA(1)!=s ) {
- if ( this.state.backtracking>0 ) {
- this.state.failed = true;
- return;
- }
- mte = new org.antlr.runtime.MismatchedTokenException(s, this.input);
- this.recover(mte);
- throw mte;
- }
- this.input.consume();
- this.state.failed = false;
- }
- },
-
- matchAny: function() {
- this.input.consume();
- },
-
- matchRange: function(a, b) {
- if ( this.input.LA(1)<a || this.input.LA(1)>b ) {
- if ( this.state.backtracking>0 ) {
- this.state.failed = true;
- return;
- }
- mre = new org.antlr.runtime.MismatchedRangeException(a,b,this.input);
- this.recover(mre);
- throw mre;
- }
- this.input.consume();
- this.state.failed = false;
- },
-
- getLine: function() {
- return this.input.getLine();
- },
-
- getCharPositionInLine: function() {
- return this.input.getCharPositionInLine();
- },
-
- /** What is the index of the current character of lookahead? */
- getCharIndex: function() {
- return this.input.index();
- },
-
- /** Return the text matched so far for the current token or any
- * text override.
- */
- getText: function() {
- if ( org.antlr.lang.isString(this.state.text) ) {
- return this.state.text;
- }
- return this.input.substring(this.state.tokenStartCharIndex,this.getCharIndex()-1);
- },
-
- /** Set the complete text of this token; it wipes any previous
- * changes to the text.
- */
- setText: function(text) {
- this.state.text = text;
- },
-
- reportError: function(e) {
- /** TODO: not thought about recovery in lexer yet.
- *
- // if we've already reported an error and have not matched a token
- // yet successfully, don't report any errors.
- if ( errorRecovery ) {
- //System.err.print("[SPURIOUS] ");
- return;
- }
- errorRecovery = true;
- */
-
- this.displayRecognitionError(this.getTokenNames(), e);
- },
-
- getErrorMessage: function(e, tokenNames) {
- var msg = null;
- if ( e instanceof org.antlr.runtime.MismatchedTokenException ) {
- msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting "+this.getCharErrorDisplay(e.expecting);
- }
- else if ( e instanceof org.antlr.runtime.NoViableAltException ) {
- msg = "no viable alternative at character "+this.getCharErrorDisplay(e.c);
- }
- else if ( e instanceof org.antlr.runtime.EarlyExitException ) {
- msg = "required (...)+ loop did not match anything at character "+this.getCharErrorDisplay(e.c);
- }
- else if ( e instanceof org.antlr.runtime.MismatchedNotSetException ) {
- msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+e.expecting;
- }
- else if ( e instanceof org.antlr.runtime.MismatchedSetException ) {
- msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+e.expecting;
- }
- else if ( e instanceof org.antlr.runtime.MismatchedRangeException ) {
- msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+
- this.getCharErrorDisplay(e.a)+".."+this.getCharErrorDisplay(e.b);
- }
- else {
- msg = org.antlr.runtime.Lexer.superclass.getErrorMessage.call(this, e, tokenNames);
- }
- return msg;
- },
-
- getCharErrorDisplay: function(c) {
- var s = c; //String.fromCharCode(c);
- switch ( s ) {
- case org.antlr.runtime.Token.EOF :
- s = "<EOF>";
- break;
- case "\n" :
- s = "\\n";
- break;
- case "\t" :
- s = "\\t";
- break;
- case "\r" :
- s = "\\r";
- break;
- }
- return "'"+s+"'";
- },
-
- /** Lexers can normally match any char in it's vocabulary after matching
- * a token, so do the easy thing and just kill a character and hope
- * it all works out. You can instead use the rule invocation stack
- * to do sophisticated error recovery if you are in a fragment rule.
- */
- recover: function(re) {
- this.input.consume();
- },
-
- traceIn: function(ruleName, ruleIndex) {
- var inputSymbol = String.fromCharCode(this.input.LT(1))+" line="+this.getLine()+":"+this.getCharPositionInLine();
- org.antlr.runtime.Lexer.superclass.traceIn.call(this, ruleName, ruleIndex, inputSymbol);
- },
-
- traceOut: function(ruleName, ruleIndex) {
- var inputSymbol = String.fromCharCode(this.input.LT(1))+" line="+this.getLine()+":"+this.getCharPositionInLine();
- org.antlr.runtime.Lexer.superclass.traceOut.call(this, ruleName, ruleIndex, inputSymbol);
- }
-});
-org.antlr.runtime.ParserRuleReturnScope = function() {};
-
-org.antlr.runtime.ParserRuleReturnScope.prototype = {
- getStart: function() { return this.start; },
- getStop: function() { return this.stop; }
-};
-org.antlr.runtime.tree.TreeRuleReturnScope = function(){};
-
-org.antlr.runtime.tree.TreeRuleReturnScope.prototype = {
- getStart: function() { return this.start; }
-};
-org.antlr.runtime.Parser = function(input, state) {
- org.antlr.runtime.Parser.superclass.constructor.call(this, state);
- this.setTokenStream(input);
-};
-
-org.antlr.lang.extend(org.antlr.runtime.Parser, org.antlr.runtime.BaseRecognizer, {
- reset: function() {
- // reset all recognizer state variables
- org.antlr.runtime.Parser.superclass.reset.call(this);
- if ( org.antlr.lang.isValue(this.input) ) {
- this.input.seek(0); // rewind the input
- }
- },
-
- getCurrentInputSymbol: function(input) {
- return input.LT(1);
- },
-
- getMissingSymbol: function(input,
- e,
- expectedTokenType,
- follow)
- {
- var tokenText =
- "<missing "+this.getTokenNames()[expectedTokenType]+">";
- var t = new org.antlr.runtime.CommonToken(expectedTokenType, tokenText);
- var current = input.LT(1);
- var old_current;
- if ( current.getType() === org.antlr.runtime.Token.EOF ) {
- old_current = current;
- current = input.LT(-1);
- // handle edge case where there are no good tokens in the stream
- if (!current) {
- current = old_current;
- }
- }
- t.line = current.getLine();
- t.charPositionInLine = current.getCharPositionInLine();
- t.channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- return t;
- },
-
-
- /** Set the token stream and reset the parser */
- setTokenStream: function(input) {
- this.input = null;
- this.reset();
- this.input = input;
- },
-
- getTokenStream: function() {
- return this.input;
- },
-
- getSourceName: function() {
- return this.input.getSourceName();
- },
-
- traceIn: function(ruleName, ruleIndex) {
- org.antlr.runtime.Parser.superclass.traceIn.call(
- this, ruleName, ruleIndex, this.input.LT(1));
- },
-
- traceOut: function(ruleName, ruleIndex) {
- org.antlr.runtime.Parser.superclass.traceOut.call(
- this, ruleName, ruleIndex, this.input.LT(1));
- }
-});
-org.antlr.runtime.DFA = function() {};
-
-org.antlr.runtime.DFA.prototype = {
- /** From the input stream, predict what alternative will succeed
- * using this DFA (representing the covering regular approximation
- * to the underlying CFL). Return an alternative number 1..n. Throw
- * an exception upon error.
- */
- predict: function(input) {
- var mark = input.mark(), // remember where decision started in input
- s = 0, // we always start at s0
- specialState,
- c,
- snext;
-
- try {
- while ( true ) {
- specialState = this.special[s];
- if ( specialState>=0 ) {
- s = this.specialStateTransition(specialState,input);
- if (s===-1) {
- this.noViableAlt(s, input);
- return 0;
- }
- input.consume();
- continue;
- }
- if ( this.accept[s] >= 1 ) {
- return this.accept[s];
- }
- // look for a normal char transition
- c = input.LA(1); // -1 == \uFFFF, all tokens fit in 65000 space
-
- if (c===org.antlr.runtime.Token.EOF) {
- c = -1;
- } else if (org.antlr.lang.isString(c)) {
- c = c.charCodeAt(0);
- }
-
- if (c>=this.min[s] && c<=this.max[s]) {
- snext = this.transition[s][c-this.min[s]]; // move to next state
- if ( snext < 0 ) {
- // was in range but not a normal transition
- // must check EOT, which is like the else clause.
- // eot[s]>=0 indicates that an EOT edge goes to another
- // state.
- if ( this.eot[s]>=0 ) { // EOT Transition to accept state?
- s = this.eot[s];
- input.consume();
- // TODO: I had this as return accept[eot[s]]
- // which assumed here that the EOT edge always
- // went to an accept...faster to do this, but
- // what about predicated edges coming from EOT
- // target?
- continue;
- }
- this.noViableAlt(s,input);
- return 0;
- }
- s = snext;
- input.consume();
- continue;
- }
- if ( this.eot[s]>=0 ) { // EOT Transition?
- s = this.eot[s];
- input.consume();
- continue;
- }
- if ( c==org.antlr.runtime.Token.EOF && this.eof[s]>=0 ) { // EOF Transition to accept state?
- return this.accept[this.eof[s]];
- }
- // not in range and not EOF/EOT, must be invalid symbol
- this.noViableAlt(s,input);
- return 0;
- }
- }
- finally {
- input.rewind(mark);
- }
- },
-
- noViableAlt: function(s, input) {
- if (this.recognizer.state.backtracking>0) {
- this.recognizer.state.failed=true;
- return;
- }
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(),
- this.decisionNumber,
- s,
- input);
- this.error(nvae);
- throw nvae;
- },
-
- /** A hook for debugging interface */
- error: function(nvae) { },
-
- specialStateTransition: function(s, input) {
- return -1;
- },
-
- getDescription: function() {
- return "n/a";
- }
-};
-
-org.antlr.lang.augmentObject(org.antlr.runtime.DFA, {
- /** Given a String that has a run-length-encoding of some unsigned shorts
- * like "\1\2\3\9", convert to short[] {2,9,9,9}.
- */
- unpackEncodedString: function(encodedString) {
- // walk first to find how big it is.
- var i,
- data = [],
- di = 0,
- n,
- v,
- j;
- for (i=0; i<encodedString.length; i+=2) {
- n = encodedString.charCodeAt(i);
- v = encodedString.charCodeAt(i+1);
- if (v===0xffff) {
- v = -1; // overflow at 16 bits
- }
- // add v n times to data
- for (j=1; j<=n; j++) {
- data[di++] = v;
- }
- }
- return data;
- },
-
- // alias
- unpackEncodedStringToUnsignedChars: function(encodedString) {
- return org.antlr.runtime.DFA.unpackEncodedString(encodedString);
- }
-});
-org.antlr.runtime.tree.TreeParser = function(input) {
- org.antlr.runtime.tree.TreeParser.superclass.constructor.call(this, arguments[1]);
- this.setTreeNodeStream(input);
-};
-
-(function(){
-var TP = org.antlr.runtime.tree.TreeParser;
-
-org.antlr.lang.augmentObject(TP, {
- DOWN: org.antlr.runtime.Token.DOWN,
- UP: org.antlr.runtime.Token.UP
-});
-
-org.antlr.lang.extend(TP, org.antlr.runtime.BaseRecognizer, {
- reset: function() {
- TP.superclass.reset.call(this); // reset all recognizer state variables
- if ( this.input ) {
- this.input.seek(0); // rewind the input
- }
- },
-
- /** Set the input stream */
- setTreeNodeStream: function(input) {
- this.input = input;
- },
-
- getTreeNodeStream: function() {
- return this.input;
- },
-
- getSourceName: function() {
- return this.input.getSourceName();
- },
-
- getCurrentInputSymbol: function(input) {
- return input.LT(1);
- },
-
- getMissingSymbol: function(input, e, expectedTokenType, follow) {
- var tokenText =
- "<missing "+this.getTokenNames()[expectedTokenType]+">";
- return new org.antlr.runtime.tree.CommonTree(new org.antlr.runtime.CommonToken(expectedTokenType, tokenText));
- },
-
- /** Match '.' in tree parser has special meaning. Skip node or
- * entire tree if node has children. If children, scan until
- * corresponding UP node.
- */
- matchAny: function(ignore) { // ignore stream, copy of this.input
- this.state.errorRecovery = false;
- this.state.failed = false;
- var look = this.input.LT(1);
- if ( this.input.getTreeAdaptor().getChildCount(look)===0 ) {
- this.input.consume(); // not subtree, consume 1 node and return
- return;
- }
- // current node is a subtree, skip to corresponding UP.
- // must count nesting level to get right UP
- var level=0,
- tokenType = this.input.getTreeAdaptor().getType(look);
- while ( tokenType!==org.antlr.runtime.Token.EOF &&
- !(tokenType===TP.UP && level===0) )
- {
- this.input.consume();
- look = this.input.LT(1);
- tokenType = this.input.getTreeAdaptor().getType(look);
- if ( tokenType === TP.DOWN ) {
- level++;
- }
- else if ( tokenType === TP.UP ) {
- level--;
- }
- }
- this.input.consume(); // consume UP
- },
-
- /** We have DOWN/UP nodes in the stream that have no line info; override.
- * plus we want to alter the exception type. Don't try to recover
- * * from tree parser errors inline...
- */
- mismatch: function(input, ttype, follow) {
- throw new org.antlr.runtime.MismatchedTreeNodeException(ttype, input);
- },
-
- /** Prefix error message with the grammar name because message is
- * always intended for the programmer because the parser built
- * the input tree not the user.
- */
- getErrorHeader: function(e) {
- return this.getGrammarFileName()+": node from "+
- (e.approximateLineInfo?"after ":"")+"line "+e.line+":"+e.charPositionInLine;
- },
-
- /** Tree parsers parse nodes they usually have a token object as
- * payload. Set the exception token and do the default behavior.
- */
- getErrorMessage: function(e, tokenNames) {
- var adaptor;
- if ( this instanceof TP ) {
- adaptor = e.input.getTreeAdaptor();
- e.token = adaptor.getToken(e.node);
- if ( !org.antlr.lang.isValue(e.token) ) { // could be an UP/DOWN node
- e.token = new org.antlr.runtime.CommonToken(
- adaptor.getType(e.node),
- adaptor.getText(e.node));
- }
- }
- return TP.superclass.getErrorMessage.call(this, e, tokenNames);
- },
-
- traceIn: function(ruleName, ruleIndex) {
- TP.superclass.traceIn.call(this, ruleName, ruleIndex, this.input.LT(1));
- },
-
- traceOut: function(ruleName, ruleIndex) {
- TP.superclass.traceOut.call(this, ruleName, ruleIndex, this.input.LT(1));
- }
-});
-
-})();
-
-exports.org = org;
-
-});
-define('ace/mode/xquery/XQueryLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g 2012-09-05 10:41:37
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-var org = require("./antlr3-all").org;
-var XQDTLexer = require("./XQDTLexer").XQDTLexer;
-
-
-var XQueryLexer = function(input, state) {
-// alternate constructor @todo
-// public XQueryLexer(CharStream input)
-// public XQueryLexer(CharStream input, RecognizerSharedState state) {
- if (!state) {
- state = new org.antlr.runtime.RecognizerSharedState();
- }
-
- (function(){
-
-
- this.inStr = false;
-
- // dummy list for warning elimination
- //List<Stack<Object>> dummy = new ArrayList<Stack<Object>>();
-
- // when we start, the '<' has already been eaten by the other lexer
- //boolean inStr = false;
- //
- //public boolean isInString()
- //{
- // return inStr;
- //}
-
-
- }).call(this);
-
- this.dfa19 = new XQueryLexer.DFA19(this);
- XQueryLexer.superclass.constructor.call(this, input, state);
-
-
-};
-
-org.antlr.lang.augmentObject(XQueryLexer, {
- EOF: -1,
- L_QuotAttrContentChar: 4,
- L_AposAttrContentChar: 5,
- L_ElementContentChar: 6,
- L_CDataSection: 7,
- L_PredefinedEntityRef: 8,
- L_CharRef: 9,
- ESCAPE_LBRACKET: 10,
- ESCAPE_RBRACKET: 11,
- ESCAPE_APOS: 12,
- ESCAPE_QUOT: 13,
- CDATA_START: 14,
- CDATA_END: 15,
- ANCESTOR: 16,
- ANCESTOR_OR_SELF: 17,
- AND: 18,
- AS: 19,
- ASCENDING: 20,
- AT: 21,
- ATTRIBUTE: 22,
- BASE_URI: 23,
- BOUNDARY_SPACE: 24,
- BY: 25,
- CASE: 26,
- CAST: 27,
- CASTABLE: 28,
- CHILD: 29,
- COLLATION: 30,
- COMMENT: 31,
- CONSTRUCTION: 32,
- COPY_NAMESPACES: 33,
- DECLARE: 34,
- DEFAULT: 35,
- DESCENDANT: 36,
- DESCENDANT_OR_SELF: 37,
- DESCENDING: 38,
- DIV: 39,
- DOCUMENT: 40,
- DOCUMENT_NODE: 41,
- ELEMENT: 42,
- ELSE: 43,
- EMPTY: 44,
- EMPTY_SEQUENCE: 45,
- ENCODING: 46,
- EQ: 47,
- EVERY: 48,
- EXCEPT: 49,
- EXTERNAL: 50,
- FOLLOWING: 51,
- FOLLOWING_SIBLING: 52,
- FOR: 53,
- FUNCTION: 54,
- GE: 55,
- GREATEST: 56,
- GT: 57,
- IDIV: 58,
- IF: 59,
- IMPORT: 60,
- IN: 61,
- INHERIT: 62,
- INSTANCE: 63,
- INTERSECT: 64,
- IS: 65,
- ITEM: 66,
- LAX: 67,
- LE: 68,
- LEAST: 69,
- LET: 70,
- LT: 71,
- MOD: 72,
- MODULE: 73,
- NAMESPACE: 74,
- NE: 75,
- NO_INHERIT: 76,
- NO_PRESERVE: 77,
- NODE: 78,
- JSON: 79,
- OF: 80,
- OPTION: 81,
- OR: 82,
- ORDER: 83,
- ORDERED: 84,
- ORDERING: 85,
- PARENT: 86,
- PRECEDING: 87,
- PRECEDING_SIBLING: 88,
- PRESERVE: 89,
- PROCESSING_INSTRUCTION: 90,
- STRUCTURED_ITEM: 91,
- JSON_ITEM: 92,
- OBJECT: 93,
- ARRAY: 94,
- RETURN: 95,
- SATISFIES: 96,
- SCHEMA: 97,
- SCHEMA_ATTRIBUTE: 98,
- SCHEMA_ELEMENT: 99,
- SELF: 100,
- SOME: 101,
- STABLE: 102,
- STRICT: 103,
- STRIP: 104,
- TEXT: 105,
- THEN: 106,
- TO: 107,
- TREAT: 108,
- TYPESWITCH: 109,
- UNION: 110,
- UNORDERED: 111,
- VALIDATE: 112,
- VARIABLE: 113,
- VERSION: 114,
- WHERE: 115,
- XQUERY: 116,
- ALLOWING: 117,
- CATCH: 118,
- CONTEXT: 119,
- COUNT: 120,
- DECIMAL_FORMAT: 121,
- DECIMAL_SEPARATOR: 122,
- DIGIT: 123,
- END: 124,
- GROUP: 125,
- GROUPING_SEPARATOR: 126,
- INFINITY: 127,
- MINUS_SIGN: 128,
- NAMESPACE_NODE: 129,
- NAN: 130,
- NEXT: 131,
- ONLY: 132,
- PATTERN_SEPARATOR: 133,
- PERCENT: 134,
- PER_MILLE: 135,
- PREVIOUS: 136,
- SLIDING: 137,
- START: 138,
- SWITCH: 139,
- TRY: 140,
- TUMBLING: 141,
- TYPE: 142,
- WHEN: 143,
- WINDOW: 144,
- ZERO_DIGIT: 145,
- AFTER: 146,
- BEFORE: 147,
- COPY: 148,
- DELETE: 149,
- FIRST: 150,
- INSERT: 151,
- INTO: 152,
- POSITION: 153,
- APPEND: 154,
- LAST: 155,
- MODIFY: 156,
- NODES: 157,
- RENAME: 158,
- REPLACE: 159,
- REVALIDATION: 160,
- SKIP: 161,
- UPDATING: 162,
- VALUE: 163,
- WITH: 164,
- ALL: 165,
- ANY: 166,
- CONTAINS: 167,
- CONTENT: 168,
- DIACRITICS: 169,
- DIFFERENT: 170,
- DISTANCE: 171,
- ENTIRE: 172,
- EXACTLY: 173,
- FROM: 174,
- FT_OPTION: 175,
- FTAND: 176,
- FTNOT: 177,
- FTOR: 178,
- INSENSITIVE: 179,
- LANGUAGE: 180,
- LEVELS: 181,
- LOWERCASE: 182,
- MOST: 183,
- NO: 184,
- NOT: 185,
- OCCURS: 186,
- PARAGRAPH: 187,
- PARAGRAPHS: 188,
- PHRASE: 189,
- RELATIONSHIP: 190,
- SAME: 191,
- SCORE: 192,
- SENSITIVE: 193,
- SENTENCE: 194,
- SENTENCES: 195,
- STEMMING: 196,
- STOP: 197,
- THESAURUS: 198,
- TIMES: 199,
- UPPERCASE: 200,
- USING: 201,
- WEIGHT: 202,
- WILDCARDS: 203,
- WITHOUT: 204,
- WORD: 205,
- WORDS: 206,
- BREAK: 207,
- CONTINUE: 208,
- EXIT: 209,
- LOOP: 210,
- RETURNING: 211,
- WHILE: 212,
- CHECK: 213,
- COLLECTION: 214,
- CONSTRAINT: 215,
- FOREACH: 216,
- FOREIGN: 217,
- INDEX: 218,
- INTEGRITY: 219,
- KEY: 220,
- ON: 221,
- UNIQUE: 222,
- AMP_ER: 223,
- APOS_ER: 224,
- QUOT_ER: 225,
- CONCAT: 226,
- LPAREN: 227,
- RPAREN: 228,
- DOLLAR: 229,
- L_UNION_BRACKET: 230,
- R_UNION_BRACKET: 231,
- LBRACKET: 232,
- RBRACKET: 233,
- LSQUARE: 234,
- RSQUARE: 235,
- EQUAL: 236,
- BIND: 237,
- NOTEQUAL: 238,
- ANN_PERCENT: 239,
- HASH: 240,
- AMP: 241,
- COMMA: 242,
- QUESTION: 243,
- STAR: 244,
- PLUS: 245,
- MINUS: 246,
- SMALLER: 247,
- GREATER: 248,
- SMALLEREQ: 249,
- GREATEREQ: 250,
- SMALLER_SMALLER: 251,
- GREATER_GREATER: 252,
- SLASH: 253,
- SLASH_SLASH: 254,
- BANG: 255,
- DOT: 256,
- DOT_DOT: 257,
- COLON: 258,
- COLON_COLON: 259,
- EMPTY_CLOSE_TAG: 260,
- CLOSE_TAG: 261,
- SEMICOLON: 262,
- VBAR: 263,
- PRAGMA_START: 264,
- PRAGMA_END: 265,
- XML_COMMENT_START: 266,
- XML_COMMENT_END: 267,
- PI_START: 268,
- PI_END: 269,
- ATTR_SIGN: 270,
- Q: 271,
- CHARREF_DEC: 272,
- CHARREF_HEX: 273,
- APOS: 274,
- QUOT: 275,
- NCNameStartChar: 276,
- NCNameChar: 277,
- L_NCName: 278,
- Letter: 279,
- HexLetter: 280,
- Digit: 281,
- Digits: 282,
- S: 283,
- SU: 284,
- L_Pragma: 285,
- L_DirCommentConstructor: 286,
- L_DirPIConstructor: 287,
- L_IntegerLiteral: 288,
- L_DecimalLiteral: 289,
- L_DoubleLiteral: 290,
- L_Comment: 291,
- L_AnyChar: 292
-});
-
-(function(){
-var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
- EOF = org.antlr.runtime.Token.EOF;
-org.antlr.lang.extend(XQueryLexer, XQDTLexer, {
- EOF : -1,
- L_QuotAttrContentChar : 4,
- L_AposAttrContentChar : 5,
- L_ElementContentChar : 6,
- L_CDataSection : 7,
- L_PredefinedEntityRef : 8,
- L_CharRef : 9,
- ESCAPE_LBRACKET : 10,
- ESCAPE_RBRACKET : 11,
- ESCAPE_APOS : 12,
- ESCAPE_QUOT : 13,
- CDATA_START : 14,
- CDATA_END : 15,
- ANCESTOR : 16,
- ANCESTOR_OR_SELF : 17,
- AND : 18,
- AS : 19,
- ASCENDING : 20,
- AT : 21,
- ATTRIBUTE : 22,
- BASE_URI : 23,
- BOUNDARY_SPACE : 24,
- BY : 25,
- CASE : 26,
- CAST : 27,
- CASTABLE : 28,
- CHILD : 29,
- COLLATION : 30,
- COMMENT : 31,
- CONSTRUCTION : 32,
- COPY_NAMESPACES : 33,
- DECLARE : 34,
- DEFAULT : 35,
- DESCENDANT : 36,
- DESCENDANT_OR_SELF : 37,
- DESCENDING : 38,
- DIV : 39,
- DOCUMENT : 40,
- DOCUMENT_NODE : 41,
- ELEMENT : 42,
- ELSE : 43,
- EMPTY : 44,
- EMPTY_SEQUENCE : 45,
- ENCODING : 46,
- EQ : 47,
- EVERY : 48,
- EXCEPT : 49,
- EXTERNAL : 50,
- FOLLOWING : 51,
- FOLLOWING_SIBLING : 52,
- FOR : 53,
- FUNCTION : 54,
- GE : 55,
- GREATEST : 56,
- GT : 57,
- IDIV : 58,
- IF : 59,
- IMPORT : 60,
- IN : 61,
- INHERIT : 62,
- INSTANCE : 63,
- INTERSECT : 64,
- IS : 65,
- ITEM : 66,
- LAX : 67,
- LE : 68,
- LEAST : 69,
- LET : 70,
- LT : 71,
- MOD : 72,
- MODULE : 73,
- NAMESPACE : 74,
- NE : 75,
- NO_INHERIT : 76,
- NO_PRESERVE : 77,
- NODE : 78,
- JSON : 79,
- OF : 80,
- OPTION : 81,
- OR : 82,
- ORDER : 83,
- ORDERED : 84,
- ORDERING : 85,
- PARENT : 86,
- PRECEDING : 87,
- PRECEDING_SIBLING : 88,
- PRESERVE : 89,
- PROCESSING_INSTRUCTION : 90,
- STRUCTURED_ITEM : 91,
- JSON_ITEM : 92,
- OBJECT : 93,
- ARRAY : 94,
- RETURN : 95,
- SATISFIES : 96,
- SCHEMA : 97,
- SCHEMA_ATTRIBUTE : 98,
- SCHEMA_ELEMENT : 99,
- SELF : 100,
- SOME : 101,
- STABLE : 102,
- STRICT : 103,
- STRIP : 104,
- TEXT : 105,
- THEN : 106,
- TO : 107,
- TREAT : 108,
- TYPESWITCH : 109,
- UNION : 110,
- UNORDERED : 111,
- VALIDATE : 112,
- VARIABLE : 113,
- VERSION : 114,
- WHERE : 115,
- XQUERY : 116,
- ALLOWING : 117,
- CATCH : 118,
- CONTEXT : 119,
- COUNT : 120,
- DECIMAL_FORMAT : 121,
- DECIMAL_SEPARATOR : 122,
- DIGIT : 123,
- END : 124,
- GROUP : 125,
- GROUPING_SEPARATOR : 126,
- INFINITY : 127,
- MINUS_SIGN : 128,
- NAMESPACE_NODE : 129,
- NAN : 130,
- NEXT : 131,
- ONLY : 132,
- PATTERN_SEPARATOR : 133,
- PERCENT : 134,
- PER_MILLE : 135,
- PREVIOUS : 136,
- SLIDING : 137,
- START : 138,
- SWITCH : 139,
- TRY : 140,
- TUMBLING : 141,
- TYPE : 142,
- WHEN : 143,
- WINDOW : 144,
- ZERO_DIGIT : 145,
- AFTER : 146,
- BEFORE : 147,
- COPY : 148,
- DELETE : 149,
- FIRST : 150,
- INSERT : 151,
- INTO : 152,
- POSITION : 153,
- APPEND : 154,
- LAST : 155,
- MODIFY : 156,
- NODES : 157,
- RENAME : 158,
- REPLACE : 159,
- REVALIDATION : 160,
- SKIP : 161,
- UPDATING : 162,
- VALUE : 163,
- WITH : 164,
- ALL : 165,
- ANY : 166,
- CONTAINS : 167,
- CONTENT : 168,
- DIACRITICS : 169,
- DIFFERENT : 170,
- DISTANCE : 171,
- ENTIRE : 172,
- EXACTLY : 173,
- FROM : 174,
- FT_OPTION : 175,
- FTAND : 176,
- FTNOT : 177,
- FTOR : 178,
- INSENSITIVE : 179,
- LANGUAGE : 180,
- LEVELS : 181,
- LOWERCASE : 182,
- MOST : 183,
- NO : 184,
- NOT : 185,
- OCCURS : 186,
- PARAGRAPH : 187,
- PARAGRAPHS : 188,
- PHRASE : 189,
- RELATIONSHIP : 190,
- SAME : 191,
- SCORE : 192,
- SENSITIVE : 193,
- SENTENCE : 194,
- SENTENCES : 195,
- STEMMING : 196,
- STOP : 197,
- THESAURUS : 198,
- TIMES : 199,
- UPPERCASE : 200,
- USING : 201,
- WEIGHT : 202,
- WILDCARDS : 203,
- WITHOUT : 204,
- WORD : 205,
- WORDS : 206,
- BREAK : 207,
- CONTINUE : 208,
- EXIT : 209,
- LOOP : 210,
- RETURNING : 211,
- WHILE : 212,
- CHECK : 213,
- COLLECTION : 214,
- CONSTRAINT : 215,
- FOREACH : 216,
- FOREIGN : 217,
- INDEX : 218,
- INTEGRITY : 219,
- KEY : 220,
- ON : 221,
- UNIQUE : 222,
- AMP_ER : 223,
- APOS_ER : 224,
- QUOT_ER : 225,
- CONCAT : 226,
- LPAREN : 227,
- RPAREN : 228,
- DOLLAR : 229,
- L_UNION_BRACKET : 230,
- R_UNION_BRACKET : 231,
- LBRACKET : 232,
- RBRACKET : 233,
- LSQUARE : 234,
- RSQUARE : 235,
- EQUAL : 236,
- BIND : 237,
- NOTEQUAL : 238,
- ANN_PERCENT : 239,
- HASH : 240,
- AMP : 241,
- COMMA : 242,
- QUESTION : 243,
- STAR : 244,
- PLUS : 245,
- MINUS : 246,
- SMALLER : 247,
- GREATER : 248,
- SMALLEREQ : 249,
- GREATEREQ : 250,
- SMALLER_SMALLER : 251,
- GREATER_GREATER : 252,
- SLASH : 253,
- SLASH_SLASH : 254,
- BANG : 255,
- DOT : 256,
- DOT_DOT : 257,
- COLON : 258,
- COLON_COLON : 259,
- EMPTY_CLOSE_TAG : 260,
- CLOSE_TAG : 261,
- SEMICOLON : 262,
- VBAR : 263,
- PRAGMA_START : 264,
- PRAGMA_END : 265,
- XML_COMMENT_START : 266,
- XML_COMMENT_END : 267,
- PI_START : 268,
- PI_END : 269,
- ATTR_SIGN : 270,
- Q : 271,
- CHARREF_DEC : 272,
- CHARREF_HEX : 273,
- APOS : 274,
- QUOT : 275,
- NCNameStartChar : 276,
- NCNameChar : 277,
- L_NCName : 278,
- Letter : 279,
- HexLetter : 280,
- Digit : 281,
- Digits : 282,
- S : 283,
- SU : 284,
- L_Pragma : 285,
- L_DirCommentConstructor : 286,
- L_DirPIConstructor : 287,
- L_IntegerLiteral : 288,
- L_DecimalLiteral : 289,
- L_DoubleLiteral : 290,
- L_Comment : 291,
- L_AnyChar : 292,
- getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g"; }
-});
-org.antlr.lang.augmentObject(XQueryLexer.prototype, {
- // $ANTLR start ANCESTOR
- mANCESTOR: function() {
- try {
- var _type = this.ANCESTOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:85:29: ( 'ancestor' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:85:31: 'ancestor'
- this.match("ancestor");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ANCESTOR",
-
- // $ANTLR start ANCESTOR_OR_SELF
- mANCESTOR_OR_SELF: function() {
- try {
- var _type = this.ANCESTOR_OR_SELF;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:86:29: ( 'ancestor-or-self' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:86:31: 'ancestor-or-self'
- this.match("ancestor-or-self");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ANCESTOR_OR_SELF",
-
- // $ANTLR start AND
- mAND: function() {
- try {
- var _type = this.AND;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:87:29: ( 'and' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:87:31: 'and'
- this.match("and");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AND",
-
- // $ANTLR start AS
- mAS: function() {
- try {
- var _type = this.AS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:88:29: ( 'as' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:88:31: 'as'
- this.match("as");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AS",
-
- // $ANTLR start ASCENDING
- mASCENDING: function() {
- try {
- var _type = this.ASCENDING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:89:29: ( 'ascending' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:89:31: 'ascending'
- this.match("ascending");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ASCENDING",
-
- // $ANTLR start AT
- mAT: function() {
- try {
- var _type = this.AT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:90:29: ( 'at' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:90:31: 'at'
- this.match("at");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AT",
-
- // $ANTLR start ATTRIBUTE
- mATTRIBUTE: function() {
- try {
- var _type = this.ATTRIBUTE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:91:29: ( 'attribute' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:91:31: 'attribute'
- this.match("attribute");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ATTRIBUTE",
-
- // $ANTLR start BASE_URI
- mBASE_URI: function() {
- try {
- var _type = this.BASE_URI;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:92:29: ( 'base-uri' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:92:31: 'base-uri'
- this.match("base-uri");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BASE_URI",
-
- // $ANTLR start BOUNDARY_SPACE
- mBOUNDARY_SPACE: function() {
- try {
- var _type = this.BOUNDARY_SPACE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:93:29: ( 'boundary-space' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:93:31: 'boundary-space'
- this.match("boundary-space");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BOUNDARY_SPACE",
-
- // $ANTLR start BY
- mBY: function() {
- try {
- var _type = this.BY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:94:29: ( 'by' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:94:31: 'by'
- this.match("by");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BY",
-
- // $ANTLR start CASE
- mCASE: function() {
- try {
- var _type = this.CASE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:95:29: ( 'case' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:95:31: 'case'
- this.match("case");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CASE",
-
- // $ANTLR start CAST
- mCAST: function() {
- try {
- var _type = this.CAST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:96:29: ( 'cast' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:96:31: 'cast'
- this.match("cast");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CAST",
-
- // $ANTLR start CASTABLE
- mCASTABLE: function() {
- try {
- var _type = this.CASTABLE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:97:29: ( 'castable' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:97:31: 'castable'
- this.match("castable");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CASTABLE",
-
- // $ANTLR start CHILD
- mCHILD: function() {
- try {
- var _type = this.CHILD;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:98:29: ( 'child' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:98:31: 'child'
- this.match("child");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CHILD",
-
- // $ANTLR start COLLATION
- mCOLLATION: function() {
- try {
- var _type = this.COLLATION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:99:29: ( 'collation' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:99:31: 'collation'
- this.match("collation");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COLLATION",
-
- // $ANTLR start COMMENT
- mCOMMENT: function() {
- try {
- var _type = this.COMMENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:100:29: ( 'comment' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:100:31: 'comment'
- this.match("comment");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COMMENT",
-
- // $ANTLR start CONSTRUCTION
- mCONSTRUCTION: function() {
- try {
- var _type = this.CONSTRUCTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:101:29: ( 'construction' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:101:31: 'construction'
- this.match("construction");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONSTRUCTION",
-
- // $ANTLR start COPY_NAMESPACES
- mCOPY_NAMESPACES: function() {
- try {
- var _type = this.COPY_NAMESPACES;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:102:29: ( 'copy-namespaces' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:102:31: 'copy-namespaces'
- this.match("copy-namespaces");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COPY_NAMESPACES",
-
- // $ANTLR start DECLARE
- mDECLARE: function() {
- try {
- var _type = this.DECLARE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:103:29: ( 'declare' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:103:31: 'declare'
- this.match("declare");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DECLARE",
-
- // $ANTLR start DEFAULT
- mDEFAULT: function() {
- try {
- var _type = this.DEFAULT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:104:29: ( 'default' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:104:31: 'default'
- this.match("default");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DEFAULT",
-
- // $ANTLR start DESCENDANT
- mDESCENDANT: function() {
- try {
- var _type = this.DESCENDANT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:105:29: ( 'descendant' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:105:31: 'descendant'
- this.match("descendant");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DESCENDANT",
-
- // $ANTLR start DESCENDANT_OR_SELF
- mDESCENDANT_OR_SELF: function() {
- try {
- var _type = this.DESCENDANT_OR_SELF;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:106:29: ( 'descendant-or-self' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:106:31: 'descendant-or-self'
- this.match("descendant-or-self");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DESCENDANT_OR_SELF",
-
- // $ANTLR start DESCENDING
- mDESCENDING: function() {
- try {
- var _type = this.DESCENDING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:107:29: ( 'descending' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:107:31: 'descending'
- this.match("descending");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DESCENDING",
-
- // $ANTLR start DIV
- mDIV: function() {
- try {
- var _type = this.DIV;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:108:29: ( 'div' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:108:31: 'div'
- this.match("div");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DIV",
-
- // $ANTLR start DOCUMENT
- mDOCUMENT: function() {
- try {
- var _type = this.DOCUMENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:109:29: ( 'document' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:109:31: 'document'
- this.match("document");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DOCUMENT",
-
- // $ANTLR start DOCUMENT_NODE
- mDOCUMENT_NODE: function() {
- try {
- var _type = this.DOCUMENT_NODE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:110:29: ( 'document-node' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:110:31: 'document-node'
- this.match("document-node");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DOCUMENT_NODE",
-
- // $ANTLR start ELEMENT
- mELEMENT: function() {
- try {
- var _type = this.ELEMENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:111:29: ( 'element' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:111:31: 'element'
- this.match("element");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ELEMENT",
-
- // $ANTLR start ELSE
- mELSE: function() {
- try {
- var _type = this.ELSE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:112:29: ( 'else' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:112:31: 'else'
- this.match("else");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ELSE",
-
- // $ANTLR start EMPTY
- mEMPTY: function() {
- try {
- var _type = this.EMPTY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:113:29: ( 'empty' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:113:31: 'empty'
- this.match("empty");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EMPTY",
-
- // $ANTLR start EMPTY_SEQUENCE
- mEMPTY_SEQUENCE: function() {
- try {
- var _type = this.EMPTY_SEQUENCE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:114:29: ( 'empty-sequence' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:114:31: 'empty-sequence'
- this.match("empty-sequence");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EMPTY_SEQUENCE",
-
- // $ANTLR start ENCODING
- mENCODING: function() {
- try {
- var _type = this.ENCODING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:115:29: ( 'encoding' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:115:31: 'encoding'
- this.match("encoding");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ENCODING",
-
- // $ANTLR start EQ
- mEQ: function() {
- try {
- var _type = this.EQ;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:116:29: ( 'eq' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:116:31: 'eq'
- this.match("eq");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EQ",
-
- // $ANTLR start EVERY
- mEVERY: function() {
- try {
- var _type = this.EVERY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:117:29: ( 'every' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:117:31: 'every'
- this.match("every");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EVERY",
-
- // $ANTLR start EXCEPT
- mEXCEPT: function() {
- try {
- var _type = this.EXCEPT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:118:29: ( 'except' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:118:31: 'except'
- this.match("except");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EXCEPT",
-
- // $ANTLR start EXTERNAL
- mEXTERNAL: function() {
- try {
- var _type = this.EXTERNAL;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:119:29: ( 'external' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:119:31: 'external'
- this.match("external");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EXTERNAL",
-
- // $ANTLR start FOLLOWING
- mFOLLOWING: function() {
- try {
- var _type = this.FOLLOWING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:120:29: ( 'following' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:120:31: 'following'
- this.match("following");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FOLLOWING",
-
- // $ANTLR start FOLLOWING_SIBLING
- mFOLLOWING_SIBLING: function() {
- try {
- var _type = this.FOLLOWING_SIBLING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:121:29: ( 'following-sibling' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:121:31: 'following-sibling'
- this.match("following-sibling");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FOLLOWING_SIBLING",
-
- // $ANTLR start FOR
- mFOR: function() {
- try {
- var _type = this.FOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:122:29: ( 'for' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:122:31: 'for'
- this.match("for");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FOR",
-
- // $ANTLR start FUNCTION
- mFUNCTION: function() {
- try {
- var _type = this.FUNCTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:123:29: ( 'function' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:123:31: 'function'
- this.match("function");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FUNCTION",
-
- // $ANTLR start GE
- mGE: function() {
- try {
- var _type = this.GE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:124:29: ( 'ge' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:124:31: 'ge'
- this.match("ge");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GE",
-
- // $ANTLR start GREATEST
- mGREATEST: function() {
- try {
- var _type = this.GREATEST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:125:29: ( 'greatest' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:125:31: 'greatest'
- this.match("greatest");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GREATEST",
-
- // $ANTLR start GT
- mGT: function() {
- try {
- var _type = this.GT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:126:29: ( 'gt' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:126:31: 'gt'
- this.match("gt");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GT",
-
- // $ANTLR start IDIV
- mIDIV: function() {
- try {
- var _type = this.IDIV;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:127:29: ( 'idiv' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:127:31: 'idiv'
- this.match("idiv");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "IDIV",
-
- // $ANTLR start IF
- mIF: function() {
- try {
- var _type = this.IF;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:128:29: ( 'if' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:128:31: 'if'
- this.match("if");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "IF",
-
- // $ANTLR start IMPORT
- mIMPORT: function() {
- try {
- var _type = this.IMPORT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:129:29: ( 'import' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:129:31: 'import'
- this.match("import");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "IMPORT",
-
- // $ANTLR start IN
- mIN: function() {
- try {
- var _type = this.IN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:130:29: ( 'in' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:130:31: 'in'
- this.match("in");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "IN",
-
- // $ANTLR start INHERIT
- mINHERIT: function() {
- try {
- var _type = this.INHERIT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:131:29: ( 'inherit' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:131:31: 'inherit'
- this.match("inherit");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INHERIT",
-
- // $ANTLR start INSTANCE
- mINSTANCE: function() {
- try {
- var _type = this.INSTANCE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:132:29: ( 'instance' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:132:31: 'instance'
- this.match("instance");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INSTANCE",
-
- // $ANTLR start INTERSECT
- mINTERSECT: function() {
- try {
- var _type = this.INTERSECT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:133:29: ( 'intersect' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:133:31: 'intersect'
- this.match("intersect");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INTERSECT",
-
- // $ANTLR start IS
- mIS: function() {
- try {
- var _type = this.IS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:134:29: ( 'is' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:134:31: 'is'
- this.match("is");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "IS",
-
- // $ANTLR start ITEM
- mITEM: function() {
- try {
- var _type = this.ITEM;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:135:29: ( 'item' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:135:31: 'item'
- this.match("item");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ITEM",
-
- // $ANTLR start LAX
- mLAX: function() {
- try {
- var _type = this.LAX;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:136:29: ( 'lax' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:136:31: 'lax'
- this.match("lax");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LAX",
-
- // $ANTLR start LE
- mLE: function() {
- try {
- var _type = this.LE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:137:29: ( 'le' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:137:31: 'le'
- this.match("le");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LE",
-
- // $ANTLR start LEAST
- mLEAST: function() {
- try {
- var _type = this.LEAST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:138:29: ( 'least' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:138:31: 'least'
- this.match("least");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LEAST",
-
- // $ANTLR start LET
- mLET: function() {
- try {
- var _type = this.LET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:139:29: ( 'let' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:139:31: 'let'
- this.match("let");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LET",
-
- // $ANTLR start LT
- mLT: function() {
- try {
- var _type = this.LT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:140:29: ( 'lt' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:140:31: 'lt'
- this.match("lt");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LT",
-
- // $ANTLR start MOD
- mMOD: function() {
- try {
- var _type = this.MOD;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:141:29: ( 'mod' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:141:31: 'mod'
- this.match("mod");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MOD",
-
- // $ANTLR start MODULE
- mMODULE: function() {
- try {
- var _type = this.MODULE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:142:29: ( 'module' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:142:31: 'module'
- this.match("module");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MODULE",
-
- // $ANTLR start NAMESPACE
- mNAMESPACE: function() {
- try {
- var _type = this.NAMESPACE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:143:29: ( 'namespace' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:143:31: 'namespace'
- this.match("namespace");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NAMESPACE",
-
- // $ANTLR start NE
- mNE: function() {
- try {
- var _type = this.NE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:144:29: ( 'ne' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:144:31: 'ne'
- this.match("ne");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NE",
-
- // $ANTLR start NO_INHERIT
- mNO_INHERIT: function() {
- try {
- var _type = this.NO_INHERIT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:145:29: ( 'no-inherit' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:145:31: 'no-inherit'
- this.match("no-inherit");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NO_INHERIT",
-
- // $ANTLR start NO_PRESERVE
- mNO_PRESERVE: function() {
- try {
- var _type = this.NO_PRESERVE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:146:29: ( 'no-preserve' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:146:31: 'no-preserve'
- this.match("no-preserve");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NO_PRESERVE",
-
- // $ANTLR start NODE
- mNODE: function() {
- try {
- var _type = this.NODE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:147:29: ( 'node' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:147:31: 'node'
- this.match("node");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NODE",
-
- // $ANTLR start JSON
- mJSON: function() {
- try {
- var _type = this.JSON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:148:29: ( 'json' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:148:31: 'json'
- this.match("json");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "JSON",
-
- // $ANTLR start OF
- mOF: function() {
- try {
- var _type = this.OF;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:149:29: ( 'of' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:149:31: 'of'
- this.match("of");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "OF",
-
- // $ANTLR start OPTION
- mOPTION: function() {
- try {
- var _type = this.OPTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:150:29: ( 'option' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:150:31: 'option'
- this.match("option");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "OPTION",
-
- // $ANTLR start OR
- mOR: function() {
- try {
- var _type = this.OR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:151:29: ( 'or' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:151:31: 'or'
- this.match("or");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "OR",
-
- // $ANTLR start ORDER
- mORDER: function() {
- try {
- var _type = this.ORDER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:152:29: ( 'order' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:152:31: 'order'
- this.match("order");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ORDER",
-
- // $ANTLR start ORDERED
- mORDERED: function() {
- try {
- var _type = this.ORDERED;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:153:29: ( 'ordered' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:153:31: 'ordered'
- this.match("ordered");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ORDERED",
-
- // $ANTLR start ORDERING
- mORDERING: function() {
- try {
- var _type = this.ORDERING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:154:29: ( 'ordering' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:154:31: 'ordering'
- this.match("ordering");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ORDERING",
-
- // $ANTLR start PARENT
- mPARENT: function() {
- try {
- var _type = this.PARENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:155:29: ( 'parent' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:155:31: 'parent'
- this.match("parent");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PARENT",
-
- // $ANTLR start PRECEDING
- mPRECEDING: function() {
- try {
- var _type = this.PRECEDING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:156:29: ( 'preceding' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:156:31: 'preceding'
- this.match("preceding");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PRECEDING",
-
- // $ANTLR start PRECEDING_SIBLING
- mPRECEDING_SIBLING: function() {
- try {
- var _type = this.PRECEDING_SIBLING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:157:29: ( 'preceding-sibling' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:157:31: 'preceding-sibling'
- this.match("preceding-sibling");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PRECEDING_SIBLING",
-
- // $ANTLR start PRESERVE
- mPRESERVE: function() {
- try {
- var _type = this.PRESERVE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:158:29: ( 'preserve' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:158:31: 'preserve'
- this.match("preserve");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PRESERVE",
-
- // $ANTLR start PROCESSING_INSTRUCTION
- mPROCESSING_INSTRUCTION: function() {
- try {
- var _type = this.PROCESSING_INSTRUCTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:159:29: ( 'processing-instruction' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:159:31: 'processing-instruction'
- this.match("processing-instruction");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PROCESSING_INSTRUCTION",
-
- // $ANTLR start STRUCTURED_ITEM
- mSTRUCTURED_ITEM: function() {
- try {
- var _type = this.STRUCTURED_ITEM;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:160:29: ( 'structured-item' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:160:31: 'structured-item'
- this.match("structured-item");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STRUCTURED_ITEM",
-
- // $ANTLR start JSON_ITEM
- mJSON_ITEM: function() {
- try {
- var _type = this.JSON_ITEM;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:161:29: ( 'json-item' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:161:31: 'json-item'
- this.match("json-item");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "JSON_ITEM",
-
- // $ANTLR start OBJECT
- mOBJECT: function() {
- try {
- var _type = this.OBJECT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:162:29: ( 'object' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:162:31: 'object'
- this.match("object");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "OBJECT",
-
- // $ANTLR start ARRAY
- mARRAY: function() {
- try {
- var _type = this.ARRAY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:163:29: ( 'array' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:163:31: 'array'
- this.match("array");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ARRAY",
-
- // $ANTLR start RETURN
- mRETURN: function() {
- try {
- var _type = this.RETURN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:164:29: ( 'return' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:164:31: 'return'
- this.match("return");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RETURN",
-
- // $ANTLR start SATISFIES
- mSATISFIES: function() {
- try {
- var _type = this.SATISFIES;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:165:29: ( 'satisfies' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:165:31: 'satisfies'
- this.match("satisfies");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SATISFIES",
-
- // $ANTLR start SCHEMA
- mSCHEMA: function() {
- try {
- var _type = this.SCHEMA;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:166:29: ( 'schema' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:166:31: 'schema'
- this.match("schema");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SCHEMA",
-
- // $ANTLR start SCHEMA_ATTRIBUTE
- mSCHEMA_ATTRIBUTE: function() {
- try {
- var _type = this.SCHEMA_ATTRIBUTE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:167:29: ( 'schema-attribute' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:167:31: 'schema-attribute'
- this.match("schema-attribute");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SCHEMA_ATTRIBUTE",
-
- // $ANTLR start SCHEMA_ELEMENT
- mSCHEMA_ELEMENT: function() {
- try {
- var _type = this.SCHEMA_ELEMENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:168:29: ( 'schema-element' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:168:31: 'schema-element'
- this.match("schema-element");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SCHEMA_ELEMENT",
-
- // $ANTLR start SELF
- mSELF: function() {
- try {
- var _type = this.SELF;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:169:29: ( 'self' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:169:31: 'self'
- this.match("self");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SELF",
-
- // $ANTLR start SOME
- mSOME: function() {
- try {
- var _type = this.SOME;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:170:29: ( 'some' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:170:31: 'some'
- this.match("some");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SOME",
-
- // $ANTLR start STABLE
- mSTABLE: function() {
- try {
- var _type = this.STABLE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:171:29: ( 'stable' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:171:31: 'stable'
- this.match("stable");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STABLE",
-
- // $ANTLR start STRICT
- mSTRICT: function() {
- try {
- var _type = this.STRICT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:172:29: ( 'strict' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:172:31: 'strict'
- this.match("strict");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STRICT",
-
- // $ANTLR start STRIP
- mSTRIP: function() {
- try {
- var _type = this.STRIP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:173:29: ( 'strip' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:173:31: 'strip'
- this.match("strip");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STRIP",
-
- // $ANTLR start TEXT
- mTEXT: function() {
- try {
- var _type = this.TEXT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:174:29: ( 'text' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:174:31: 'text'
- this.match("text");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TEXT",
-
- // $ANTLR start THEN
- mTHEN: function() {
- try {
- var _type = this.THEN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:175:29: ( 'then' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:175:31: 'then'
- this.match("then");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "THEN",
-
- // $ANTLR start TO
- mTO: function() {
- try {
- var _type = this.TO;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:176:29: ( 'to' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:176:31: 'to'
- this.match("to");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TO",
-
- // $ANTLR start TREAT
- mTREAT: function() {
- try {
- var _type = this.TREAT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:177:29: ( 'treat' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:177:31: 'treat'
- this.match("treat");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TREAT",
-
- // $ANTLR start TYPESWITCH
- mTYPESWITCH: function() {
- try {
- var _type = this.TYPESWITCH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:178:29: ( 'typeswitch' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:178:31: 'typeswitch'
- this.match("typeswitch");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TYPESWITCH",
-
- // $ANTLR start UNION
- mUNION: function() {
- try {
- var _type = this.UNION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:179:29: ( 'union' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:179:31: 'union'
- this.match("union");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "UNION",
-
- // $ANTLR start UNORDERED
- mUNORDERED: function() {
- try {
- var _type = this.UNORDERED;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:180:29: ( 'unordered' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:180:31: 'unordered'
- this.match("unordered");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "UNORDERED",
-
- // $ANTLR start VALIDATE
- mVALIDATE: function() {
- try {
- var _type = this.VALIDATE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:181:29: ( 'validate' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:181:31: 'validate'
- this.match("validate");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "VALIDATE",
-
- // $ANTLR start VARIABLE
- mVARIABLE: function() {
- try {
- var _type = this.VARIABLE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:182:29: ( 'variable' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:182:31: 'variable'
- this.match("variable");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "VARIABLE",
-
- // $ANTLR start VERSION
- mVERSION: function() {
- try {
- var _type = this.VERSION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:183:29: ( 'version' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:183:31: 'version'
- this.match("version");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "VERSION",
-
- // $ANTLR start WHERE
- mWHERE: function() {
- try {
- var _type = this.WHERE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:184:29: ( 'where' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:184:31: 'where'
- this.match("where");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WHERE",
-
- // $ANTLR start XQUERY
- mXQUERY: function() {
- try {
- var _type = this.XQUERY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:185:29: ( 'xquery' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:185:31: 'xquery'
- this.match("xquery");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "XQUERY",
-
- // $ANTLR start ALLOWING
- mALLOWING: function() {
- try {
- var _type = this.ALLOWING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:187:29: ( 'allowing' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:187:31: 'allowing'
- this.match("allowing");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ALLOWING",
-
- // $ANTLR start CATCH
- mCATCH: function() {
- try {
- var _type = this.CATCH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:188:29: ( 'catch' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:188:31: 'catch'
- this.match("catch");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CATCH",
-
- // $ANTLR start CONTEXT
- mCONTEXT: function() {
- try {
- var _type = this.CONTEXT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:189:29: ( 'context' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:189:31: 'context'
- this.match("context");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONTEXT",
-
- // $ANTLR start COUNT
- mCOUNT: function() {
- try {
- var _type = this.COUNT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:190:29: ( 'count' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:190:31: 'count'
- this.match("count");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COUNT",
-
- // $ANTLR start DECIMAL_FORMAT
- mDECIMAL_FORMAT: function() {
- try {
- var _type = this.DECIMAL_FORMAT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:191:29: ( 'decimal-format' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:191:31: 'decimal-format'
- this.match("decimal-format");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DECIMAL_FORMAT",
-
- // $ANTLR start DECIMAL_SEPARATOR
- mDECIMAL_SEPARATOR: function() {
- try {
- var _type = this.DECIMAL_SEPARATOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:192:29: ( 'decimal-separator' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:192:31: 'decimal-separator'
- this.match("decimal-separator");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DECIMAL_SEPARATOR",
-
- // $ANTLR start DIGIT
- mDIGIT: function() {
- try {
- var _type = this.DIGIT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:193:29: ( 'digit' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:193:31: 'digit'
- this.match("digit");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DIGIT",
-
- // $ANTLR start END
- mEND: function() {
- try {
- var _type = this.END;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:194:29: ( 'end' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:194:31: 'end'
- this.match("end");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "END",
-
- // $ANTLR start GROUP
- mGROUP: function() {
- try {
- var _type = this.GROUP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:195:29: ( 'group' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:195:31: 'group'
- this.match("group");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GROUP",
-
- // $ANTLR start GROUPING_SEPARATOR
- mGROUPING_SEPARATOR: function() {
- try {
- var _type = this.GROUPING_SEPARATOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:196:29: ( 'grouping-separator' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:196:31: 'grouping-separator'
- this.match("grouping-separator");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GROUPING_SEPARATOR",
-
- // $ANTLR start INFINITY
- mINFINITY: function() {
- try {
- var _type = this.INFINITY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:197:29: ( 'infinity' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:197:31: 'infinity'
- this.match("infinity");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INFINITY",
-
- // $ANTLR start MINUS_SIGN
- mMINUS_SIGN: function() {
- try {
- var _type = this.MINUS_SIGN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:198:29: ( 'minus-sign' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:198:31: 'minus-sign'
- this.match("minus-sign");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MINUS_SIGN",
-
- // $ANTLR start NAMESPACE_NODE
- mNAMESPACE_NODE: function() {
- try {
- var _type = this.NAMESPACE_NODE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:199:29: ( 'namespace-node' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:199:31: 'namespace-node'
- this.match("namespace-node");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NAMESPACE_NODE",
-
- // $ANTLR start NAN
- mNAN: function() {
- try {
- var _type = this.NAN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:200:29: ( 'NaN' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:200:31: 'NaN'
- this.match("NaN");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NAN",
-
- // $ANTLR start NEXT
- mNEXT: function() {
- try {
- var _type = this.NEXT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:201:29: ( 'next' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:201:31: 'next'
- this.match("next");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NEXT",
-
- // $ANTLR start ONLY
- mONLY: function() {
- try {
- var _type = this.ONLY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:202:29: ( 'only' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:202:31: 'only'
- this.match("only");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ONLY",
-
- // $ANTLR start PATTERN_SEPARATOR
- mPATTERN_SEPARATOR: function() {
- try {
- var _type = this.PATTERN_SEPARATOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:203:29: ( 'pattern-separator' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:203:31: 'pattern-separator'
- this.match("pattern-separator");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PATTERN_SEPARATOR",
-
- // $ANTLR start PERCENT
- mPERCENT: function() {
- try {
- var _type = this.PERCENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:204:29: ( 'percent' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:204:31: 'percent'
- this.match("percent");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PERCENT",
-
- // $ANTLR start PER_MILLE
- mPER_MILLE: function() {
- try {
- var _type = this.PER_MILLE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:205:29: ( 'per-mille' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:205:31: 'per-mille'
- this.match("per-mille");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PER_MILLE",
-
- // $ANTLR start PREVIOUS
- mPREVIOUS: function() {
- try {
- var _type = this.PREVIOUS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:206:29: ( 'previous' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:206:31: 'previous'
- this.match("previous");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PREVIOUS",
-
- // $ANTLR start SLIDING
- mSLIDING: function() {
- try {
- var _type = this.SLIDING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:207:29: ( 'sliding' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:207:31: 'sliding'
- this.match("sliding");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SLIDING",
-
- // $ANTLR start START
- mSTART: function() {
- try {
- var _type = this.START;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:208:29: ( 'start' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:208:31: 'start'
- this.match("start");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "START",
-
- // $ANTLR start SWITCH
- mSWITCH: function() {
- try {
- var _type = this.SWITCH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:209:29: ( 'switch' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:209:31: 'switch'
- this.match("switch");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SWITCH",
-
- // $ANTLR start TRY
- mTRY: function() {
- try {
- var _type = this.TRY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:210:29: ( 'try' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:210:31: 'try'
- this.match("try");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TRY",
-
- // $ANTLR start TUMBLING
- mTUMBLING: function() {
- try {
- var _type = this.TUMBLING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:211:29: ( 'tumbling' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:211:31: 'tumbling'
- this.match("tumbling");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TUMBLING",
-
- // $ANTLR start TYPE
- mTYPE: function() {
- try {
- var _type = this.TYPE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:212:29: ( 'type' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:212:31: 'type'
- this.match("type");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TYPE",
-
- // $ANTLR start WHEN
- mWHEN: function() {
- try {
- var _type = this.WHEN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:213:29: ( 'when' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:213:31: 'when'
- this.match("when");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WHEN",
-
- // $ANTLR start WINDOW
- mWINDOW: function() {
- try {
- var _type = this.WINDOW;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:214:29: ( 'window' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:214:31: 'window'
- this.match("window");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WINDOW",
-
- // $ANTLR start ZERO_DIGIT
- mZERO_DIGIT: function() {
- try {
- var _type = this.ZERO_DIGIT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:215:29: ( 'zero-digit' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:215:31: 'zero-digit'
- this.match("zero-digit");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ZERO_DIGIT",
-
- // $ANTLR start AFTER
- mAFTER: function() {
- try {
- var _type = this.AFTER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:217:29: ( 'after' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:217:31: 'after'
- this.match("after");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AFTER",
-
- // $ANTLR start BEFORE
- mBEFORE: function() {
- try {
- var _type = this.BEFORE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:218:29: ( 'before' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:218:31: 'before'
- this.match("before");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BEFORE",
-
- // $ANTLR start COPY
- mCOPY: function() {
- try {
- var _type = this.COPY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:219:29: ( 'copy' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:219:31: 'copy'
- this.match("copy");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COPY",
-
- // $ANTLR start DELETE
- mDELETE: function() {
- try {
- var _type = this.DELETE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:220:29: ( 'delete' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:220:31: 'delete'
- this.match("delete");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DELETE",
-
- // $ANTLR start FIRST
- mFIRST: function() {
- try {
- var _type = this.FIRST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:221:29: ( 'first' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:221:31: 'first'
- this.match("first");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FIRST",
-
- // $ANTLR start INSERT
- mINSERT: function() {
- try {
- var _type = this.INSERT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:222:29: ( 'insert' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:222:31: 'insert'
- this.match("insert");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INSERT",
-
- // $ANTLR start INTO
- mINTO: function() {
- try {
- var _type = this.INTO;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:223:29: ( 'into' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:223:31: 'into'
- this.match("into");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INTO",
-
- // $ANTLR start POSITION
- mPOSITION: function() {
- try {
- var _type = this.POSITION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:224:29: ( 'position' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:224:31: 'position'
- this.match("position");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "POSITION",
-
- // $ANTLR start APPEND
- mAPPEND: function() {
- try {
- var _type = this.APPEND;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:225:29: ( 'append' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:225:31: 'append'
- this.match("append");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "APPEND",
-
- // $ANTLR start LAST
- mLAST: function() {
- try {
- var _type = this.LAST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:226:29: ( 'last' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:226:31: 'last'
- this.match("last");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LAST",
-
- // $ANTLR start MODIFY
- mMODIFY: function() {
- try {
- var _type = this.MODIFY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:227:29: ( 'modify' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:227:31: 'modify'
- this.match("modify");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MODIFY",
-
- // $ANTLR start NODES
- mNODES: function() {
- try {
- var _type = this.NODES;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:228:29: ( 'nodes' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:228:31: 'nodes'
- this.match("nodes");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NODES",
-
- // $ANTLR start RENAME
- mRENAME: function() {
- try {
- var _type = this.RENAME;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:229:29: ( 'rename' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:229:31: 'rename'
- this.match("rename");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RENAME",
-
- // $ANTLR start REPLACE
- mREPLACE: function() {
- try {
- var _type = this.REPLACE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:230:29: ( 'replace' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:230:31: 'replace'
- this.match("replace");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "REPLACE",
-
- // $ANTLR start REVALIDATION
- mREVALIDATION: function() {
- try {
- var _type = this.REVALIDATION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:231:29: ( 'revalidation' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:231:31: 'revalidation'
- this.match("revalidation");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "REVALIDATION",
-
- // $ANTLR start SKIP
- mSKIP: function() {
- try {
- var _type = this.SKIP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:232:29: ( 'skip' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:232:31: 'skip'
- this.match("skip");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SKIP",
-
- // $ANTLR start UPDATING
- mUPDATING: function() {
- try {
- var _type = this.UPDATING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:233:29: ( 'updating' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:233:31: 'updating'
- this.match("updating");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "UPDATING",
-
- // $ANTLR start VALUE
- mVALUE: function() {
- try {
- var _type = this.VALUE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:234:29: ( 'value' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:234:31: 'value'
- this.match("value");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "VALUE",
-
- // $ANTLR start WITH
- mWITH: function() {
- try {
- var _type = this.WITH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:235:29: ( 'with' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:235:31: 'with'
- this.match("with");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WITH",
-
- // $ANTLR start ALL
- mALL: function() {
- try {
- var _type = this.ALL;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:237:29: ( 'all' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:237:31: 'all'
- this.match("all");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ALL",
-
- // $ANTLR start ANY
- mANY: function() {
- try {
- var _type = this.ANY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:238:29: ( 'any' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:238:31: 'any'
- this.match("any");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ANY",
-
- // $ANTLR start CONTAINS
- mCONTAINS: function() {
- try {
- var _type = this.CONTAINS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:239:29: ( 'contains' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:239:31: 'contains'
- this.match("contains");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONTAINS",
-
- // $ANTLR start CONTENT
- mCONTENT: function() {
- try {
- var _type = this.CONTENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:240:29: ( 'content' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:240:31: 'content'
- this.match("content");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONTENT",
-
- // $ANTLR start DIACRITICS
- mDIACRITICS: function() {
- try {
- var _type = this.DIACRITICS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:241:29: ( 'diacritics' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:241:31: 'diacritics'
- this.match("diacritics");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DIACRITICS",
-
- // $ANTLR start DIFFERENT
- mDIFFERENT: function() {
- try {
- var _type = this.DIFFERENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:242:29: ( 'different' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:242:31: 'different'
- this.match("different");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DIFFERENT",
-
- // $ANTLR start DISTANCE
- mDISTANCE: function() {
- try {
- var _type = this.DISTANCE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:243:29: ( 'distance' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:243:31: 'distance'
- this.match("distance");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DISTANCE",
-
- // $ANTLR start ENTIRE
- mENTIRE: function() {
- try {
- var _type = this.ENTIRE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:244:29: ( 'entire' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:244:31: 'entire'
- this.match("entire");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ENTIRE",
-
- // $ANTLR start EXACTLY
- mEXACTLY: function() {
- try {
- var _type = this.EXACTLY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:245:29: ( 'exactly' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:245:31: 'exactly'
- this.match("exactly");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EXACTLY",
-
- // $ANTLR start FROM
- mFROM: function() {
- try {
- var _type = this.FROM;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:246:29: ( 'from' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:246:31: 'from'
- this.match("from");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FROM",
-
- // $ANTLR start FT_OPTION
- mFT_OPTION: function() {
- try {
- var _type = this.FT_OPTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:247:29: ( 'ft-option' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:247:31: 'ft-option'
- this.match("ft-option");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FT_OPTION",
-
- // $ANTLR start FTAND
- mFTAND: function() {
- try {
- var _type = this.FTAND;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:248:29: ( 'ftand' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:248:31: 'ftand'
- this.match("ftand");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FTAND",
-
- // $ANTLR start FTNOT
- mFTNOT: function() {
- try {
- var _type = this.FTNOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:249:29: ( 'ftnot' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:249:31: 'ftnot'
- this.match("ftnot");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FTNOT",
-
- // $ANTLR start FTOR
- mFTOR: function() {
- try {
- var _type = this.FTOR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:250:29: ( 'ftor' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:250:31: 'ftor'
- this.match("ftor");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FTOR",
-
- // $ANTLR start INSENSITIVE
- mINSENSITIVE: function() {
- try {
- var _type = this.INSENSITIVE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:251:29: ( 'insensitive' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:251:31: 'insensitive'
- this.match("insensitive");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INSENSITIVE",
-
- // $ANTLR start LANGUAGE
- mLANGUAGE: function() {
- try {
- var _type = this.LANGUAGE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:252:29: ( 'language' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:252:31: 'language'
- this.match("language");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LANGUAGE",
-
- // $ANTLR start LEVELS
- mLEVELS: function() {
- try {
- var _type = this.LEVELS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:253:29: ( 'levels' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:253:31: 'levels'
- this.match("levels");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LEVELS",
-
- // $ANTLR start LOWERCASE
- mLOWERCASE: function() {
- try {
- var _type = this.LOWERCASE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:254:29: ( 'lowercase' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:254:31: 'lowercase'
- this.match("lowercase");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LOWERCASE",
-
- // $ANTLR start MOST
- mMOST: function() {
- try {
- var _type = this.MOST;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:255:29: ( 'most' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:255:31: 'most'
- this.match("most");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MOST",
-
- // $ANTLR start NO
- mNO: function() {
- try {
- var _type = this.NO;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:256:29: ( 'no' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:256:31: 'no'
- this.match("no");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NO",
-
- // $ANTLR start NOT
- mNOT: function() {
- try {
- var _type = this.NOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:257:29: ( 'not' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:257:31: 'not'
- this.match("not");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NOT",
-
- // $ANTLR start OCCURS
- mOCCURS: function() {
- try {
- var _type = this.OCCURS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:258:29: ( 'occurs' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:258:31: 'occurs'
- this.match("occurs");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "OCCURS",
-
- // $ANTLR start PARAGRAPH
- mPARAGRAPH: function() {
- try {
- var _type = this.PARAGRAPH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:259:29: ( 'paragraph' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:259:31: 'paragraph'
- this.match("paragraph");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PARAGRAPH",
-
- // $ANTLR start PARAGRAPHS
- mPARAGRAPHS: function() {
- try {
- var _type = this.PARAGRAPHS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:260:29: ( 'paragraphs' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:260:31: 'paragraphs'
- this.match("paragraphs");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PARAGRAPHS",
-
- // $ANTLR start PHRASE
- mPHRASE: function() {
- try {
- var _type = this.PHRASE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:261:29: ( 'phrase' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:261:31: 'phrase'
- this.match("phrase");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PHRASE",
-
- // $ANTLR start RELATIONSHIP
- mRELATIONSHIP: function() {
- try {
- var _type = this.RELATIONSHIP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:262:29: ( 'relationship' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:262:31: 'relationship'
- this.match("relationship");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RELATIONSHIP",
-
- // $ANTLR start SAME
- mSAME: function() {
- try {
- var _type = this.SAME;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:263:29: ( 'same' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:263:31: 'same'
- this.match("same");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SAME",
-
- // $ANTLR start SCORE
- mSCORE: function() {
- try {
- var _type = this.SCORE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:264:29: ( 'score' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:264:31: 'score'
- this.match("score");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SCORE",
-
- // $ANTLR start SENSITIVE
- mSENSITIVE: function() {
- try {
- var _type = this.SENSITIVE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:265:29: ( 'sensitive' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:265:31: 'sensitive'
- this.match("sensitive");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SENSITIVE",
-
- // $ANTLR start SENTENCE
- mSENTENCE: function() {
- try {
- var _type = this.SENTENCE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:266:29: ( 'sentence' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:266:31: 'sentence'
- this.match("sentence");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SENTENCE",
-
- // $ANTLR start SENTENCES
- mSENTENCES: function() {
- try {
- var _type = this.SENTENCES;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:267:29: ( 'sentences' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:267:31: 'sentences'
- this.match("sentences");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SENTENCES",
-
- // $ANTLR start STEMMING
- mSTEMMING: function() {
- try {
- var _type = this.STEMMING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:268:29: ( 'stemming' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:268:31: 'stemming'
- this.match("stemming");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STEMMING",
-
- // $ANTLR start STOP
- mSTOP: function() {
- try {
- var _type = this.STOP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:269:29: ( 'stop' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:269:31: 'stop'
- this.match("stop");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STOP",
-
- // $ANTLR start THESAURUS
- mTHESAURUS: function() {
- try {
- var _type = this.THESAURUS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:270:29: ( 'thesaurus' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:270:31: 'thesaurus'
- this.match("thesaurus");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "THESAURUS",
-
- // $ANTLR start TIMES
- mTIMES: function() {
- try {
- var _type = this.TIMES;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:271:29: ( 'times' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:271:31: 'times'
- this.match("times");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "TIMES",
-
- // $ANTLR start UPPERCASE
- mUPPERCASE: function() {
- try {
- var _type = this.UPPERCASE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:272:29: ( 'uppercase' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:272:31: 'uppercase'
- this.match("uppercase");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "UPPERCASE",
-
- // $ANTLR start USING
- mUSING: function() {
- try {
- var _type = this.USING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:273:29: ( 'using' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:273:31: 'using'
- this.match("using");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "USING",
-
- // $ANTLR start WEIGHT
- mWEIGHT: function() {
- try {
- var _type = this.WEIGHT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:274:29: ( 'weight' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:274:31: 'weight'
- this.match("weight");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WEIGHT",
-
- // $ANTLR start WILDCARDS
- mWILDCARDS: function() {
- try {
- var _type = this.WILDCARDS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:275:29: ( 'wildcards' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:275:31: 'wildcards'
- this.match("wildcards");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WILDCARDS",
-
- // $ANTLR start WITHOUT
- mWITHOUT: function() {
- try {
- var _type = this.WITHOUT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:276:29: ( 'without' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:276:31: 'without'
- this.match("without");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WITHOUT",
-
- // $ANTLR start WORD
- mWORD: function() {
- try {
- var _type = this.WORD;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:277:29: ( 'word' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:277:31: 'word'
- this.match("word");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WORD",
-
- // $ANTLR start WORDS
- mWORDS: function() {
- try {
- var _type = this.WORDS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:278:29: ( 'words' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:278:31: 'words'
- this.match("words");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WORDS",
-
- // $ANTLR start BREAK
- mBREAK: function() {
- try {
- var _type = this.BREAK;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:280:29: ( 'break' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:280:31: 'break'
- this.match("break");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BREAK",
-
- // $ANTLR start CONTINUE
- mCONTINUE: function() {
- try {
- var _type = this.CONTINUE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:281:29: ( 'continue' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:281:31: 'continue'
- this.match("continue");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONTINUE",
-
- // $ANTLR start EXIT
- mEXIT: function() {
- try {
- var _type = this.EXIT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:282:29: ( 'exit' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:282:31: 'exit'
- this.match("exit");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EXIT",
-
- // $ANTLR start LOOP
- mLOOP: function() {
- try {
- var _type = this.LOOP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:283:29: ( 'loop' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:283:31: 'loop'
- this.match("loop");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LOOP",
-
- // $ANTLR start RETURNING
- mRETURNING: function() {
- try {
- var _type = this.RETURNING;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:284:29: ( 'returning' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:284:31: 'returning'
- this.match("returning");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RETURNING",
-
- // $ANTLR start WHILE
- mWHILE: function() {
- try {
- var _type = this.WHILE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:285:29: ( 'while' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:285:31: 'while'
- this.match("while");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "WHILE",
-
- // $ANTLR start CHECK
- mCHECK: function() {
- try {
- var _type = this.CHECK;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:287:29: ( 'check' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:287:31: 'check'
- this.match("check");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CHECK",
-
- // $ANTLR start COLLECTION
- mCOLLECTION: function() {
- try {
- var _type = this.COLLECTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:288:29: ( 'collection' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:288:31: 'collection'
- this.match("collection");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COLLECTION",
-
- // $ANTLR start CONSTRAINT
- mCONSTRAINT: function() {
- try {
- var _type = this.CONSTRAINT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:289:29: ( 'constraint' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:289:31: 'constraint'
- this.match("constraint");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONSTRAINT",
-
- // $ANTLR start FOREACH
- mFOREACH: function() {
- try {
- var _type = this.FOREACH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:290:29: ( 'foreach' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:290:31: 'foreach'
- this.match("foreach");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FOREACH",
-
- // $ANTLR start FOREIGN
- mFOREIGN: function() {
- try {
- var _type = this.FOREIGN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:291:29: ( 'foreign' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:291:31: 'foreign'
- this.match("foreign");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "FOREIGN",
-
- // $ANTLR start INDEX
- mINDEX: function() {
- try {
- var _type = this.INDEX;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:292:29: ( 'index' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:292:31: 'index'
- this.match("index");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INDEX",
-
- // $ANTLR start INTEGRITY
- mINTEGRITY: function() {
- try {
- var _type = this.INTEGRITY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:293:29: ( 'integrity' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:293:31: 'integrity'
- this.match("integrity");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "INTEGRITY",
-
- // $ANTLR start KEY
- mKEY: function() {
- try {
- var _type = this.KEY;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:294:29: ( 'key' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:294:31: 'key'
- this.match("key");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "KEY",
-
- // $ANTLR start ON
- mON: function() {
- try {
- var _type = this.ON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:295:29: ( 'on' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:295:31: 'on'
- this.match("on");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ON",
-
- // $ANTLR start UNIQUE
- mUNIQUE: function() {
- try {
- var _type = this.UNIQUE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:296:29: ( 'unique' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:296:31: 'unique'
- this.match("unique");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "UNIQUE",
-
- // $ANTLR start AMP_ER
- mAMP_ER: function() {
- try {
- var _type = this.AMP_ER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:299:9: ( 'amp' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:299:11: 'amp'
- this.match("amp");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AMP_ER",
-
- // $ANTLR start APOS_ER
- mAPOS_ER: function() {
- try {
- var _type = this.APOS_ER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:300:9: ( 'apos' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:300:11: 'apos'
- this.match("apos");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "APOS_ER",
-
- // $ANTLR start QUOT_ER
- mQUOT_ER: function() {
- try {
- var _type = this.QUOT_ER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:301:9: ( 'quot' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:301:11: 'quot'
- this.match("quot");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "QUOT_ER",
-
- // $ANTLR start CONCAT
- mCONCAT: function() {
- try {
- var _type = this.CONCAT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:308:25: ( '||' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:308:27: '||'
- this.match("||");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CONCAT",
-
- // $ANTLR start LPAREN
- mLPAREN: function() {
- try {
- var _type = this.LPAREN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:309:25: ( '(' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:309:27: '('
- this.match('(');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LPAREN",
-
- // $ANTLR start RPAREN
- mRPAREN: function() {
- try {
- var _type = this.RPAREN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:310:25: ( ')' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:310:27: ')'
- this.match(')');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RPAREN",
-
- // $ANTLR start DOLLAR
- mDOLLAR: function() {
- try {
- var _type = this.DOLLAR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:311:25: ( '$' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:311:27: '$'
- this.match('$');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DOLLAR",
-
- // $ANTLR start L_UNION_BRACKET
- mL_UNION_BRACKET: function() {
- try {
- var _type = this.L_UNION_BRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:312:25: ( '{|' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:312:27: '{|'
- this.match("{|");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_UNION_BRACKET",
-
- // $ANTLR start R_UNION_BRACKET
- mR_UNION_BRACKET: function() {
- try {
- var _type = this.R_UNION_BRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:313:25: ( '|}' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:313:27: '|}'
- this.match("|}");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "R_UNION_BRACKET",
-
- // $ANTLR start LBRACKET
- mLBRACKET: function() {
- try {
- var _type = this.LBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:316:25: ( '{' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:316:27: '{'
- this.match('{');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LBRACKET",
-
- // $ANTLR start RBRACKET
- mRBRACKET: function() {
- try {
- var _type = this.RBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:317:25: ( '}' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:317:27: '}'
- this.match('}');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RBRACKET",
-
- // $ANTLR start LSQUARE
- mLSQUARE: function() {
- try {
- var _type = this.LSQUARE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:318:25: ( '[' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:318:27: '['
- this.match('[');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LSQUARE",
-
- // $ANTLR start RSQUARE
- mRSQUARE: function() {
- try {
- var _type = this.RSQUARE;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:319:25: ( ']' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:319:27: ']'
- this.match(']');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RSQUARE",
-
- // $ANTLR start EQUAL
- mEQUAL: function() {
- try {
- var _type = this.EQUAL;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:320:25: ( '=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:320:27: '='
- this.match('=');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EQUAL",
-
- // $ANTLR start BIND
- mBIND: function() {
- try {
- var _type = this.BIND;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:321:25: ( ':=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:321:27: ':='
- this.match(":=");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BIND",
-
- // $ANTLR start NOTEQUAL
- mNOTEQUAL: function() {
- try {
- var _type = this.NOTEQUAL;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:322:25: ( '!=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:322:27: '!='
- this.match("!=");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "NOTEQUAL",
-
- // $ANTLR start ANN_PERCENT
- mANN_PERCENT: function() {
- try {
- var _type = this.ANN_PERCENT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:323:25: ( '%' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:323:27: '%'
- this.match('%');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ANN_PERCENT",
-
- // $ANTLR start HASH
- mHASH: function() {
- try {
- var _type = this.HASH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:324:25: ( '#' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:324:27: '#'
- this.match('#');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "HASH",
-
- // $ANTLR start AMP
- mAMP: function() {
- try {
- var _type = this.AMP;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:325:25: ( '&' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:325:27: '&'
- this.match('&');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "AMP",
-
- // $ANTLR start COMMA
- mCOMMA: function() {
- try {
- var _type = this.COMMA;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:326:25: ( ',' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:326:27: ','
- this.match(',');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COMMA",
-
- // $ANTLR start QUESTION
- mQUESTION: function() {
- try {
- var _type = this.QUESTION;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:327:25: ( '?' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:327:27: '?'
- this.match('?');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "QUESTION",
-
- // $ANTLR start STAR
- mSTAR: function() {
- try {
- var _type = this.STAR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:328:25: ( '*' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:328:27: '*'
- this.match('*');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "STAR",
-
- // $ANTLR start PLUS
- mPLUS: function() {
- try {
- var _type = this.PLUS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:329:25: ( '+' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:329:27: '+'
- this.match('+');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PLUS",
-
- // $ANTLR start MINUS
- mMINUS: function() {
- try {
- var _type = this.MINUS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:330:25: ( '-' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:330:27: '-'
- this.match('-');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "MINUS",
-
- // $ANTLR start SMALLER
- mSMALLER: function() {
- try {
- var _type = this.SMALLER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:331:25: ( '<' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:331:27: '<'
- this.match('<');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SMALLER",
-
- // $ANTLR start GREATER
- mGREATER: function() {
- try {
- var _type = this.GREATER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:332:25: ( '>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:332:27: '>'
- this.match('>');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GREATER",
-
- // $ANTLR start SMALLEREQ
- mSMALLEREQ: function() {
- try {
- var _type = this.SMALLEREQ;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:333:25: ( '<=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:333:27: '<='
- this.match("<=");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SMALLEREQ",
-
- // $ANTLR start GREATEREQ
- mGREATEREQ: function() {
- try {
- var _type = this.GREATEREQ;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:334:25: ( '>=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:334:27: '>='
- this.match(">=");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GREATEREQ",
-
- // $ANTLR start SMALLER_SMALLER
- mSMALLER_SMALLER: function() {
- try {
- var _type = this.SMALLER_SMALLER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:335:25: ( '<<' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:335:27: '<<'
- this.match("<<");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SMALLER_SMALLER",
-
- // $ANTLR start GREATER_GREATER
- mGREATER_GREATER: function() {
- try {
- var _type = this.GREATER_GREATER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:336:25: ( '>>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:336:27: '>>'
- this.match(">>");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GREATER_GREATER",
-
- // $ANTLR start SLASH
- mSLASH: function() {
- try {
- var _type = this.SLASH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:337:25: ( '/' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:337:27: '/'
- this.match('/');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SLASH",
-
- // $ANTLR start SLASH_SLASH
- mSLASH_SLASH: function() {
- try {
- var _type = this.SLASH_SLASH;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:338:25: ( '//' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:338:27: '//'
- this.match("//");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SLASH_SLASH",
-
- // $ANTLR start BANG
- mBANG: function() {
- try {
- var _type = this.BANG;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:339:25: ( '!' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:339:27: '!'
- this.match('!');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "BANG",
-
- // $ANTLR start DOT
- mDOT: function() {
- try {
- var _type = this.DOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:340:25: ( '.' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:340:27: '.'
- this.match('.');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DOT",
-
- // $ANTLR start DOT_DOT
- mDOT_DOT: function() {
- try {
- var _type = this.DOT_DOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:341:25: ( '..' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:341:27: '..'
- this.match("..");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "DOT_DOT",
-
- // $ANTLR start COLON
- mCOLON: function() {
- try {
- var _type = this.COLON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:342:25: ( ':' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:342:27: ':'
- this.match(':');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COLON",
-
- // $ANTLR start COLON_COLON
- mCOLON_COLON: function() {
- try {
- var _type = this.COLON_COLON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:343:25: ( '::' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:343:27: '::'
- this.match("::");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COLON_COLON",
-
- // $ANTLR start EMPTY_CLOSE_TAG
- mEMPTY_CLOSE_TAG: function() {
- try {
- var _type = this.EMPTY_CLOSE_TAG;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:344:25: ( '/>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:344:27: '/>'
- this.match("/>");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EMPTY_CLOSE_TAG",
-
- // $ANTLR start CLOSE_TAG
- mCLOSE_TAG: function() {
- try {
- var _type = this.CLOSE_TAG;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:345:25: ( '</' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:345:27: '</'
- this.match("</");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CLOSE_TAG",
-
- // $ANTLR start SEMICOLON
- mSEMICOLON: function() {
- try {
- var _type = this.SEMICOLON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:346:25: ( ';' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:346:27: ';'
- this.match(';');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SEMICOLON",
-
- // $ANTLR start VBAR
- mVBAR: function() {
- try {
- var _type = this.VBAR;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:347:25: ( '|' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:347:27: '|'
- this.match('|');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "VBAR",
-
- // $ANTLR start PRAGMA_START
- mPRAGMA_START: function() {
- try {
- var _type = this.PRAGMA_START;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:348:25: ( '(#' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:348:27: '(#'
- this.match("(#");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PRAGMA_START",
-
- // $ANTLR start PRAGMA_END
- mPRAGMA_END: function() {
- try {
- var _type = this.PRAGMA_END;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:349:25: ( '#)' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:349:27: '#)'
- this.match("#)");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PRAGMA_END",
-
- // $ANTLR start XML_COMMENT_START
- mXML_COMMENT_START: function() {
- try {
- var _type = this.XML_COMMENT_START;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:350:25: ( '<!--' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:350:27: '<!--'
- this.match("<!--");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "XML_COMMENT_START",
-
- // $ANTLR start XML_COMMENT_END
- mXML_COMMENT_END: function() {
- try {
- var _type = this.XML_COMMENT_END;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:351:25: ( '-->' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:351:27: '-->'
- this.match("-->");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "XML_COMMENT_END",
-
- // $ANTLR start PI_START
- mPI_START: function() {
- try {
- var _type = this.PI_START;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:352:25: ( '<?' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:352:27: '<?'
- this.match("<?");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PI_START",
-
- // $ANTLR start PI_END
- mPI_END: function() {
- try {
- var _type = this.PI_END;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:353:25: ( '?>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:353:27: '?>'
- this.match("?>");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "PI_END",
-
- // $ANTLR start ATTR_SIGN
- mATTR_SIGN: function() {
- try {
- var _type = this.ATTR_SIGN;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:354:25: ( '@' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:354:27: '@'
- this.match('@');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ATTR_SIGN",
-
- // $ANTLR start Q
- mQ: function() {
- try {
- var _type = this.Q;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:355:25: ( 'Q' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:355:27: 'Q'
- this.match('Q');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "Q",
-
- // $ANTLR start CHARREF_DEC
- mCHARREF_DEC: function() {
- try {
- var _type = this.CHARREF_DEC;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:356:25: ( '&#' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:356:27: '&#'
- this.match("&#");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CHARREF_DEC",
-
- // $ANTLR start CHARREF_HEX
- mCHARREF_HEX: function() {
- try {
- var _type = this.CHARREF_HEX;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:357:25: ( '&#x' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:357:27: '&#x'
- this.match("&#x");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CHARREF_HEX",
-
- // $ANTLR start APOS
- mAPOS: function() {
- try {
- var _type = this.APOS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:358:25: ( '\\'' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:358:27: '\\''
- this.match('\'');
- if (!this.inStr) this.inStr = true;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "APOS",
-
- // $ANTLR start QUOT
- mQUOT: function() {
- try {
- var _type = this.QUOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:359:25: ( '\"' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:359:27: '\"'
- this.match('\"');
- if (!this.inStr) this.inStr = true;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "QUOT",
-
- // $ANTLR start L_NCName
- mL_NCName: function() {
- try {
- var _type = this.L_NCName;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:9: ( NCNameStartChar ( NCNameChar )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:13: NCNameStartChar ( NCNameChar )*
- this.mNCNameStartChar();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:29: ( NCNameChar )*
- loop1:
- do {
- var alt1=2;
- var LA1_0 = this.input.LA(1);
-
- if ( ((LA1_0>='-' && LA1_0<='.')||(LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) {
- alt1=1;
- }
-
-
- switch (alt1) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:29: NCNameChar
- this.mNCNameChar();
-
-
- break;
-
- default :
- break loop1;
- }
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_NCName",
-
- // $ANTLR start Letter
- mLetter: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:366:29: ( 'a' .. 'z' | 'A' .. 'Z' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "Letter",
-
- // $ANTLR start HexLetter
- mHexLetter: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:367:29: ( 'a' .. 'f' | 'A' .. 'F' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "HexLetter",
-
- // $ANTLR start Digit
- mDigit: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:368:29: ( '0' .. '9' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:368:31: '0' .. '9'
- this.matchRange('0','9');
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "Digit",
-
- // $ANTLR start Digits
- mDigits: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:29: ( ( Digit )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: ( Digit )+
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: ( Digit )+
- var cnt2=0;
- loop2:
- do {
- var alt2=2;
- var LA2_0 = this.input.LA(1);
-
- if ( ((LA2_0>='0' && LA2_0<='9')) ) {
- alt2=1;
- }
-
-
- switch (alt2) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: Digit
- this.mDigit();
-
-
- break;
-
- default :
- if ( cnt2 >= 1 ) {
- break loop2;
- }
- var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
- throw eee;
- }
- cnt2++;
- } while (true);
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "Digits",
-
- // $ANTLR start NCNameStartChar
- mNCNameStartChar: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:371:29: ( Letter | '_' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "NCNameStartChar",
-
- // $ANTLR start NCNameChar
- mNCNameChar: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:372:29: ( Letter | Digit | '.' | '-' | '_' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='-' && this.input.LA(1)<='.')||(this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "NCNameChar",
-
- // $ANTLR start S
- mS: function() {
- try {
- var _type = this.S;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:9: ( ( '\\t' | ' ' | '\\n' | '\\r' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
- var cnt3=0;
- loop3:
- do {
- var alt3=2;
- var LA3_0 = this.input.LA(1);
-
- if ( ((LA3_0>='\t' && LA3_0<='\n')||LA3_0=='\r'||LA3_0==' ') ) {
- alt3=1;
- }
-
-
- switch (alt3) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt3 >= 1 ) {
- break loop3;
- }
- var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
- throw eee;
- }
- cnt3++;
- } while (true);
-
- _channel = HIDDEN;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "S",
-
- // $ANTLR start SU
- mSU: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:9: ( ( '\\t' | ' ' | '\\n' | '\\r' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
- var cnt4=0;
- loop4:
- do {
- var alt4=2;
- var LA4_0 = this.input.LA(1);
-
- if ( ((LA4_0>='\t' && LA4_0<='\n')||LA4_0=='\r'||LA4_0==' ') ) {
- alt4=1;
- }
-
-
- switch (alt4) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt4 >= 1 ) {
- break loop4;
- }
- var eee = new org.antlr.runtime.EarlyExitException(4, this.input);
- throw eee;
- }
- cnt4++;
- } while (true);
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "SU",
-
- // $ANTLR start L_Pragma
- mL_Pragma: function() {
- try {
- var _type = this.L_Pragma;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:9: ( PRAGMA_START ( SU )? L_NCName COLON L_NCName ( SU ( options {greedy=false; } : . )* )? PRAGMA_END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:11: PRAGMA_START ( SU )? L_NCName COLON L_NCName ( SU ( options {greedy=false; } : . )* )? PRAGMA_END
- this.mPRAGMA_START();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:24: ( SU )?
- var alt5=2;
- var LA5_0 = this.input.LA(1);
-
- if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||LA5_0==' ') ) {
- alt5=1;
- }
- switch (alt5) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:24: SU
- this.mSU();
-
-
- break;
-
- }
-
- this.mL_NCName();
- this.mCOLON();
- this.mL_NCName();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:52: ( SU ( options {greedy=false; } : . )* )?
- var alt7=2;
- var LA7_0 = this.input.LA(1);
-
- if ( ((LA7_0>='\t' && LA7_0<='\n')||LA7_0=='\r'||LA7_0==' ') ) {
- alt7=1;
- }
- switch (alt7) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:53: SU ( options {greedy=false; } : . )*
- this.mSU();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:56: ( options {greedy=false; } : . )*
- loop6:
- do {
- var alt6=2;
- var LA6_0 = this.input.LA(1);
-
- if ( (LA6_0=='#') ) {
- var LA6_1 = this.input.LA(2);
-
- if ( (LA6_1==')') ) {
- alt6=2;
- }
- else if ( ((LA6_1>='\u0000' && LA6_1<='(')||(LA6_1>='*' && LA6_1<='\uFFFF')) ) {
- alt6=1;
- }
-
-
- }
- else if ( ((LA6_0>='\u0000' && LA6_0<='\"')||(LA6_0>='$' && LA6_0<='\uFFFF')) ) {
- alt6=1;
- }
-
-
- switch (alt6) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:83: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop6;
- }
- } while (true);
-
-
-
- break;
-
- }
-
- this.mPRAGMA_END();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_Pragma",
-
- // $ANTLR start L_DirCommentConstructor
- mL_DirCommentConstructor: function() {
- try {
- var _type = this.L_DirCommentConstructor;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:9: ( XML_COMMENT_START ( options {greedy=false; } : ( . )* ) XML_COMMENT_END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:11: XML_COMMENT_START ( options {greedy=false; } : ( . )* ) XML_COMMENT_END
- this.mXML_COMMENT_START();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:29: ( options {greedy=false; } : ( . )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: ( . )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: ( . )*
- loop8:
- do {
- var alt8=2;
- var LA8_0 = this.input.LA(1);
-
- if ( (LA8_0=='-') ) {
- var LA8_1 = this.input.LA(2);
-
- if ( (LA8_1=='-') ) {
- var LA8_3 = this.input.LA(3);
-
- if ( (LA8_3=='>') ) {
- alt8=2;
- }
- else if ( ((LA8_3>='\u0000' && LA8_3<='=')||(LA8_3>='?' && LA8_3<='\uFFFF')) ) {
- alt8=1;
- }
-
-
- }
- else if ( ((LA8_1>='\u0000' && LA8_1<=',')||(LA8_1>='.' && LA8_1<='\uFFFF')) ) {
- alt8=1;
- }
-
-
- }
- else if ( ((LA8_0>='\u0000' && LA8_0<=',')||(LA8_0>='.' && LA8_0<='\uFFFF')) ) {
- alt8=1;
- }
-
-
- switch (alt8) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop8;
- }
- } while (true);
-
-
-
-
- this.mXML_COMMENT_END();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DirCommentConstructor",
-
- // $ANTLR start L_DirPIConstructor
- mL_DirPIConstructor: function() {
- try {
- var _type = this.L_DirPIConstructor;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:9: ( PI_START ( SU )? L_NCName ( SU ( options {greedy=false; } : ( . )* ) )? PI_END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:11: PI_START ( SU )? L_NCName ( SU ( options {greedy=false; } : ( . )* ) )? PI_END
- this.mPI_START();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:20: ( SU )?
- var alt9=2;
- var LA9_0 = this.input.LA(1);
-
- if ( ((LA9_0>='\t' && LA9_0<='\n')||LA9_0=='\r'||LA9_0==' ') ) {
- alt9=1;
- }
- switch (alt9) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:20: SU
- this.mSU();
-
-
- break;
-
- }
-
- this.mL_NCName();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:33: ( SU ( options {greedy=false; } : ( . )* ) )?
- var alt11=2;
- var LA11_0 = this.input.LA(1);
-
- if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
- alt11=1;
- }
- switch (alt11) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:34: SU ( options {greedy=false; } : ( . )* )
- this.mSU();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:36: ( options {greedy=false; } : ( . )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: ( . )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: ( . )*
- loop10:
- do {
- var alt10=2;
- var LA10_0 = this.input.LA(1);
-
- if ( (LA10_0=='?') ) {
- var LA10_1 = this.input.LA(2);
-
- if ( (LA10_1=='>') ) {
- alt10=2;
- }
- else if ( ((LA10_1>='\u0000' && LA10_1<='=')||(LA10_1>='?' && LA10_1<='\uFFFF')) ) {
- alt10=1;
- }
-
-
- }
- else if ( ((LA10_0>='\u0000' && LA10_0<='>')||(LA10_0>='@' && LA10_0<='\uFFFF')) ) {
- alt10=1;
- }
-
-
- switch (alt10) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop10;
- }
- } while (true);
-
-
-
-
-
-
- break;
-
- }
-
- this.mPI_END();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DirPIConstructor",
-
- // $ANTLR start L_IntegerLiteral
- mL_IntegerLiteral: function() {
- try {
- var _type = this.L_IntegerLiteral;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:416:9: ( Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:416:13: Digits
- this.mDigits();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_IntegerLiteral",
-
- // $ANTLR start L_DecimalLiteral
- mL_DecimalLiteral: function() {
- try {
- var _type = this.L_DecimalLiteral;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:9: ( ( '.' Digits ) | ( Digits '.' ( Digit )* ) )
- var alt13=2;
- var LA13_0 = this.input.LA(1);
-
- if ( (LA13_0=='.') ) {
- alt13=1;
- }
- else if ( ((LA13_0>='0' && LA13_0<='9')) ) {
- alt13=2;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 13, 0, this.input);
-
- throw nvae;
- }
- switch (alt13) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:11: ( '.' Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:11: ( '.' Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:12: '.' Digits
- this.match('.');
- this.mDigits();
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:26: ( Digits '.' ( Digit )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:26: ( Digits '.' ( Digit )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:27: Digits '.' ( Digit )*
- this.mDigits();
- this.match('.');
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:38: ( Digit )*
- loop12:
- do {
- var alt12=2;
- var LA12_0 = this.input.LA(1);
-
- if ( ((LA12_0>='0' && LA12_0<='9')) ) {
- alt12=1;
- }
-
-
- switch (alt12) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:38: Digit
- this.mDigit();
-
-
- break;
-
- default :
- break loop12;
- }
- } while (true);
-
-
-
-
-
-
- break;
-
- }
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DecimalLiteral",
-
- // $ANTLR start L_DoubleLiteral
- mL_DoubleLiteral: function() {
- try {
- var _type = this.L_DoubleLiteral;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:9: ( ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) ) ( 'e' | 'E' ) ( '+' | '-' )? Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:11: ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) ) ( 'e' | 'E' ) ( '+' | '-' )? Digits
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:11: ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) )
- var alt16=2;
- var LA16_0 = this.input.LA(1);
-
- if ( (LA16_0=='.') ) {
- alt16=1;
- }
- else if ( ((LA16_0>='0' && LA16_0<='9')) ) {
- alt16=2;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 16, 0, this.input);
-
- throw nvae;
- }
- switch (alt16) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:12: ( '.' Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:12: ( '.' Digits )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:13: '.' Digits
- this.match('.');
- this.mDigits();
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:27: ( Digits ( '.' ( Digit )* )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:27: ( Digits ( '.' ( Digit )* )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:28: Digits ( '.' ( Digit )* )?
- this.mDigits();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:35: ( '.' ( Digit )* )?
- var alt15=2;
- var LA15_0 = this.input.LA(1);
-
- if ( (LA15_0=='.') ) {
- alt15=1;
- }
- switch (alt15) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:36: '.' ( Digit )*
- this.match('.');
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:40: ( Digit )*
- loop14:
- do {
- var alt14=2;
- var LA14_0 = this.input.LA(1);
-
- if ( ((LA14_0>='0' && LA14_0<='9')) ) {
- alt14=1;
- }
-
-
- switch (alt14) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:40: Digit
- this.mDigit();
-
-
- break;
-
- default :
- break loop14;
- }
- } while (true);
-
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.input.LA(1)=='E'||this.input.LA(1)=='e' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:63: ( '+' | '-' )?
- var alt17=2;
- var LA17_0 = this.input.LA(1);
-
- if ( (LA17_0=='+'||LA17_0=='-') ) {
- alt17=1;
- }
- switch (alt17) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
- if ( this.input.LA(1)=='+'||this.input.LA(1)=='-' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- }
-
- this.mDigits();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DoubleLiteral",
-
- // $ANTLR start L_Comment
- mL_Comment: function() {
- try {
- var _type = this.L_Comment;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:9: ({...}? => '(:' ( options {greedy=false; } : L_Comment | . )* ':)' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:11: {...}? => '(:' ( options {greedy=false; } : L_Comment | . )* ':)'
- if ( !((!this.inStr)) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_Comment", "!this.inStr");
- }
- this.match("(:");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:33: ( options {greedy=false; } : L_Comment | . )*
- loop18:
- do {
- var alt18=3;
- var LA18_0 = this.input.LA(1);
-
- if ( (LA18_0==':') ) {
- var LA18_1 = this.input.LA(2);
-
- if ( (LA18_1==')') ) {
- alt18=3;
- }
- else if ( ((LA18_1>='\u0000' && LA18_1<='(')||(LA18_1>='*' && LA18_1<='\uFFFF')) ) {
- alt18=2;
- }
-
-
- }
- else if ( (LA18_0=='(') ) {
- var LA18_2 = this.input.LA(2);
-
- if ( (LA18_2==':') ) {
- var LA18_5 = this.input.LA(3);
-
- if ( ((!this.inStr)) ) {
- alt18=1;
- }
- else if ( (true) ) {
- alt18=2;
- }
-
-
- }
- else if ( ((LA18_2>='\u0000' && LA18_2<='9')||(LA18_2>=';' && LA18_2<='\uFFFF')) ) {
- alt18=2;
- }
-
-
- }
- else if ( ((LA18_0>='\u0000' && LA18_0<='\'')||(LA18_0>=')' && LA18_0<='9')||(LA18_0>=';' && LA18_0<='\uFFFF')) ) {
- alt18=2;
- }
-
-
- switch (alt18) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:59: L_Comment
- this.mL_Comment();
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:71: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop18;
- }
- } while (true);
-
- this.match(":)");
-
- _channel = HIDDEN; this.addComment(this.state.tokenStartCharIndex, (this.getCharIndex()-1));
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_Comment",
-
- // $ANTLR start L_AnyChar
- mL_AnyChar: function() {
- try {
- var _type = this.L_AnyChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:434:11: ( . )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:434:13: .
- this.matchAny();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_AnyChar",
-
- mTokens: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:8: ( ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | JSON | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | SWITCH | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | POSITION | APPEND | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER | CONCAT | LPAREN | RPAREN | DOLLAR | L_UNION_BRACKET | R_UNION_BRACKET | LBRACKET | RBRACKET | LSQUARE | RSQUARE | EQUAL | BIND | NOTEQUAL | ANN_PERCENT | HASH | AMP | COMMA | QUESTION | STAR | PLUS | MINUS | SMALLER | GREATER | SMALLEREQ | GREATEREQ | SMALLER_SMALLER | GREATER_GREATER | SLASH | SLASH_SLASH | BANG | DOT | DOT_DOT | COLON | COLON_COLON | EMPTY_CLOSE_TAG | CLOSE_TAG | SEMICOLON | VBAR | PRAGMA_START | PRAGMA_END | XML_COMMENT_START | XML_COMMENT_END | PI_START | PI_END | ATTR_SIGN | Q | CHARREF_DEC | CHARREF_HEX | APOS | QUOT | L_NCName | S | L_Pragma | L_DirCommentConstructor | L_DirPIConstructor | L_IntegerLiteral | L_DecimalLiteral | L_DoubleLiteral | L_Comment | L_AnyChar )
- var alt19=270;
- alt19 = this.dfa19.predict(this.input);
- switch (alt19) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:10: ANCESTOR
- this.mANCESTOR();
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:19: ANCESTOR_OR_SELF
- this.mANCESTOR_OR_SELF();
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:36: AND
- this.mAND();
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:40: AS
- this.mAS();
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:43: ASCENDING
- this.mASCENDING();
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:53: AT
- this.mAT();
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:56: ATTRIBUTE
- this.mATTRIBUTE();
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:66: BASE_URI
- this.mBASE_URI();
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:75: BOUNDARY_SPACE
- this.mBOUNDARY_SPACE();
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:90: BY
- this.mBY();
-
-
- break;
- case 11 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:93: CASE
- this.mCASE();
-
-
- break;
- case 12 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:98: CAST
- this.mCAST();
-
-
- break;
- case 13 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:103: CASTABLE
- this.mCASTABLE();
-
-
- break;
- case 14 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:112: CHILD
- this.mCHILD();
-
-
- break;
- case 15 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:118: COLLATION
- this.mCOLLATION();
-
-
- break;
- case 16 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:128: COMMENT
- this.mCOMMENT();
-
-
- break;
- case 17 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:136: CONSTRUCTION
- this.mCONSTRUCTION();
-
-
- break;
- case 18 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:149: COPY_NAMESPACES
- this.mCOPY_NAMESPACES();
-
-
- break;
- case 19 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:165: DECLARE
- this.mDECLARE();
-
-
- break;
- case 20 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:173: DEFAULT
- this.mDEFAULT();
-
-
- break;
- case 21 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:181: DESCENDANT
- this.mDESCENDANT();
-
-
- break;
- case 22 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:192: DESCENDANT_OR_SELF
- this.mDESCENDANT_OR_SELF();
-
-
- break;
- case 23 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:211: DESCENDING
- this.mDESCENDING();
-
-
- break;
- case 24 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:222: DIV
- this.mDIV();
-
-
- break;
- case 25 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:226: DOCUMENT
- this.mDOCUMENT();
-
-
- break;
- case 26 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:235: DOCUMENT_NODE
- this.mDOCUMENT_NODE();
-
-
- break;
- case 27 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:249: ELEMENT
- this.mELEMENT();
-
-
- break;
- case 28 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:257: ELSE
- this.mELSE();
-
-
- break;
- case 29 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:262: EMPTY
- this.mEMPTY();
-
-
- break;
- case 30 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:268: EMPTY_SEQUENCE
- this.mEMPTY_SEQUENCE();
-
-
- break;
- case 31 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:283: ENCODING
- this.mENCODING();
-
-
- break;
- case 32 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:292: EQ
- this.mEQ();
-
-
- break;
- case 33 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:295: EVERY
- this.mEVERY();
-
-
- break;
- case 34 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:301: EXCEPT
- this.mEXCEPT();
-
-
- break;
- case 35 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:308: EXTERNAL
- this.mEXTERNAL();
-
-
- break;
- case 36 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:317: FOLLOWING
- this.mFOLLOWING();
-
-
- break;
- case 37 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:327: FOLLOWING_SIBLING
- this.mFOLLOWING_SIBLING();
-
-
- break;
- case 38 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:345: FOR
- this.mFOR();
-
-
- break;
- case 39 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:349: FUNCTION
- this.mFUNCTION();
-
-
- break;
- case 40 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:358: GE
- this.mGE();
-
-
- break;
- case 41 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:361: GREATEST
- this.mGREATEST();
-
-
- break;
- case 42 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:370: GT
- this.mGT();
-
-
- break;
- case 43 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:373: IDIV
- this.mIDIV();
-
-
- break;
- case 44 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:378: IF
- this.mIF();
-
-
- break;
- case 45 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:381: IMPORT
- this.mIMPORT();
-
-
- break;
- case 46 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:388: IN
- this.mIN();
-
-
- break;
- case 47 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:391: INHERIT
- this.mINHERIT();
-
-
- break;
- case 48 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:399: INSTANCE
- this.mINSTANCE();
-
-
- break;
- case 49 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:408: INTERSECT
- this.mINTERSECT();
-
-
- break;
- case 50 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:418: IS
- this.mIS();
-
-
- break;
- case 51 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:421: ITEM
- this.mITEM();
-
-
- break;
- case 52 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:426: LAX
- this.mLAX();
-
-
- break;
- case 53 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:430: LE
- this.mLE();
-
-
- break;
- case 54 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:433: LEAST
- this.mLEAST();
-
-
- break;
- case 55 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:439: LET
- this.mLET();
-
-
- break;
- case 56 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:443: LT
- this.mLT();
-
-
- break;
- case 57 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:446: MOD
- this.mMOD();
-
-
- break;
- case 58 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:450: MODULE
- this.mMODULE();
-
-
- break;
- case 59 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:457: NAMESPACE
- this.mNAMESPACE();
-
-
- break;
- case 60 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:467: NE
- this.mNE();
-
-
- break;
- case 61 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:470: NO_INHERIT
- this.mNO_INHERIT();
-
-
- break;
- case 62 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:481: NO_PRESERVE
- this.mNO_PRESERVE();
-
-
- break;
- case 63 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:493: NODE
- this.mNODE();
-
-
- break;
- case 64 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:498: JSON
- this.mJSON();
-
-
- break;
- case 65 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:503: OF
- this.mOF();
-
-
- break;
- case 66 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:506: OPTION
- this.mOPTION();
-
-
- break;
- case 67 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:513: OR
- this.mOR();
-
-
- break;
- case 68 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:516: ORDER
- this.mORDER();
-
-
- break;
- case 69 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:522: ORDERED
- this.mORDERED();
-
-
- break;
- case 70 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:530: ORDERING
- this.mORDERING();
-
-
- break;
- case 71 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:539: PARENT
- this.mPARENT();
-
-
- break;
- case 72 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:546: PRECEDING
- this.mPRECEDING();
-
-
- break;
- case 73 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:556: PRECEDING_SIBLING
- this.mPRECEDING_SIBLING();
-
-
- break;
- case 74 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:574: PRESERVE
- this.mPRESERVE();
-
-
- break;
- case 75 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:583: PROCESSING_INSTRUCTION
- this.mPROCESSING_INSTRUCTION();
-
-
- break;
- case 76 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:606: STRUCTURED_ITEM
- this.mSTRUCTURED_ITEM();
-
-
- break;
- case 77 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:622: JSON_ITEM
- this.mJSON_ITEM();
-
-
- break;
- case 78 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:632: OBJECT
- this.mOBJECT();
-
-
- break;
- case 79 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:639: ARRAY
- this.mARRAY();
-
-
- break;
- case 80 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:645: RETURN
- this.mRETURN();
-
-
- break;
- case 81 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:652: SATISFIES
- this.mSATISFIES();
-
-
- break;
- case 82 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:662: SCHEMA
- this.mSCHEMA();
-
-
- break;
- case 83 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:669: SCHEMA_ATTRIBUTE
- this.mSCHEMA_ATTRIBUTE();
-
-
- break;
- case 84 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:686: SCHEMA_ELEMENT
- this.mSCHEMA_ELEMENT();
-
-
- break;
- case 85 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:701: SELF
- this.mSELF();
-
-
- break;
- case 86 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:706: SOME
- this.mSOME();
-
-
- break;
- case 87 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:711: STABLE
- this.mSTABLE();
-
-
- break;
- case 88 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:718: STRICT
- this.mSTRICT();
-
-
- break;
- case 89 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:725: STRIP
- this.mSTRIP();
-
-
- break;
- case 90 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:731: TEXT
- this.mTEXT();
-
-
- break;
- case 91 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:736: THEN
- this.mTHEN();
-
-
- break;
- case 92 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:741: TO
- this.mTO();
-
-
- break;
- case 93 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:744: TREAT
- this.mTREAT();
-
-
- break;
- case 94 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:750: TYPESWITCH
- this.mTYPESWITCH();
-
-
- break;
- case 95 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:761: UNION
- this.mUNION();
-
-
- break;
- case 96 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:767: UNORDERED
- this.mUNORDERED();
-
-
- break;
- case 97 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:777: VALIDATE
- this.mVALIDATE();
-
-
- break;
- case 98 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:786: VARIABLE
- this.mVARIABLE();
-
-
- break;
- case 99 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:795: VERSION
- this.mVERSION();
-
-
- break;
- case 100 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:803: WHERE
- this.mWHERE();
-
-
- break;
- case 101 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:809: XQUERY
- this.mXQUERY();
-
-
- break;
- case 102 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:816: ALLOWING
- this.mALLOWING();
-
-
- break;
- case 103 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:825: CATCH
- this.mCATCH();
-
-
- break;
- case 104 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:831: CONTEXT
- this.mCONTEXT();
-
-
- break;
- case 105 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:839: COUNT
- this.mCOUNT();
-
-
- break;
- case 106 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:845: DECIMAL_FORMAT
- this.mDECIMAL_FORMAT();
-
-
- break;
- case 107 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:860: DECIMAL_SEPARATOR
- this.mDECIMAL_SEPARATOR();
-
-
- break;
- case 108 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:878: DIGIT
- this.mDIGIT();
-
-
- break;
- case 109 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:884: END
- this.mEND();
-
-
- break;
- case 110 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:888: GROUP
- this.mGROUP();
-
-
- break;
- case 111 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:894: GROUPING_SEPARATOR
- this.mGROUPING_SEPARATOR();
-
-
- break;
- case 112 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:913: INFINITY
- this.mINFINITY();
-
-
- break;
- case 113 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:922: MINUS_SIGN
- this.mMINUS_SIGN();
-
-
- break;
- case 114 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:933: NAMESPACE_NODE
- this.mNAMESPACE_NODE();
-
-
- break;
- case 115 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:948: NAN
- this.mNAN();
-
-
- break;
- case 116 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:952: NEXT
- this.mNEXT();
-
-
- break;
- case 117 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:957: ONLY
- this.mONLY();
-
-
- break;
- case 118 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:962: PATTERN_SEPARATOR
- this.mPATTERN_SEPARATOR();
-
-
- break;
- case 119 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:980: PERCENT
- this.mPERCENT();
-
-
- break;
- case 120 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:988: PER_MILLE
- this.mPER_MILLE();
-
-
- break;
- case 121 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:998: PREVIOUS
- this.mPREVIOUS();
-
-
- break;
- case 122 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1007: SLIDING
- this.mSLIDING();
-
-
- break;
- case 123 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1015: START
- this.mSTART();
-
-
- break;
- case 124 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1021: SWITCH
- this.mSWITCH();
-
-
- break;
- case 125 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1028: TRY
- this.mTRY();
-
-
- break;
- case 126 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1032: TUMBLING
- this.mTUMBLING();
-
-
- break;
- case 127 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1041: TYPE
- this.mTYPE();
-
-
- break;
- case 128 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1046: WHEN
- this.mWHEN();
-
-
- break;
- case 129 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1051: WINDOW
- this.mWINDOW();
-
-
- break;
- case 130 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1058: ZERO_DIGIT
- this.mZERO_DIGIT();
-
-
- break;
- case 131 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1069: AFTER
- this.mAFTER();
-
-
- break;
- case 132 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1075: BEFORE
- this.mBEFORE();
-
-
- break;
- case 133 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1082: COPY
- this.mCOPY();
-
-
- break;
- case 134 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1087: DELETE
- this.mDELETE();
-
-
- break;
- case 135 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1094: FIRST
- this.mFIRST();
-
-
- break;
- case 136 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1100: INSERT
- this.mINSERT();
-
-
- break;
- case 137 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1107: INTO
- this.mINTO();
-
-
- break;
- case 138 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1112: POSITION
- this.mPOSITION();
-
-
- break;
- case 139 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1121: APPEND
- this.mAPPEND();
-
-
- break;
- case 140 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1128: LAST
- this.mLAST();
-
-
- break;
- case 141 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1133: MODIFY
- this.mMODIFY();
-
-
- break;
- case 142 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1140: NODES
- this.mNODES();
-
-
- break;
- case 143 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1146: RENAME
- this.mRENAME();
-
-
- break;
- case 144 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1153: REPLACE
- this.mREPLACE();
-
-
- break;
- case 145 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1161: REVALIDATION
- this.mREVALIDATION();
-
-
- break;
- case 146 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1174: SKIP
- this.mSKIP();
-
-
- break;
- case 147 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1179: UPDATING
- this.mUPDATING();
-
-
- break;
- case 148 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1188: VALUE
- this.mVALUE();
-
-
- break;
- case 149 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1194: WITH
- this.mWITH();
-
-
- break;
- case 150 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1199: ALL
- this.mALL();
-
-
- break;
- case 151 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1203: ANY
- this.mANY();
-
-
- break;
- case 152 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1207: CONTAINS
- this.mCONTAINS();
-
-
- break;
- case 153 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1216: CONTENT
- this.mCONTENT();
-
-
- break;
- case 154 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1224: DIACRITICS
- this.mDIACRITICS();
-
-
- break;
- case 155 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1235: DIFFERENT
- this.mDIFFERENT();
-
-
- break;
- case 156 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1245: DISTANCE
- this.mDISTANCE();
-
-
- break;
- case 157 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1254: ENTIRE
- this.mENTIRE();
-
-
- break;
- case 158 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1261: EXACTLY
- this.mEXACTLY();
-
-
- break;
- case 159 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1269: FROM
- this.mFROM();
-
-
- break;
- case 160 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1274: FT_OPTION
- this.mFT_OPTION();
-
-
- break;
- case 161 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1284: FTAND
- this.mFTAND();
-
-
- break;
- case 162 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1290: FTNOT
- this.mFTNOT();
-
-
- break;
- case 163 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1296: FTOR
- this.mFTOR();
-
-
- break;
- case 164 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1301: INSENSITIVE
- this.mINSENSITIVE();
-
-
- break;
- case 165 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1313: LANGUAGE
- this.mLANGUAGE();
-
-
- break;
- case 166 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1322: LEVELS
- this.mLEVELS();
-
-
- break;
- case 167 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1329: LOWERCASE
- this.mLOWERCASE();
-
-
- break;
- case 168 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1339: MOST
- this.mMOST();
-
-
- break;
- case 169 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1344: NO
- this.mNO();
-
-
- break;
- case 170 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1347: NOT
- this.mNOT();
-
-
- break;
- case 171 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1351: OCCURS
- this.mOCCURS();
-
-
- break;
- case 172 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1358: PARAGRAPH
- this.mPARAGRAPH();
-
-
- break;
- case 173 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1368: PARAGRAPHS
- this.mPARAGRAPHS();
-
-
- break;
- case 174 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1379: PHRASE
- this.mPHRASE();
-
-
- break;
- case 175 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1386: RELATIONSHIP
- this.mRELATIONSHIP();
-
-
- break;
- case 176 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1399: SAME
- this.mSAME();
-
-
- break;
- case 177 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1404: SCORE
- this.mSCORE();
-
-
- break;
- case 178 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1410: SENSITIVE
- this.mSENSITIVE();
-
-
- break;
- case 179 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1420: SENTENCE
- this.mSENTENCE();
-
-
- break;
- case 180 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1429: SENTENCES
- this.mSENTENCES();
-
-
- break;
- case 181 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1439: STEMMING
- this.mSTEMMING();
-
-
- break;
- case 182 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1448: STOP
- this.mSTOP();
-
-
- break;
- case 183 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1453: THESAURUS
- this.mTHESAURUS();
-
-
- break;
- case 184 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1463: TIMES
- this.mTIMES();
-
-
- break;
- case 185 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1469: UPPERCASE
- this.mUPPERCASE();
-
-
- break;
- case 186 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1479: USING
- this.mUSING();
-
-
- break;
- case 187 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1485: WEIGHT
- this.mWEIGHT();
-
-
- break;
- case 188 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1492: WILDCARDS
- this.mWILDCARDS();
-
-
- break;
- case 189 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1502: WITHOUT
- this.mWITHOUT();
-
-
- break;
- case 190 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1510: WORD
- this.mWORD();
-
-
- break;
- case 191 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1515: WORDS
- this.mWORDS();
-
-
- break;
- case 192 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1521: BREAK
- this.mBREAK();
-
-
- break;
- case 193 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1527: CONTINUE
- this.mCONTINUE();
-
-
- break;
- case 194 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1536: EXIT
- this.mEXIT();
-
-
- break;
- case 195 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1541: LOOP
- this.mLOOP();
-
-
- break;
- case 196 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1546: RETURNING
- this.mRETURNING();
-
-
- break;
- case 197 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1556: WHILE
- this.mWHILE();
-
-
- break;
- case 198 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1562: CHECK
- this.mCHECK();
-
-
- break;
- case 199 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1568: COLLECTION
- this.mCOLLECTION();
-
-
- break;
- case 200 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1579: CONSTRAINT
- this.mCONSTRAINT();
-
-
- break;
- case 201 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1590: FOREACH
- this.mFOREACH();
-
-
- break;
- case 202 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1598: FOREIGN
- this.mFOREIGN();
-
-
- break;
- case 203 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1606: INDEX
- this.mINDEX();
-
-
- break;
- case 204 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1612: INTEGRITY
- this.mINTEGRITY();
-
-
- break;
- case 205 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1622: KEY
- this.mKEY();
-
-
- break;
- case 206 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1626: ON
- this.mON();
-
-
- break;
- case 207 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1629: UNIQUE
- this.mUNIQUE();
-
-
- break;
- case 208 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1636: AMP_ER
- this.mAMP_ER();
-
-
- break;
- case 209 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1643: APOS_ER
- this.mAPOS_ER();
-
-
- break;
- case 210 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1651: QUOT_ER
- this.mQUOT_ER();
-
-
- break;
- case 211 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1659: CONCAT
- this.mCONCAT();
-
-
- break;
- case 212 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1666: LPAREN
- this.mLPAREN();
-
-
- break;
- case 213 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1673: RPAREN
- this.mRPAREN();
-
-
- break;
- case 214 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1680: DOLLAR
- this.mDOLLAR();
-
-
- break;
- case 215 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1687: L_UNION_BRACKET
- this.mL_UNION_BRACKET();
-
-
- break;
- case 216 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1703: R_UNION_BRACKET
- this.mR_UNION_BRACKET();
-
-
- break;
- case 217 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1719: LBRACKET
- this.mLBRACKET();
-
-
- break;
- case 218 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1728: RBRACKET
- this.mRBRACKET();
-
-
- break;
- case 219 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1737: LSQUARE
- this.mLSQUARE();
-
-
- break;
- case 220 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1745: RSQUARE
- this.mRSQUARE();
-
-
- break;
- case 221 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1753: EQUAL
- this.mEQUAL();
-
-
- break;
- case 222 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1759: BIND
- this.mBIND();
-
-
- break;
- case 223 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1764: NOTEQUAL
- this.mNOTEQUAL();
-
-
- break;
- case 224 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1773: ANN_PERCENT
- this.mANN_PERCENT();
-
-
- break;
- case 225 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1785: HASH
- this.mHASH();
-
-
- break;
- case 226 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1790: AMP
- this.mAMP();
-
-
- break;
- case 227 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1794: COMMA
- this.mCOMMA();
-
-
- break;
- case 228 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1800: QUESTION
- this.mQUESTION();
-
-
- break;
- case 229 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1809: STAR
- this.mSTAR();
-
-
- break;
- case 230 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1814: PLUS
- this.mPLUS();
-
-
- break;
- case 231 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1819: MINUS
- this.mMINUS();
-
-
- break;
- case 232 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1825: SMALLER
- this.mSMALLER();
-
-
- break;
- case 233 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1833: GREATER
- this.mGREATER();
-
-
- break;
- case 234 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1841: SMALLEREQ
- this.mSMALLEREQ();
-
-
- break;
- case 235 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1851: GREATEREQ
- this.mGREATEREQ();
-
-
- break;
- case 236 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1861: SMALLER_SMALLER
- this.mSMALLER_SMALLER();
-
-
- break;
- case 237 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1877: GREATER_GREATER
- this.mGREATER_GREATER();
-
-
- break;
- case 238 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1893: SLASH
- this.mSLASH();
-
-
- break;
- case 239 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1899: SLASH_SLASH
- this.mSLASH_SLASH();
-
-
- break;
- case 240 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1911: BANG
- this.mBANG();
-
-
- break;
- case 241 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1916: DOT
- this.mDOT();
-
-
- break;
- case 242 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1920: DOT_DOT
- this.mDOT_DOT();
-
-
- break;
- case 243 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1928: COLON
- this.mCOLON();
-
-
- break;
- case 244 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1934: COLON_COLON
- this.mCOLON_COLON();
-
-
- break;
- case 245 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1946: EMPTY_CLOSE_TAG
- this.mEMPTY_CLOSE_TAG();
-
-
- break;
- case 246 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1962: CLOSE_TAG
- this.mCLOSE_TAG();
-
-
- break;
- case 247 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1972: SEMICOLON
- this.mSEMICOLON();
-
-
- break;
- case 248 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1982: VBAR
- this.mVBAR();
-
-
- break;
- case 249 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1987: PRAGMA_START
- this.mPRAGMA_START();
-
-
- break;
- case 250 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2000: PRAGMA_END
- this.mPRAGMA_END();
-
-
- break;
- case 251 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2011: XML_COMMENT_START
- this.mXML_COMMENT_START();
-
-
- break;
- case 252 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2029: XML_COMMENT_END
- this.mXML_COMMENT_END();
-
-
- break;
- case 253 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2045: PI_START
- this.mPI_START();
-
-
- break;
- case 254 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2054: PI_END
- this.mPI_END();
-
-
- break;
- case 255 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2061: ATTR_SIGN
- this.mATTR_SIGN();
-
-
- break;
- case 256 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2071: Q
- this.mQ();
-
-
- break;
- case 257 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2073: CHARREF_DEC
- this.mCHARREF_DEC();
-
-
- break;
- case 258 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2085: CHARREF_HEX
- this.mCHARREF_HEX();
-
-
- break;
- case 259 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2097: APOS
- this.mAPOS();
-
-
- break;
- case 260 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2102: QUOT
- this.mQUOT();
-
-
- break;
- case 261 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2107: L_NCName
- this.mL_NCName();
-
-
- break;
- case 262 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2116: S
- this.mS();
-
-
- break;
- case 263 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2118: L_Pragma
- this.mL_Pragma();
-
-
- break;
- case 264 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2127: L_DirCommentConstructor
- this.mL_DirCommentConstructor();
-
-
- break;
- case 265 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2151: L_DirPIConstructor
- this.mL_DirPIConstructor();
-
-
- break;
- case 266 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2170: L_IntegerLiteral
- this.mL_IntegerLiteral();
-
-
- break;
- case 267 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2187: L_DecimalLiteral
- this.mL_DecimalLiteral();
-
-
- break;
- case 268 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2204: L_DoubleLiteral
- this.mL_DoubleLiteral();
-
-
- break;
- case 269 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2220: L_Comment
- this.mL_Comment();
-
-
- break;
- case 270 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2230: L_AnyChar
- this.mL_AnyChar();
-
-
- break;
-
- }
-
- }
-
-}, true); // important to pass true to overwrite default implementations
-
-org.antlr.lang.augmentObject(XQueryLexer, {
- DFA19_eotS:
- "\u0001\uffff\u0019\u0042\u0001\u0097\u0001\u009a\u0002\uffff\u0001"+
- "\u009e\u0004\uffff\u0001\u00a5\u0001\u00a7\u0001\uffff\u0001\u00aa\u0001"+
- "\u00ac\u0001\uffff\u0001\u00af\u0002\uffff\u0001\u00b3\u0001\u00b9\u0001"+
- "\u00bc\u0001\u00bf\u0001\u00c1\u0002\uffff\u0001\u00c5\u0004\uffff\u0001"+
- "\u00c9\u0001\uffff\u0001\u0042\u0001\u00d1\u0001\u00d3\u0005\u0042\u0001"+
- "\uffff\u0002\u0042\u0001\u00dc\u000b\u0042\u0001\u00f8\u0007\u0042\u0001"+
- "\u0107\u0001\u0042\u0001\u010a\u0001\u0042\u0001\u010c\u0001\u0042\u0001"+
- "\u0113\u0001\u0114\u0002\u0042\u0001\u011c\u0001\u011d\u0004\u0042\u0001"+
- "\u0125\u0001\u0129\u0001\u0042\u0001\u012b\u0001\u0042\u0001\u012e\u0001"+
- "\u0042\u0001\u0131\u0011\u0042\u0001\u014f\u0012\u0042\u0003\uffff\u0001"+
- "\u0169\u0012\uffff\u0001\u016c\u000c\uffff\u0001\u016e\u0009\uffff\u0001"+
- "\u0170\u0007\uffff\u0001\u00c9\u0001\u0170\u0001\uffff\u0001\u0042\u0001"+
- "\u0173\u0001\u0174\u0001\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\u0179\u0003\u0042\u0001\u017d\u0002\u0042\u0001\uffff\u000f"+
- "\u0042\u0001\u0192\u0009\u0042\u0001\u019c\u0001\u0042\u0001\uffff\u0006"+
- "\u0042\u0001\u01a5\u0007\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0006\u0042\u0002\uffff\u0001\u0042\u0001\u01b9\u0003"+
- "\u0042\u0001\u01bd\u0001\u0042\u0002\uffff\u0002\u0042\u0001\u01c3\u0004"+
- "\u0042\u0001\uffff\u0002\u0042\u0001\u01cb\u0001\uffff\u0001\u0042\u0001"+
- "\uffff\u0002\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u001d\u0042\u0001"+
- "\uffff\u0001\u0042\u0001\u01f7\u0013\u0042\u0001\u020e\u0001\u0042\u0001"+
- "\u0210\u0001\u0042\u0008\uffff\u0001\u0170\u0001\u0042\u0002\uffff\u0004"+
- "\u0042\u0001\uffff\u0002\u0042\u0001\u021a\u0001\uffff\u0004\u0042\u0001"+
- "\u021f\u0001\u0221\u0007\u0042\u0001\u022d\u0006\u0042\u0001\uffff\u0006"+
- "\u0042\u0001\u023a\u0002\u0042\u0001\uffff\u0005\u0042\u0001\u0242\u0002"+
- "\u0042\u0001\uffff\u0002\u0042\u0001\u0248\u0003\u0042\u0001\u024c\u0002"+
- "\u0042\u0001\u024f\u0005\u0042\u0001\u0257\u0002\u0042\u0001\u025a\u0001"+
- "\uffff\u0001\u025b\u0002\u0042\u0001\uffff\u0002\u0042\u0001\u0260\u0002"+
- "\u0042\u0001\uffff\u0001\u0263\u0002\u0042\u0001\u0266\u0002\u0042\u0001"+
- "\u026a\u0001\uffff\u0001\u026c\u0003\u0042\u0001\u0270\u0011\u0042\u0001"+
- "\u0283\u0001\u0042\u0001\u0285\u0002\u0042\u0001\u0288\u0002\u0042\u0001"+
- "\u028b\u0002\u0042\u0001\u028e\u0005\u0042\u0001\u0294\u0001\u0295\u0002"+
- "\u0042\u0001\uffff\u0001\u0299\u000d\u0042\u0001\u02a7\u0002\u0042\u0001"+
- "\u02ab\u0002\u0042\u0001\u02af\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
- "\uffff\u0001\u02b2\u0001\u02b3\u0003\u0042\u0001\u02b8\u0001\u0042\u0001"+
- "\u02ba\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u02bf\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0001\u02c1\u0001\u02c2\u0001\u02c3\u0008\u0042\u0001"+
- "\uffff\u0001\u02cd\u0005\u0042\u0001\u02d3\u0005\u0042\u0001\uffff\u0001"+
- "\u02da\u0002\u0042\u0001\u02dd\u0003\u0042\u0001\uffff\u0004\u0042\u0001"+
- "\u02e5\u0001\uffff\u0001\u0042\u0001\u02e7\u0001\u02e8\u0001\uffff\u0001"+
- "\u0042\u0001\u02eb\u0001\uffff\u0007\u0042\u0001\uffff\u0001\u0042\u0001"+
- "\u02f4\u0002\uffff\u0001\u0042\u0001\u02f6\u0002\u0042\u0001\uffff\u0002"+
- "\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0002\u0042\u0001\u02ff\u0001"+
- "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u0304\u0001\u0042\u0001"+
- "\uffff\u000e\u0042\u0001\u0314\u0001\u0042\u0001\u0316\u0001\u0042\u0001"+
- "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u031a\u0001\uffff\u0002"+
- "\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0005\u0042\u0002\uffff\u0001"+
- "\u0042\u0001\u0325\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u0328\u0001"+
- "\u0329\u0004\u0042\u0001\u032e\u0001\u0042\u0001\u0330\u0002\u0042\u0001"+
- "\u0333\u0001\uffff\u0001\u0334\u0002\u0042\u0001\uffff\u0002\u0042\u0001"+
- "\u0339\u0001\uffff\u0002\u0042\u0003\uffff\u0003\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0001\u0340\u0002\u0042\u0001\u0343\u0001\uffff\u0001"+
- "\u0042\u0003\uffff\u0009\u0042\u0001\uffff\u0004\u0042\u0001\u0353\u0001"+
- "\uffff\u0006\u0042\u0001\uffff\u0001\u0042\u0001\u035b\u0001\uffff\u0001"+
- "\u035c\u0006\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0002\u0042\u0001"+
- "\uffff\u0001\u0366\u0002\u0042\u0001\u0369\u0004\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0001\u036f\u0001\u0042\u0001\u0371\u0001\u0372\u0004"+
- "\u0042\u0001\uffff\u0001\u0042\u0001\u0378\u0002\u0042\u0001\uffff\u0001"+
- "\u037b\u0001\u037c\u0001\u037d\u0009\u0042\u0001\u0387\u0001\u0042\u0001"+
- "\u0389\u0001\uffff\u0001\u038a\u0001\uffff\u0002\u0042\u0001\u038e\u0001"+
- "\uffff\u0003\u0042\u0001\u0392\u0001\u0394\u0001\u0395\u0004\u0042\u0001"+
- "\uffff\u0002\u0042\u0002\uffff\u0001\u039c\u0003\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0002\u0042\u0002\uffff\u0001\u03a3\u0002\u0042\u0001"+
- "\u03a6\u0001\uffff\u0001\u03a7\u0005\u0042\u0001\uffff\u0002\u0042\u0001"+
- "\uffff\u0003\u0042\u0001\u03b2\u0002\u0042\u0001\u03b5\u0001\u03b6\u0003"+
- "\u0042\u0001\u03ba\u0001\u0042\u0001\u03bc\u0001\u0042\u0001\uffff\u0004"+
- "\u0042\u0001\u03c3\u0002\u0042\u0002\uffff\u0001\u0042\u0001\u03c7\u0001"+
- "\u0042\u0001\u03c9\u0001\u03ca\u0004\u0042\u0001\uffff\u0001\u03cf\u0001"+
- "\u0042\u0001\uffff\u0005\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0005"+
- "\u0042\u0001\uffff\u0001\u03dc\u0001\u0042\u0003\uffff\u0006\u0042\u0001"+
- "\u03e4\u0002\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0003\u0042\u0001"+
- "\uffff\u0002\u0042\u0001\u03ee\u0001\uffff\u0001\u0042\u0002\uffff\u0001"+
- "\u03f0\u0005\u0042\u0001\uffff\u0005\u0042\u0001\u03fb\u0001\uffff\u0001"+
- "\u03fc\u0001\u0042\u0002\uffff\u0001\u0042\u0001\u0400\u0002\u0042\u0001"+
- "\u0403\u0001\u0404\u0001\u0042\u0001\u0406\u0002\u0042\u0001\uffff\u0002"+
- "\u0042\u0002\uffff\u0001\u040b\u0001\u040c\u0001\u0042\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0004\u0042\u0001\u0414\u0001\u0416\u0001\uffff\u0001"+
- "\u0042\u0001\u0418\u0001\u0419\u0001\uffff\u0001\u0042\u0002\uffff\u0001"+
- "\u041b\u0001\u0042\u0001\u041d\u0001\u0042\u0001\uffff\u0001\u041f\u0003"+
- "\u0042\u0001\u0423\u0001\u0424\u0006\u0042\u0001\uffff\u0001\u042b\u0003"+
- "\u0042\u0001\u042f\u0001\u0430\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
- "\u0433\u0001\u0042\u0001\u0435\u0004\u0042\u0001\u043b\u0001\uffff\u0001"+
- "\u0042\u0001\uffff\u0004\u0042\u0001\u0441\u0001\u0042\u0001\u0443\u0001"+
- "\u0042\u0001\u0445\u0001\u0446\u0002\uffff\u0003\u0042\u0001\uffff\u0001"+
- "\u044a\u0001\u044b\u0002\uffff\u0001\u0042\u0001\uffff\u0001\u044d\u0003"+
- "\u0042\u0002\uffff\u0006\u0042\u0001\u0457\u0001\uffff\u0001\u0042\u0001"+
- "\uffff\u0001\u0042\u0002\uffff\u0001\u045b\u0001\uffff\u0001\u045c\u0001"+
- "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u045f\u0001\u0460\u0002"+
- "\uffff\u0001\u0461\u0001\u0042\u0001\u0464\u0002\u0042\u0001\u0467\u0001"+
- "\uffff\u0001\u0469\u0001\u0042\u0001\u046c\u0002\uffff\u0001\u0042\u0001"+
- "\u046e\u0001\uffff\u0001\u0042\u0001\uffff\u0001\u0470\u0002\u0042\u0001"+
- "\u0473\u0001\u0474\u0001\uffff\u0001\u0475\u0002\u0042\u0001\u0478\u0001"+
- "\u0042\u0001\uffff\u0001\u047a\u0001\uffff\u0001\u047b\u0002\uffff\u0001"+
- "\u047c\u0002\u0042\u0002\uffff\u0001\u0042\u0001\uffff\u0001\u0480\u0001"+
- "\u0042\u0001\u0482\u0003\u0042\u0001\u0487\u0001\u0488\u0001\u0489\u0001"+
- "\uffff\u0003\u0042\u0002\uffff\u0002\u0042\u0003\uffff\u0001\u048f\u0001"+
- "\u0042\u0001\uffff\u0001\u0491\u0001\u0042\u0001\uffff\u0001\u0493\u0001"+
- "\uffff\u0002\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
- "\uffff\u0002\u0042\u0003\uffff\u0002\u0042\u0001\uffff\u0001\u049c\u0003"+
- "\uffff\u0001\u049d\u0002\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0004"+
- "\u0042\u0003\uffff\u0004\u0042\u0001\u04a9\u0001\uffff\u0001\u0042\u0001"+
- "\uffff\u0001\u04ab\u0001\uffff\u0008\u0042\u0002\uffff\u0002\u0042\u0001"+
- "\u04b6\u0008\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0006\u0042\u0001"+
- "\u04c6\u0001\u04c7\u0002\u0042\u0001\uffff\u0004\u0042\u0001\u04ce\u000a"+
- "\u0042\u0002\uffff\u0001\u0042\u0001\u04da\u0001\u0042\u0001\u04dc\u0002"+
- "\u0042\u0001\uffff\u0001\u04df\u0002\u0042\u0001\u04e2\u0005\u0042\u0001"+
- "\u04e8\u0001\u0042\u0001\uffff\u0001\u04ea\u0001\uffff\u0002\u0042\u0001"+
- "\uffff\u0002\u0042\u0001\uffff\u0003\u0042\u0001\u04f2\u0001\u0042\u0001"+
- "\uffff\u0001\u04f4\u0001\uffff\u0007\u0042\u0001\uffff\u0001\u04fc\u0001"+
- "\uffff\u0001\u04fd\u0001\u0042\u0001\u04ff\u0001\u0042\u0001\u0501\u0001"+
- "\u0502\u0001\u0042\u0002\uffff\u0001\u0504\u0001\uffff\u0001\u0505\u0002"+
- "\uffff\u0001\u0042\u0002\uffff\u0003\u0042\u0001\u050a\u0001\uffff",
- DFA19_eofS:
- "\u050b\uffff",
- DFA19_minS:
- "\u0001\u0000\u0001\u0066\u0002\u0061\u0001\u0065\u0001\u006c\u0001"+
- "\u0069\u0001\u0065\u0001\u0064\u0001\u0061\u0001\u0069\u0001\u0061\u0001"+
- "\u0073\u0001\u0062\u0002\u0061\u0002\u0065\u0001\u006e\u0001\u0061\u0001"+
- "\u0065\u0001\u0071\u0001\u0061\u0002\u0065\u0001\u0075\u0001\u007c\u0001"+
- "\u0023\u0002\uffff\u0001\u007c\u0004\uffff\u0001\u003a\u0001\u003d\u0001"+
- "\uffff\u0001\u0029\u0001\u0023\u0001\uffff\u0001\u003e\u0002\uffff\u0001"+
- "\u002d\u0001\u0021\u0001\u003d\u0001\u002f\u0001\u002e\u0002\uffff\u0001"+
- "\u002d\u0004\uffff\u0001\u002e\u0001\uffff\u0001\u0063\u0002\u002d\u0001"+
- "\u0072\u0001\u006c\u0001\u0074\u0001\u006f\u0001\u0070\u0001\uffff\u0001"+
- "\u0073\u0001\u0075\u0001\u002d\u0001\u0066\u0001\u0065\u0001\u0073\u0001"+
- "\u0065\u0001\u006c\u0001\u0063\u0001\u0061\u0001\u0063\u0001\u0065\u0001"+
- "\u0070\u0001\u0063\u0001\u002d\u0001\u0065\u0001\u0061\u0001\u006c\u0001"+
- "\u006e\u0001\u0072\u0001\u006f\u0002\u002d\u0001\u0065\u0001\u002d\u0001"+
- "\u0069\u0001\u002d\u0001\u0070\u0002\u002d\u0001\u0065\u0001\u006e\u0002"+
- "\u002d\u0001\u006f\u0001\u0064\u0001\u006e\u0001\u006d\u0002\u002d\u0001"+
- "\u006f\u0001\u002d\u0001\u0074\u0001\u002d\u0001\u006a\u0001\u002d\u0001"+
- "\u0063\u0001\u0072\u0001\u0065\u0001\u0072\u0001\u0073\u0001\u0072\u0001"+
- "\u0061\u0001\u006d\u0001\u0068\u0001\u006c\u0001\u006d\u0003\u0069\u0001"+
- "\u006c\u0001\u0078\u0001\u0065\u0001\u002d\u0001\u0065\u0001\u0070\u0002"+
- "\u006d\u0001\u0069\u0001\u0064\u0001\u0069\u0001\u006c\u0001\u0072\u0001"+
- "\u0065\u0001\u006c\u0001\u0069\u0001\u0072\u0001\u0075\u0001\u004e\u0001"+
- "\u0072\u0001\u0079\u0001\u006f\u0003\uffff\u0001\u0009\u0012\uffff\u0001"+
- "\u0078\u000b\uffff\u0001\u002d\u0001\u0009\u0009\uffff\u0001\u0030\u0007"+
- "\uffff\u0001\u002e\u0001\u0030\u0001\uffff\u0001\u0065\u0002\u002d\u0001"+
- "\u0065\u0001\uffff\u0001\u0072\u0001\uffff\u0001\u0061\u0001\u002d\u0002"+
- "\u0065\u0001\u0073\u0001\u002d\u0001\u0065\u0001\u006e\u0001\uffff\u0001"+
- "\u006f\u0001\u0061\u0001\u0065\u0001\u0063\u0001\u006c\u0001\u0063\u0001"+
- "\u006c\u0001\u006d\u0001\u0073\u0001\u0079\u0001\u006e\u0001\u0069\u0001"+
- "\u0061\u0001\u0063\u0001\u0065\u0001\u002d\u0001\u0069\u0001\u0063\u0001"+
- "\u0066\u0001\u0074\u0001\u0075\u0001\u006d\u0001\u0065\u0001\u0074\u0001"+
- "\u006f\u0001\u002d\u0001\u0069\u0001\uffff\u0001\u0072\u0002\u0065\u0001"+
- "\u0063\u0001\u0074\u0001\u006c\u0001\u002d\u0001\u0063\u0001\u0073\u0001"+
- "\u006d\u0001\u006f\u0001\u006e\u0001\u006f\u0001\u0072\u0001\uffff\u0001"+
- "\u0061\u0001\u0075\u0001\uffff\u0001\u0076\u0001\uffff\u0001\u006f\u0003"+
- "\u0065\u0001\u0069\u0001\u0065\u0002\uffff\u0001\u006d\u0001\u002d\u0001"+
- "\u0074\u0001\u0067\u0001\u0073\u0001\u002d\u0001\u0065\u0002\uffff\u0001"+
- "\u0065\u0001\u0070\u0001\u002d\u0001\u0074\u0001\u0075\u0001\u0065\u0001"+
- "\u0074\u0001\uffff\u0001\u0069\u0001\u0065\u0001\u002d\u0001\uffff\u0001"+
- "\u006e\u0001\uffff\u0001\u0069\u0001\u0065\u0001\uffff\u0001\u0065\u0001"+
- "\u0079\u0001\uffff\u0001\u0075\u0001\u0061\u0001\u0074\u0002\u0063\u0001"+
- "\u002d\u0001\u0069\u0001\u0061\u0001\u0069\u0001\u0062\u0001\u006d\u0001"+
- "\u0070\u0001\u0069\u0002\u0065\u0001\u0072\u0001\u0066\u0001\u0073\u0001"+
- "\u0065\u0001\u0064\u0001\u0074\u0001\u0070\u0001\u0075\u0001\u0061\u0001"+
- "\u006c\u0002\u0061\u0001\u0074\u0001\u006e\u0001\uffff\u0001\u0061\u0001"+
- "\u002d\u0001\u0065\u0001\u0062\u0001\u0065\u0001\u006f\u0001\u0072\u0001"+
- "\u0061\u0001\u0065\u0001\u006e\u0002\u0069\u0001\u0073\u0001\u006e\u0001"+
- "\u006c\u0001\u0064\u0001\u0068\u0001\u0064\u0001\u0067\u0001\u0064\u0001"+
- "\u0065\u0001\u002d\u0001\u006f\u0001\u002d\u0001\u0074\u0004\uffff\u0001"+
- "\u002d\u0003\uffff\u0001\u0030\u0001\u0073\u0002\uffff\u0001\u006e\u0001"+
- "\u0069\u0001\u0079\u0001\u0077\u0001\uffff\u0001\u0072\u0001\u006e\u0001"+
- "\u002d\u0001\uffff\u0001\u002d\u0001\u0064\u0001\u0072\u0001\u006b\u0002"+
- "\u002d\u0001\u0068\u0001\u0064\u0001\u006b\u0001\u0061\u0001\u0065\u0001"+
- "\u0074\u0001\u0061\u0001\u002d\u0001\u0074\u0001\u0061\u0001\u006d\u0001"+
- "\u0075\u0001\u0065\u0001\u0074\u0001\uffff\u0001\u0074\u0001\u0072\u0001"+
- "\u0065\u0001\u0061\u0001\u006d\u0001\u0065\u0001\u002d\u0001\u0079\u0001"+
- "\u0064\u0001\uffff\u0001\u0072\u0001\u0079\u0001\u0070\u0001\u0072\u0001"+
- "\u0074\u0001\u002d\u0001\u006f\u0001\u0061\u0001\uffff\u0002\u0074\u0001"+
- "\u002d\u0001\u0070\u0001\u0064\u0001\u0074\u0001\u002d\u0001\u0074\u0001"+
- "\u0070\u0001\u002d\u0002\u0072\u0001\u0061\u0001\u006e\u0001\u0067\u0001"+
- "\u002d\u0001\u006e\u0001\u0078\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
- "\u0075\u0001\u0074\u0001\uffff\u0001\u006c\u0001\u0072\u0001\u002d\u0001"+
- "\u006c\u0001\u0066\u0001\uffff\u0001\u002d\u0002\u0073\u0001\u002d\u0001"+
- "\u006e\u0001\u0072\u0001\u002d\u0001\uffff\u0001\u002d\u0001\u006f\u0001"+
- "\u0072\u0001\u0063\u0001\u002d\u0001\u0072\u0001\u006e\u0001\u0067\u0003"+
- "\u0065\u0001\u0069\u0002\u0065\u0001\u006d\u0001\u0074\u0001\u0073\u0002"+
- "\u0063\u0001\u006c\u0001\u0074\u0001\u006d\u0001\u002d\u0001\u0073\u0001"+
- "\u002d\u0001\u006d\u0001\u0065\u0001\u002d\u0001\u0069\u0001\u0065\u0001"+
- "\u002d\u0001\u0069\u0001\u0063\u0001\u002d\u0001\u0072\u0001\u006d\u0001"+
- "\u0061\u0001\u006c\u0001\u0074\u0002\u002d\u0001\u0061\u0001\u0074\u0001"+
- "\uffff\u0001\u002d\u0001\u006c\u0001\u0073\u0001\u006e\u0001\u0075\u0001"+
- "\u0064\u0001\u0074\u0001\u0072\u0001\u0067\u0001\u0064\u0001\u0065\u0001"+
- "\u0061\u0001\u0069\u0001\u0065\u0001\u002d\u0001\u0065\u0001\u006f\u0001"+
- "\u002d\u0001\u0063\u0001\u0068\u0001\u002d\u0001\u0072\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u002d\u0001\u0000\u0001\u0074\u0001\u0064\u0001"+
- "\u0062\u0001\u002d\u0001\u0069\u0001\u002d\u0001\u0064\u0001\uffff\u0001"+
- "\u0075\u0001\u0061\u0001\u0065\u0001\u002d\u0001\uffff\u0001\u0062\u0001"+
- "\uffff\u0003\u002d\u0001\u0074\u0001\u0063\u0001\u006e\u0001\u0072\u0001"+
- "\u006e\u0001\u0069\u0002\u006e\u0001\uffff\u0001\u002d\u0001\u0072\u0001"+
- "\u0061\u0001\u006c\u0001\u006e\u0001\u0065\u0001\u002d\u0001\u0069\u0001"+
- "\u0072\u0001\u006e\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u002d\u0001"+
- "\u0069\u0001\u0065\u0001\u002d\u0001\u0074\u0001\u006e\u0001\u006c\u0001"+
- "\uffff\u0001\u0077\u0001\u0063\u0001\u0067\u0001\u0069\u0001\u002d\u0001"+
- "\uffff\u0001\u0074\u0002\u002d\u0001\uffff\u0001\u0065\u0001\u002d\u0001"+
- "\uffff\u0001\u0074\u0001\u0069\u0001\u006e\u0001\u0074\u0002\u0073\u0001"+
- "\u0072\u0001\uffff\u0001\u0069\u0001\u002d\u0002\uffff\u0001\u0061\u0001"+
- "\u002d\u0001\u0073\u0001\u0063\u0001\uffff\u0001\u0065\u0001\u0079\u0001"+
- "\uffff\u0001\u002d\u0001\u0070\u0001\uffff\u0001\u0068\u0001\u0065\u0001"+
- "\u002d\u0001\uffff\u0001\u0069\u0001\uffff\u0001\u006e\u0001\u002d\u0001"+
- "\u0074\u0001\uffff\u0001\u0073\u0001\u0074\u0002\u0072\u0001\u0064\u0001"+
- "\u0072\u0001\u006f\u0001\u0073\u0001\u006e\u0002\u0069\u0001\u0065\u0002"+
- "\u0074\u0001\u002d\u0001\u0065\u0001\u002d\u0001\u0069\u0001\uffff\u0001"+
- "\u0066\u0001\uffff\u0001\u0061\u0001\u002d\u0001\uffff\u0001\u0074\u0001"+
- "\u006e\u0001\uffff\u0001\u006e\u0001\u0068\u0001\uffff\u0001\u006e\u0001"+
- "\u0065\u0001\u0063\u0002\u0069\u0002\uffff\u0001\u0075\u0001\u002d\u0001"+
- "\u0077\u0001\uffff\u0001\u0069\u0002\u002d\u0002\u0065\u0001\u0069\u0001"+
- "\u0063\u0001\u002d\u0001\u0061\u0001\u002d\u0001\u0062\u0001\u006f\u0001"+
- "\u002d\u0001\uffff\u0001\u002d\u0001\u0077\u0001\u0075\u0001\uffff\u0001"+
- "\u0061\u0001\u0074\u0001\u002d\u0001\uffff\u0001\u0079\u0001\u0064\u0003"+
- "\uffff\u0001\u006f\u0001\u0069\u0001\u0075\u0001\uffff\u0001\u006e\u0001"+
- "\uffff\u0001\u002d\u0002\u0072\u0001\u002d\u0001\uffff\u0001\u006c\u0003"+
- "\uffff\u0001\u0069\u0002\u0074\u0001\u0061\u0002\u0074\u0001\u006e\u0001"+
- "\u0075\u0001\u0061\u0001\uffff\u0001\u0065\u0001\u006c\u0001\u0074\u0001"+
- "\u0064\u0001\u002d\u0001\uffff\u0001\u0074\u0001\u0065\u0001\u0063\u0001"+
- "\u006e\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u006e\u0001\u002d\u0001"+
- "\uffff\u0001\u002d\u0001\u0061\u0001\u0079\u0001\u0069\u0001\u0068\u0001"+
- "\u006e\u0001\u006f\u0001\uffff\u0001\u0069\u0002\uffff\u0001\u0073\u0001"+
- "\u006e\u0001\uffff\u0001\u002d\u0001\u0074\u0001\u0063\u0001\u002d\u0001"+
- "\u0069\u0001\u0065\u0001\u0069\u0001\u0074\u0001\uffff\u0001\u0067\u0001"+
- "\uffff\u0001\u002d\u0001\u0061\u0002\u002d\u0001\u0073\u0001\u0061\u0001"+
- "\u0065\u0001\u0073\u0001\uffff\u0001\u0074\u0001\u002d\u0001\u0064\u0001"+
- "\u006e\u0001\uffff\u0003\u002d\u0001\u0061\u0001\u006e\u0001\u0069\u0001"+
- "\u0076\u0001\u0075\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u006f\u0001"+
- "\u002d\u0001\u0075\u0001\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
- "\u006e\u0001\u0069\u0001\u002d\u0001\uffff\u0001\u0069\u0001\u0063\u0001"+
- "\u0067\u0003\u002d\u0001\u0065\u0001\u0064\u0001\u006f\u0001\u0072\u0001"+
- "\uffff\u0001\u0069\u0001\u006e\u0002\uffff\u0001\u002d\u0001\u0072\u0001"+
- "\u006e\u0001\u0061\u0001\uffff\u0001\u0074\u0001\uffff\u0001\u006c\u0001"+
- "\u006e\u0002\uffff\u0001\u002d\u0001\u0074\u0001\u0072\u0001\u002d\u0001"+
- "\uffff\u0001\u002d\u0001\u0069\u0001\u0072\u0001\u006e\u0001\u0074\u0001"+
- "\u0067\u0001\uffff\u0001\u0069\u0001\u0079\u0001\uffff\u0001\u0065\u0001"+
- "\u006f\u0001\u0069\u0001\u002d\u0001\u0063\u0001\u0069\u0002\u002d\u0001"+
- "\u0073\u0001\u0065\u0001\u006d\u0003\u002d\u0001\u0061\u0001\uffff\u0001"+
- "\u0069\u0001\u006e\u0001\u0065\u0001\u0074\u0001\u002d\u0001\u0065\u0001"+
- "\u0067\u0002\uffff\u0001\u006c\u0001\u002d\u0001\u006e\u0002\u002d\u0001"+
- "\u006e\u0001\u006f\u0001\u0074\u0001\u0067\u0001\uffff\u0001\u002d\u0001"+
- "\u0065\u0001\uffff\u0001\u0074\u0001\u0063\u0001\u0074\u0001\u0079\u0001"+
- "\u0065\u0001\uffff\u0001\u0073\u0002\uffff\u0001\u0069\u0001\u0063\u0001"+
- "\u0072\u0002\u0065\u0001\uffff\u0001\u002d\u0001\u0067\u0003\uffff\u0001"+
- "\u0070\u0001\u002d\u0001\u006e\u0001\u0065\u0001\u0073\u0001\u0069\u0001"+
- "\u002d\u0001\u006c\u0001\u006e\u0001\uffff\u0001\u0072\u0002\uffff\u0001"+
- "\u0067\u0001\u0065\u0001\u0061\u0001\uffff\u0001\u0076\u0001\u0065\u0001"+
- "\u002d\u0001\uffff\u0001\u006e\u0002\uffff\u0001\u002d\u0001\u0061\u0001"+
- "\u006e\u0001\u0075\u0001\u0074\u0001\u0067\u0001\uffff\u0001\u0065\u0001"+
- "\u0067\u0001\u0073\u0002\u0065\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
- "\u0064\u0002\uffff\u0001\u0067\u0001\u002d\u0001\u0067\u0001\u0065\u0004"+
- "\u002d\u0001\u006e\u0001\u006f\u0001\uffff\u0001\u0074\u0001\u006e\u0002"+
- "\uffff\u0002\u002d\u0001\u0065\u0001\uffff\u0001\u0066\u0001\uffff\u0002"+
- "\u006e\u0001\u0063\u0001\u0074\u0002\u002d\u0001\uffff\u0001\u0071\u0002"+
- "\u002d\u0001\uffff\u0001\u0067\u0002\uffff\u0001\u002d\u0001\u006e\u0002"+
- "\u002d\u0001\uffff\u0001\u002d\u0001\u0069\u0001\u0074\u0001\u0079\u0002"+
- "\u002d\u0001\u0065\u0001\u0067\u0001\u0065\u0001\u0069\u0001\u0072\u0001"+
- "\u006d\u0001\uffff\u0001\u002d\u0001\u0068\u0001\u0073\u0001\u0067\u0002"+
- "\u002d\u0001\u006e\u0001\uffff\u0001\u0065\u0001\u002d\u0001\u0065\u0001"+
- "\u002d\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u0065\u0001\u002d\u0001"+
- "\uffff\u0001\u0067\u0001\uffff\u0001\u0074\u0002\u0073\u0001\u0063\u0001"+
- "\u002d\u0001\u0064\u0001\u002d\u0001\u0065\u0002\u002d\u0002\uffff\u0001"+
- "\u0073\u0001\u0069\u0001\u006f\u0001\uffff\u0002\u002d\u0002\uffff\u0001"+
- "\u0073\u0001\uffff\u0001\u002d\u0001\u006e\u0001\u0069\u0001\u0074\u0002"+
- "\uffff\u0001\u0073\u0001\u006f\u0001\u0065\u0001\u0074\u0001\u0067\u0001"+
- "\u0073\u0001\u002d\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0075\u0002"+
- "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001\u0073\u0001"+
- "\uffff\u0001\u0076\u0002\u002d\u0002\uffff\u0001\u002d\u0001\u006e\u0001"+
- "\u002d\u0001\u0074\u0001\u0076\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
- "\u0065\u0001\u002d\u0002\uffff\u0001\u0067\u0001\u002d\u0001\uffff\u0001"+
- "\u0064\u0001\uffff\u0001\u002d\u0001\u0074\u0001\u0065\u0002\u002d\u0001"+
- "\uffff\u0001\u002d\u0001\u0069\u0001\u0068\u0001\u002d\u0001\u0068\u0001"+
- "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0002\uffff\u0001\u002d\u0001"+
- "\u0074\u0001\u0072\u0002\uffff\u0001\u0070\u0001\uffff\u0001\u002d\u0001"+
- "\u006f\u0001\u002d\u0001\u0070\u0001\u0072\u0001\u0070\u0003\u002d\u0001"+
- "\uffff\u0001\u006f\u0001\u0065\u0001\u0073\u0002\uffff\u0002\u0065\u0003"+
- "\uffff\u0001\u002d\u0001\u006e\u0001\uffff\u0001\u002d\u0001\u0065\u0001"+
- "\uffff\u0001\u002d\u0001\uffff\u0001\u0070\u0001\u0073\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001\u0072\u0001\u006d\u0003"+
- "\uffff\u0001\u006f\u0001\u0069\u0001\uffff\u0001\u002d\u0003\uffff\u0002"+
- "\u002d\u0001\u0061\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0061\u0001"+
- "\u006d\u0001\u0061\u0001\u006f\u0003\uffff\u0001\u0064\u0001\u006e\u0001"+
- "\u0069\u0001\u0070\u0001\u002d\u0001\uffff\u0001\u006f\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u0061\u0004\u0069\u0001\u0065\u0001\u006e\u0001"+
- "\u0070\u0002\uffff\u0001\u0073\u0001\u0063\u0001\u002d\u0001\u0063\u0001"+
- "\u0061\u0002\u0072\u0001\u0065\u0001\u0063\u0001\u0062\u0001\u0061\u0001"+
- "\uffff\u0001\u0064\u0001\uffff\u0001\u0072\u0001\u0062\u0001\u006e\u0001"+
- "\u0074\u0001\u0062\u0001\u006e\u0002\u002d\u0002\u0065\u0001\uffff\u0001"+
- "\u0065\u0001\u0074\u0001\u0061\u0002\u002d\u0001\u0065\u0001\u006c\u0001"+
- "\u0072\u0001\u0065\u0001\u0061\u0001\u006c\u0001\u0073\u0001\u0065\u0001"+
- "\u0075\u0001\u0074\u0002\uffff\u0001\u006c\u0001\u002d\u0001\u0073\u0001"+
- "\u002d\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u002d\u0001\u0069\u0001"+
- "\u0061\u0001\u002d\u0001\u0074\u0001\u0069\u0001\u0074\u0001\u006d\u0001"+
- "\u0074\u0001\u002d\u0001\u0066\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
- "\u006f\u0001\u0065\u0001\uffff\u0001\u006e\u0001\u0074\u0001\uffff\u0001"+
- "\u006f\u0001\u006e\u0001\u0072\u0001\u002d\u0001\u0065\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u0072\u0001\u006c\u0001\u0067\u0001\u006f\u0001"+
- "\u0072\u0001\u0067\u0001\u0075\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
- "\u002d\u0001\u0066\u0001\u002d\u0001\u0072\u0002\u002d\u0001\u0063\u0002"+
- "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0002\uffff\u0001\u0074\u0002"+
- "\uffff\u0001\u0069\u0001\u006f\u0001\u006e\u0001\u002d\u0001\uffff",
- DFA19_maxS:
- "\u0001\uffff\u0001\u0074\u0001\u0079\u0002\u006f\u0001\u0078\u0001"+
- "\u0075\u0003\u0074\u0002\u006f\u0001\u0073\u0002\u0072\u0001\u0077\u0001"+
- "\u0065\u0001\u0079\u0001\u0073\u0001\u0065\u0001\u006f\u0001\u0071\u0001"+
- "\u0061\u0002\u0065\u0001\u0075\u0001\u007d\u0001\u003a\u0002\uffff\u0001"+
- "\u007c\u0004\uffff\u0002\u003d\u0001\uffff\u0001\u0029\u0001\u0023\u0001"+
- "\uffff\u0001\u003e\u0002\uffff\u0001\u002d\u0001\u003f\u0002\u003e\u0001"+
- "\u0039\u0002\uffff\u0001\u007a\u0004\uffff\u0001\u0065\u0001\uffff\u0001"+
- "\u0079\u0002\u007a\u0001\u0072\u0001\u006c\u0001\u0074\u0002\u0070\u0001"+
- "\uffff\u0001\u0073\u0001\u0075\u0001\u007a\u0001\u0066\u0001\u0065\u0001"+
- "\u0074\u0001\u0069\u0001\u0075\u0001\u0073\u0001\u0076\u0001\u0063\u0001"+
- "\u0073\u0001\u0070\u0001\u0074\u0001\u007a\u0001\u0065\u0001\u0074\u0001"+
- "\u0072\u0001\u006e\u0001\u0072\u0002\u006f\u0001\u007a\u0001\u006f\u0001"+
- "\u007a\u0001\u0069\u0001\u007a\u0001\u0070\u0002\u007a\u0001\u0065\u0001"+
- "\u0078\u0002\u007a\u0001\u0077\u0001\u0073\u0001\u006e\u0001\u006d\u0002"+
- "\u007a\u0001\u006f\u0001\u007a\u0001\u0074\u0001\u007a\u0001\u006a\u0001"+
- "\u007a\u0001\u0063\u0001\u0074\u0001\u006f\u0001\u0072\u0001\u0073\u0002"+
- "\u0072\u0001\u0074\u0001\u006f\u0001\u006e\u0001\u006d\u0003\u0069\u0001"+
- "\u0076\u0001\u0078\u0001\u0065\u0001\u007a\u0001\u0079\u0001\u0070\u0002"+
- "\u006d\u0001\u006f\u0001\u0070\u0001\u0069\u0002\u0072\u0001\u0069\u0001"+
- "\u0074\u0001\u0069\u0001\u0072\u0001\u0075\u0001\u004e\u0001\u0072\u0001"+
- "\u0079\u0001\u006f\u0003\uffff\u0001\u007a\u0012\uffff\u0001\u0078\u000b"+
- "\uffff\u0001\u002d\u0001\u007a\u0009\uffff\u0001\u0065\u0007\uffff\u0002"+
- "\u0065\u0001\uffff\u0001\u0065\u0002\u007a\u0001\u0065\u0001\uffff\u0001"+
- "\u0072\u0001\uffff\u0001\u0061\u0001\u007a\u0002\u0065\u0001\u0073\u0001"+
- "\u007a\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u006f\u0001\u0061\u0001"+
- "\u0074\u0001\u0063\u0001\u006c\u0001\u0063\u0001\u006c\u0001\u006d\u0001"+
- "\u0074\u0001\u0079\u0001\u006e\u0001\u006c\u0001\u0061\u0001\u0063\u0001"+
- "\u0065\u0001\u007a\u0001\u0069\u0001\u0063\u0001\u0066\u0001\u0074\u0001"+
- "\u0075\u0001\u006d\u0001\u0065\u0001\u0074\u0001\u006f\u0001\u007a\u0001"+
- "\u0069\u0001\uffff\u0001\u0072\u0002\u0065\u0001\u0063\u0001\u0074\u0001"+
- "\u006c\u0001\u007a\u0001\u0063\u0001\u0073\u0001\u006d\u0001\u006f\u0001"+
- "\u006e\u0001\u006f\u0001\u0072\u0001\uffff\u0001\u0061\u0001\u0075\u0001"+
- "\uffff\u0001\u0076\u0001\uffff\u0001\u006f\u0001\u0065\u0001\u0074\u0001"+
- "\u006f\u0001\u0069\u0001\u0065\u0002\uffff\u0001\u006d\u0001\u007a\u0001"+
- "\u0074\u0001\u0067\u0001\u0073\u0001\u007a\u0001\u0065\u0002\uffff\u0001"+
- "\u0065\u0001\u0070\u0001\u007a\u0001\u0074\u0001\u0075\u0001\u0065\u0001"+
- "\u0074\u0001\uffff\u0001\u0070\u0001\u0065\u0001\u007a\u0001\uffff\u0001"+
- "\u006e\u0001\uffff\u0001\u0069\u0001\u0065\u0001\uffff\u0001\u0065\u0001"+
- "\u0079\u0001\uffff\u0001\u0075\u0001\u0065\u0001\u0074\u0001\u0076\u0002"+
- "\u0063\u0001\u0069\u0001\u0061\u0001\u0075\u0001\u0072\u0001\u006d\u0001"+
- "\u0070\u0001\u0069\u0002\u0065\u0001\u0072\u0001\u0066\u0001\u0074\u0001"+
- "\u0065\u0001\u0064\u0001\u0074\u0001\u0070\u0001\u0075\u0001\u0061\u0001"+
- "\u006c\u0002\u0061\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u0061\u0001"+
- "\u007a\u0001\u0065\u0001\u0062\u0001\u0065\u0001\u0071\u0001\u0072\u0001"+
- "\u0061\u0001\u0065\u0001\u006e\u0001\u0075\u0001\u0069\u0001\u0073\u0001"+
- "\u0072\u0001\u006c\u0001\u0064\u0001\u0068\u0001\u0064\u0001\u0067\u0001"+
- "\u0064\u0001\u0065\u0001\u007a\u0001\u006f\u0001\u007a\u0001\u0074\u0004"+
- "\uffff\u0001\u002d\u0003\uffff\u0001\u0065\u0001\u0073\u0002\uffff\u0001"+
- "\u006e\u0001\u0069\u0001\u0079\u0001\u0077\u0001\uffff\u0001\u0072\u0001"+
- "\u006e\u0001\u007a\u0001\uffff\u0001\u002d\u0001\u0064\u0001\u0072\u0001"+
- "\u006b\u0002\u007a\u0001\u0068\u0001\u0064\u0001\u006b\u0002\u0065\u0001"+
- "\u0074\u0001\u0069\u0001\u007a\u0001\u0074\u0001\u0061\u0001\u006d\u0001"+
- "\u0075\u0001\u0065\u0001\u0074\u0001\uffff\u0001\u0074\u0001\u0072\u0001"+
- "\u0065\u0001\u0061\u0001\u006d\u0001\u0065\u0001\u007a\u0001\u0079\u0001"+
- "\u0064\u0001\uffff\u0001\u0072\u0001\u0079\u0001\u0070\u0001\u0072\u0001"+
- "\u0074\u0001\u007a\u0001\u006f\u0001\u0069\u0001\uffff\u0002\u0074\u0001"+
- "\u007a\u0001\u0070\u0001\u0064\u0001\u0074\u0001\u007a\u0001\u0074\u0001"+
- "\u0070\u0001\u007a\u0002\u0072\u0001\u0061\u0002\u0072\u0001\u007a\u0001"+
- "\u006e\u0001\u0078\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u0075\u0001"+
- "\u0074\u0001\uffff\u0001\u006c\u0001\u0072\u0001\u007a\u0001\u006c\u0001"+
- "\u0066\u0001\uffff\u0001\u007a\u0002\u0073\u0001\u007a\u0001\u006e\u0001"+
- "\u0072\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u006f\u0001\u0072\u0001"+
- "\u0063\u0001\u007a\u0001\u0072\u0001\u006e\u0001\u0067\u0003\u0065\u0001"+
- "\u0069\u0002\u0065\u0001\u006d\u0001\u0074\u0001\u0073\u0001\u0063\u0001"+
- "\u0070\u0001\u006c\u0001\u0074\u0001\u006d\u0001\u007a\u0001\u0073\u0001"+
- "\u007a\u0001\u006d\u0001\u0065\u0001\u007a\u0001\u0069\u0001\u0065\u0001"+
- "\u007a\u0001\u0069\u0001\u0063\u0001\u007a\u0001\u0072\u0001\u006d\u0001"+
- "\u0061\u0001\u006c\u0001\u0074\u0002\u007a\u0001\u0061\u0001\u0074\u0001"+
- "\uffff\u0001\u007a\u0001\u006c\u0001\u0073\u0001\u006e\u0001\u0075\u0001"+
- "\u0064\u0001\u0074\u0001\u0072\u0001\u0067\u0001\u0064\u0001\u0065\u0001"+
- "\u0061\u0001\u0069\u0001\u0065\u0001\u007a\u0001\u0065\u0001\u006f\u0001"+
- "\u007a\u0001\u0063\u0001\u0068\u0001\u007a\u0001\u0072\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u007a\u0001\uffff\u0001\u0074\u0001\u0064\u0001"+
- "\u0062\u0001\u007a\u0001\u0069\u0001\u007a\u0001\u0064\u0001\uffff\u0001"+
- "\u0075\u0001\u0061\u0001\u0065\u0001\u007a\u0001\uffff\u0001\u0062\u0001"+
- "\uffff\u0003\u007a\u0001\u0074\u0001\u0063\u0001\u006e\u0001\u0072\u0001"+
- "\u0078\u0001\u0069\u0002\u006e\u0001\uffff\u0001\u007a\u0001\u0072\u0001"+
- "\u0061\u0001\u006c\u0001\u006e\u0001\u0065\u0001\u007a\u0001\u0069\u0001"+
- "\u0072\u0001\u006e\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u007a\u0001"+
- "\u0069\u0001\u0065\u0001\u007a\u0001\u0074\u0001\u006e\u0001\u006c\u0001"+
- "\uffff\u0001\u0077\u0001\u0063\u0001\u0067\u0001\u0069\u0001\u007a\u0001"+
- "\uffff\u0001\u0074\u0002\u007a\u0001\uffff\u0001\u0065\u0001\u007a\u0001"+
- "\uffff\u0001\u0074\u0001\u0069\u0001\u006e\u0001\u0074\u0002\u0073\u0001"+
- "\u0072\u0001\uffff\u0001\u0069\u0001\u007a\u0002\uffff\u0001\u0061\u0001"+
- "\u007a\u0001\u0073\u0001\u0063\u0001\uffff\u0001\u0065\u0001\u0079\u0001"+
- "\uffff\u0001\u002d\u0001\u0070\u0001\uffff\u0001\u0068\u0001\u0065\u0001"+
- "\u007a\u0001\uffff\u0001\u0069\u0001\uffff\u0001\u006e\u0001\u007a\u0001"+
- "\u0074\u0001\uffff\u0001\u0073\u0001\u0074\u0002\u0072\u0001\u0064\u0001"+
- "\u0072\u0001\u006f\u0001\u0073\u0001\u006e\u0002\u0069\u0001\u0065\u0002"+
- "\u0074\u0001\u007a\u0001\u0065\u0001\u007a\u0001\u0069\u0001\uffff\u0001"+
- "\u0066\u0001\uffff\u0001\u0061\u0001\u007a\u0001\uffff\u0001\u0074\u0001"+
- "\u006e\u0001\uffff\u0001\u006e\u0001\u0068\u0001\uffff\u0001\u006e\u0001"+
- "\u0065\u0001\u0063\u0002\u0069\u0002\uffff\u0001\u0075\u0001\u007a\u0001"+
- "\u0077\u0001\uffff\u0001\u0069\u0002\u007a\u0002\u0065\u0001\u0069\u0001"+
- "\u0063\u0001\u007a\u0001\u0061\u0001\u007a\u0001\u0062\u0001\u006f\u0001"+
- "\u007a\u0001\uffff\u0001\u007a\u0001\u0077\u0001\u0075\u0001\uffff\u0001"+
- "\u0061\u0001\u0074\u0001\u007a\u0001\uffff\u0001\u0079\u0001\u0064\u0003"+
- "\uffff\u0001\u006f\u0001\u0069\u0001\u0075\u0001\uffff\u0001\u006e\u0001"+
- "\uffff\u0001\u007a\u0002\u0072\u0001\u007a\u0001\uffff\u0001\u006c\u0003"+
- "\uffff\u0001\u0069\u0002\u0074\u0001\u0075\u0002\u0074\u0001\u006e\u0001"+
- "\u0075\u0001\u0061\u0001\uffff\u0001\u0065\u0001\u006c\u0001\u0074\u0001"+
- "\u0064\u0001\u007a\u0001\uffff\u0001\u0074\u0001\u0065\u0001\u0063\u0001"+
- "\u006e\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u006e\u0001\u007a\u0001"+
- "\uffff\u0001\u007a\u0001\u0061\u0001\u0079\u0001\u0069\u0001\u0068\u0001"+
- "\u006e\u0001\u006f\u0001\uffff\u0001\u0069\u0002\uffff\u0001\u0073\u0001"+
- "\u006e\u0001\uffff\u0001\u007a\u0001\u0074\u0001\u0063\u0001\u007a\u0001"+
- "\u0069\u0001\u0065\u0001\u0069\u0001\u0074\u0001\uffff\u0001\u0067\u0001"+
- "\uffff\u0001\u007a\u0001\u0061\u0002\u007a\u0001\u0073\u0001\u0061\u0001"+
- "\u0065\u0001\u0073\u0001\uffff\u0001\u0074\u0001\u007a\u0001\u0064\u0001"+
- "\u006e\u0001\uffff\u0003\u007a\u0001\u0061\u0001\u006e\u0001\u0069\u0001"+
- "\u0076\u0001\u0075\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u006f\u0001"+
- "\u007a\u0001\u0075\u0001\u007a\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
- "\u006e\u0001\u0069\u0001\u007a\u0001\uffff\u0001\u0069\u0001\u0063\u0001"+
- "\u0067\u0003\u007a\u0001\u0065\u0001\u0064\u0001\u006f\u0001\u0072\u0001"+
- "\uffff\u0001\u0069\u0001\u006e\u0002\uffff\u0001\u007a\u0001\u0072\u0001"+
- "\u006e\u0001\u0061\u0001\uffff\u0001\u0074\u0001\uffff\u0001\u006c\u0001"+
- "\u006e\u0002\uffff\u0001\u007a\u0001\u0074\u0001\u0072\u0001\u007a\u0001"+
- "\uffff\u0001\u007a\u0001\u0069\u0001\u0072\u0001\u006e\u0001\u0074\u0001"+
- "\u0067\u0001\uffff\u0001\u0069\u0001\u0079\u0001\uffff\u0001\u0065\u0001"+
- "\u006f\u0001\u0069\u0001\u007a\u0001\u0063\u0001\u0069\u0002\u007a\u0001"+
- "\u0073\u0001\u0065\u0001\u006d\u0001\u007a\u0001\u002d\u0001\u007a\u0001"+
- "\u0069\u0001\uffff\u0001\u0069\u0001\u006e\u0001\u0065\u0001\u0074\u0001"+
- "\u007a\u0001\u0065\u0001\u0067\u0002\uffff\u0001\u006c\u0001\u007a\u0001"+
- "\u006e\u0002\u007a\u0001\u006e\u0001\u006f\u0001\u0074\u0001\u0067\u0001"+
- "\uffff\u0001\u007a\u0001\u0065\u0001\uffff\u0001\u0074\u0001\u0063\u0001"+
- "\u0074\u0001\u0079\u0001\u0065\u0001\uffff\u0001\u0073\u0002\uffff\u0001"+
- "\u0069\u0001\u0063\u0001\u0072\u0002\u0065\u0001\uffff\u0001\u007a\u0001"+
- "\u0067\u0003\uffff\u0001\u0070\u0001\u002d\u0001\u006e\u0001\u0065\u0001"+
- "\u0073\u0001\u0069\u0001\u007a\u0001\u006c\u0001\u006e\u0001\uffff\u0001"+
- "\u0072\u0002\uffff\u0001\u0067\u0002\u0065\u0001\uffff\u0001\u0076\u0001"+
- "\u0065\u0001\u007a\u0001\uffff\u0001\u006e\u0002\uffff\u0001\u007a\u0001"+
- "\u0061\u0001\u006e\u0001\u0075\u0001\u0074\u0001\u0067\u0001\uffff\u0001"+
- "\u0065\u0001\u0067\u0001\u0073\u0002\u0065\u0001\u007a\u0001\uffff\u0001"+
- "\u007a\u0001\u0064\u0002\uffff\u0001\u0067\u0001\u007a\u0001\u0067\u0001"+
- "\u0065\u0002\u007a\u0001\u002d\u0001\u007a\u0001\u006e\u0001\u006f\u0001"+
- "\uffff\u0001\u0074\u0001\u006e\u0002\uffff\u0002\u007a\u0001\u0065\u0001"+
- "\uffff\u0001\u0073\u0001\uffff\u0002\u006e\u0001\u0063\u0001\u0074\u0002"+
- "\u007a\u0001\uffff\u0001\u0071\u0002\u007a\u0001\uffff\u0001\u0067\u0002"+
- "\uffff\u0001\u007a\u0001\u006e\u0001\u007a\u0001\u002d\u0001\uffff\u0001"+
- "\u007a\u0001\u0069\u0001\u0074\u0001\u0079\u0002\u007a\u0001\u0065\u0001"+
- "\u0067\u0001\u0065\u0001\u0069\u0001\u0072\u0001\u006d\u0001\uffff\u0001"+
- "\u007a\u0001\u0068\u0001\u0073\u0001\u0067\u0002\u007a\u0001\u006e\u0001"+
- "\uffff\u0001\u0065\u0001\u007a\u0001\u0065\u0001\u007a\u0001\u0073\u0001"+
- "\u0074\u0001\u006c\u0001\u0065\u0001\u007a\u0001\uffff\u0001\u0067\u0001"+
- "\uffff\u0001\u0074\u0002\u0073\u0001\u0063\u0001\u007a\u0001\u0064\u0001"+
- "\u007a\u0001\u0065\u0002\u007a\u0002\uffff\u0001\u0073\u0001\u0069\u0001"+
- "\u006f\u0001\uffff\u0002\u007a\u0002\uffff\u0001\u0073\u0001\uffff\u0001"+
- "\u007a\u0001\u006e\u0001\u0069\u0001\u0074\u0002\uffff\u0001\u0073\u0001"+
- "\u006f\u0001\u0065\u0001\u0074\u0001\u0067\u0001\u0073\u0001\u007a\u0001"+
- "\uffff\u0001\u006e\u0001\uffff\u0001\u0075\u0002\uffff\u0001\u007a\u0001"+
- "\uffff\u0001\u007a\u0001\uffff\u0001\u0073\u0001\uffff\u0001\u0076\u0002"+
- "\u007a\u0002\uffff\u0001\u007a\u0001\u006e\u0001\u007a\u0001\u0074\u0001"+
- "\u0076\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u0065\u0001\u007a\u0002"+
- "\uffff\u0001\u0067\u0001\u007a\u0001\uffff\u0001\u0064\u0001\uffff\u0001"+
- "\u007a\u0001\u0074\u0001\u0065\u0002\u007a\u0001\uffff\u0001\u007a\u0001"+
- "\u0069\u0001\u0068\u0001\u007a\u0001\u0068\u0001\uffff\u0001\u007a\u0001"+
- "\uffff\u0001\u007a\u0002\uffff\u0001\u007a\u0001\u0074\u0001\u0072\u0002"+
- "\uffff\u0001\u0070\u0001\uffff\u0001\u007a\u0001\u006f\u0001\u007a\u0001"+
- "\u0070\u0001\u0072\u0001\u0070\u0003\u007a\u0001\uffff\u0001\u006f\u0001"+
- "\u0065\u0001\u0073\u0002\uffff\u0002\u0065\u0003\uffff\u0001\u007a\u0001"+
- "\u006e\u0001\uffff\u0001\u007a\u0001\u0065\u0001\uffff\u0001\u007a\u0001"+
- "\uffff\u0001\u0070\u0001\u0073\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
- "\u002d\u0001\uffff\u0001\u0072\u0001\u006d\u0003\uffff\u0001\u006f\u0001"+
- "\u0069\u0001\uffff\u0001\u007a\u0003\uffff\u0001\u007a\u0001\u002d\u0001"+
- "\u0061\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0061\u0001\u006d\u0001"+
- "\u0061\u0001\u006f\u0003\uffff\u0001\u0064\u0001\u006e\u0001\u0069\u0001"+
- "\u0070\u0001\u007a\u0001\uffff\u0001\u006f\u0001\uffff\u0001\u007a\u0001"+
- "\uffff\u0001\u0061\u0004\u0069\u0001\u0065\u0001\u006e\u0001\u0070\u0002"+
- "\uffff\u0001\u0073\u0001\u0063\u0001\u007a\u0001\u0063\u0001\u0061\u0002"+
- "\u0072\u0001\u0065\u0001\u0063\u0001\u0062\u0001\u0061\u0001\uffff\u0001"+
- "\u0064\u0001\uffff\u0001\u0072\u0001\u0062\u0001\u006e\u0001\u0074\u0001"+
- "\u0062\u0001\u006e\u0002\u007a\u0002\u0065\u0001\uffff\u0001\u0065\u0001"+
- "\u0074\u0001\u0061\u0001\u002d\u0001\u007a\u0001\u0065\u0001\u006c\u0001"+
- "\u0072\u0001\u0065\u0001\u0061\u0001\u006c\u0001\u0073\u0001\u0065\u0001"+
- "\u0075\u0001\u0074\u0002\uffff\u0001\u006c\u0001\u007a\u0001\u0073\u0001"+
- "\u007a\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u007a\u0001\u0069\u0001"+
- "\u0061\u0001\u007a\u0001\u0074\u0001\u0069\u0001\u0074\u0001\u006d\u0001"+
- "\u0074\u0001\u007a\u0001\u0066\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
- "\u006f\u0001\u0065\u0001\uffff\u0001\u006e\u0001\u0074\u0001\uffff\u0001"+
- "\u006f\u0001\u006e\u0001\u0072\u0001\u007a\u0001\u0065\u0001\uffff\u0001"+
- "\u007a\u0001\uffff\u0001\u0072\u0001\u006c\u0001\u0067\u0001\u006f\u0001"+
- "\u0072\u0001\u0067\u0001\u0075\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
- "\u007a\u0001\u0066\u0001\u007a\u0001\u0072\u0002\u007a\u0001\u0063\u0002"+
- "\uffff\u0001\u007a\u0001\uffff\u0001\u007a\u0002\uffff\u0001\u0074\u0002"+
- "\uffff\u0001\u0069\u0001\u006f\u0001\u006e\u0001\u007a\u0001\uffff",
- DFA19_acceptS:
- "\u001c\uffff\u0001\u00d5\u0001\u00d6\u0001\uffff\u0001\u00da\u0001"+
- "\u00db\u0001\u00dc\u0001\u00dd\u0002\uffff\u0001\u00e0\u0002\uffff\u0001"+
- "\u00e3\u0001\uffff\u0001\u00e5\u0001\u00e6\u0005\uffff\u0001\u00f7\u0001"+
- "\u00ff\u0001\uffff\u0001\u0103\u0001\u0104\u0001\u0105\u0001\u0106\u0001"+
- "\uffff\u0001\u010e\u0008\uffff\u0001\u0105\u0052\uffff\u0001\u00d3\u0001"+
- "\u00d8\u0001\u00f8\u0001\uffff\u0001\u010d\u0001\u00d4\u0001\u00d5\u0001"+
- "\u00d6\u0001\u00d7\u0001\u00d9\u0001\u00da\u0001\u00db\u0001\u00dc\u0001"+
- "\u00dd\u0001\u00de\u0001\u00f4\u0001\u00f3\u0001\u00df\u0001\u00f0\u0001"+
- "\u00e0\u0001\u00fa\u0001\u00e1\u0001\uffff\u0001\u00e2\u0001\u00e3\u0001"+
- "\u00fe\u0001\u00e4\u0001\u00e5\u0001\u00e6\u0001\u00fc\u0001\u00e7\u0001"+
- "\u00ea\u0001\u00ec\u0001\u00f6\u0002\uffff\u0001\u00e8\u0001\u00eb\u0001"+
- "\u00ed\u0001\u00e9\u0001\u00ef\u0001\u00f5\u0001\u00ee\u0001\u00f2\u0001"+
- "\u00f1\u0001\uffff\u0001\u00f7\u0001\u00ff\u0001\u0100\u0001\u0103\u0001"+
- "\u0104\u0001\u0106\u0001\u010a\u0002\uffff\u0001\u010c\u0004\uffff\u0001"+
- "\u0004\u0001\uffff\u0001\u0006\u0008\uffff\u0001\u000a\u001b\uffff\u0001"+
- "\u0020\u000e\uffff\u0001\u0028\u0002\uffff\u0001\u002a\u0001\uffff\u0001"+
- "\u002c\u0006\uffff\u0001\u002e\u0001\u0032\u0007\uffff\u0001\u0035\u0001"+
- "\u0038\u0007\uffff\u0001\u003c\u0003\uffff\u0001\u00a9\u0001\uffff\u0001"+
- "\u0041\u0002\uffff\u0001\u0043\u0002\uffff\u0001\u00ce\u001d\uffff\u0001"+
- "\u005c\u0019\uffff\u0001\u00f9\u0001\u0107\u0001\u0102\u0001\u0101\u0001"+
- "\uffff\u0001\u00fd\u0001\u0109\u0001\u010b\u0002\uffff\u0001\u0003\u0001"+
- "\u0097\u0004\uffff\u0001\u0096\u0003\uffff\u0001\u00d0\u0014\uffff\u0001"+
- "\u0018\u0009\uffff\u0001\u006d\u0008\uffff\u0001\u0026\u0013\uffff\u0001"+
- "\u0034\u0003\uffff\u0001\u0037\u0005\uffff\u0001\u0039\u0007\uffff\u0001"+
- "\u00aa\u002b\uffff\u0001\u007d\u0016\uffff\u0001\u0073\u0001\uffff\u0001"+
- "\u00cd\u0009\uffff\u0001\u00d1\u0004\uffff\u0001\u000b\u0001\uffff\u0001"+
- "\u000c\u000b\uffff\u0001\u0085\u000c\uffff\u0001\u001c\u0007\uffff\u0001"+
- "\u00c2\u0005\uffff\u0001\u009f\u0003\uffff\u0001\u00a3\u0002\uffff\u0001"+
- "\u002b\u0007\uffff\u0001\u0089\u0002\uffff\u0001\u0033\u0001\u008c\u0004"+
- "\uffff\u0001\u00c3\u0002\uffff\u0001\u00a8\u0002\uffff\u0001\u0074\u0003"+
- "\uffff\u0001\u003f\u0001\uffff\u0001\u0040\u0003\uffff\u0001\u0075\u0012"+
- "\uffff\u0001\u00b6\u0001\uffff\u0001\u00b0\u0002\uffff\u0001\u0055\u0002"+
- "\uffff\u0001\u0056\u0002\uffff\u0001\u0092\u0005\uffff\u0001\u005a\u0001"+
- "\u005b\u0003\uffff\u0001\u007f\u000d\uffff\u0001\u0080\u0003\uffff\u0001"+
- "\u0095\u0003\uffff\u0001\u00be\u0002\uffff\u0001\u00d2\u0001\u00fb\u0001"+
- "\u0108\u0003\uffff\u0001\u004f\u0001\uffff\u0001\u0083\u0004\uffff\u0001"+
- "\u00c0\u0001\uffff\u0001\u0067\u0001\u000e\u0001\u00c6\u0009\uffff\u0001"+
- "\u0069\u0005\uffff\u0001\u006c\u0006\uffff\u0001\u001d\u0002\uffff\u0001"+
- "\u0021\u0007\uffff\u0001\u0087\u0001\uffff\u0001\u00a1\u0001\u00a2\u0002"+
- "\uffff\u0001\u006e\u0008\uffff\u0001\u00cb\u0001\uffff\u0001\u0036\u0008"+
- "\uffff\u0001\u008e\u0004\uffff\u0001\u0044\u000f\uffff\u0001\u0059\u0001"+
- "\uffff\u0001\u007b\u0003\uffff\u0001\u00b1\u000a\uffff\u0001\u005d\u0002"+
- "\uffff\u0001\u00b8\u0001\u005f\u0004\uffff\u0001\u00ba\u0001\uffff\u0001"+
- "\u0094\u0002\uffff\u0001\u0064\u0001\u00c5\u0004\uffff\u0001\u00bf\u0006"+
- "\uffff\u0001\u008b\u0002\uffff\u0001\u0084\u000f\uffff\u0001\u0086\u0007"+
- "\uffff\u0001\u009d\u0001\u0022\u0009\uffff\u0001\u002d\u0002\uffff\u0001"+
- "\u0088\u0005\uffff\u0001\u00a6\u0001\uffff\u0001\u003a\u0001\u008d\u0005"+
- "\uffff\u0001\u0042\u0002\uffff\u0001\u004e\u0001\u00ab\u0001\u0047\u0009"+
- "\uffff\u0001\u00ae\u0001\uffff\u0001\u0058\u0001\u0057\u0003\uffff\u0001"+
- "\u0052\u0003\uffff\u0001\u007c\u0001\uffff\u0001\u0050\u0001\u008f\u0006"+
- "\uffff\u0001\u00cf\u0006\uffff\u0001\u0081\u0002\uffff\u0001\u00bb\u0001"+
- "\u0065\u000a\uffff\u0001\u0010\u0002\uffff\u0001\u0068\u0001\u0099\u0003"+
- "\uffff\u0001\u0013\u0001\uffff\u0001\u0014\u0006\uffff\u0001\u001b\u0003"+
- "\uffff\u0001\u009e\u0001\uffff\u0001\u00c9\u0001\u00ca\u0004\uffff\u0001"+
- "\u002f\u000c\uffff\u0001\u0045\u0007\uffff\u0001\u0077\u0009\uffff\u0001"+
- "\u007a\u0001\uffff\u0001\u0090\u000a\uffff\u0001\u0063\u0001\u00bd\u0003"+
- "\uffff\u0001\u0001\u0002\uffff\u0001\u0066\u0001\u0008\u0001\uffff\u0001"+
- "\u000d\u0004\uffff\u0001\u0098\u0001\u00c1\u0007\uffff\u0001\u009c\u0001"+
- "\uffff\u0001\u0019\u0001\uffff\u0001\u001f\u0001\u0023\u0001\uffff\u0001"+
- "\u0027\u0001\uffff\u0001\u0029\u0001\uffff\u0001\u0030\u0003\uffff\u0001"+
- "\u0070\u0001\u00a5\u0006\uffff\u0001\u0046\u0003\uffff\u0001\u004a\u0001"+
- "\u0079\u0002\uffff\u0001\u008a\u0001\uffff\u0001\u00b5\u0005\uffff\u0001"+
- "\u00b3\u0005\uffff\u0001\u007e\u0001\uffff\u0001\u0093\u0001\uffff\u0001"+
- "\u0061\u0001\u0062\u0003\uffff\u0001\u0005\u0001\u0007\u0001\uffff\u0001"+
- "\u000f\u0009\uffff\u0001\u009b\u0003\uffff\u0001\u0024\u0001\u00a0\u0002"+
- "\uffff\u0001\u0031\u0001\u00cc\u0001\u00a7\u0002\uffff\u0001\u003b\u0002"+
- "\uffff\u0001\u004d\u0001\uffff\u0001\u00ac\u0002\uffff\u0001\u0048\u0001"+
- "\uffff\u0001\u0078\u0001\uffff\u0001\u0051\u0002\uffff\u0001\u00b2\u0001"+
- "\u00b4\u0001\u00c4\u0002\uffff\u0001\u00b7\u0001\uffff\u0001\u0060\u0001"+
- "\u00b9\u0001\u00bc\u0003\uffff\u0001\u00c7\u0001\uffff\u0001\u00c8\u0004"+
- "\uffff\u0001\u0015\u0001\u0017\u0001\u009a\u0005\uffff\u0001\u0071\u0001"+
- "\uffff\u0001\u003d\u0001\uffff\u0001\u00ad\u0008\uffff\u0001\u005e\u0001"+
- "\u0082\u000b\uffff\u0001\u00a4\u0001\uffff\u0001\u003e\u000a\uffff\u0001"+
- "\u0011\u000f\uffff\u0001\u0091\u0001\u00af\u0006\uffff\u0001\u001a\u000b"+
- "\uffff\u0001\u0009\u0001\uffff\u0001\u006a\u0002\uffff\u0001\u001e\u0002"+
- "\uffff\u0001\u0072\u0005\uffff\u0001\u0054\u0001\uffff\u0001\u0012\u0007"+
- "\uffff\u0001\u004c\u0001\uffff\u0001\u0002\u0007\uffff\u0001\u0053\u0001"+
- "\u006b\u0001\uffff\u0001\u0025\u0001\uffff\u0001\u0076\u0001\u0049\u0001"+
- "\uffff\u0001\u0016\u0001\u006f\u0004\uffff\u0001\u004b",
- DFA19_specialS:
- "\u0001\u0001\u001a\uffff\u0001\u0002\u01f6\uffff\u0001\u0000\u02f8"+
- "\uffff}>",
- DFA19_transitionS: [
- "\u0009\u0039\u0002\u0037\u0002\u0039\u0001\u0037\u0012\u0039"+
- "\u0001\u0037\u0001\u0024\u0001\u0035\u0001\u0026\u0001\u001d"+
- "\u0001\u0025\u0001\u0027\u0001\u0034\u0001\u001b\u0001\u001c"+
- "\u0001\u002a\u0001\u002b\u0001\u0028\u0001\u002c\u0001\u0030"+
- "\u0001\u002f\u000a\u0038\u0001\u0023\u0001\u0031\u0001\u002d"+
- "\u0001\u0022\u0001\u002e\u0001\u0029\u0001\u0032\u000d\u0036"+
- "\u0001\u0016\u0002\u0036\u0001\u0033\u0009\u0036\u0001\u0020"+
- "\u0001\u0039\u0001\u0021\u0001\u0039\u0001\u0036\u0001\u0039"+
- "\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001\u0005"+
- "\u0001\u0006\u0001\u0007\u0001\u0036\u0001\u0008\u0001\u000c"+
- "\u0001\u0018\u0001\u0009\u0001\u000a\u0001\u000b\u0001\u000d"+
- "\u0001\u000e\u0001\u0019\u0001\u0010\u0001\u000f\u0001\u0011"+
- "\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001\u0036"+
- "\u0001\u0017\u0001\u001e\u0001\u001a\u0001\u001f\uff82\u0039",
- "\u0001\u003f\u0005\uffff\u0001\u003e\u0001\u0041\u0001\u003a"+
- "\u0001\uffff\u0001\u0040\u0001\uffff\u0001\u003d\u0001\u003b"+
- "\u0001\u003c",
- "\u0001\u0043\u0003\uffff\u0001\u0046\u0009\uffff\u0001\u0044"+
- "\u0002\uffff\u0001\u0047\u0006\uffff\u0001\u0045",
- "\u0001\u0048\u0006\uffff\u0001\u0049\u0006\uffff\u0001\u004a",
- "\u0001\u004b\u0003\uffff\u0001\u004c\u0005\uffff\u0001\u004d",
- "\u0001\u004e\u0001\u004f\u0001\u0050\u0002\uffff\u0001\u0051"+
- "\u0004\uffff\u0001\u0052\u0001\uffff\u0001\u0053",
- "\u0001\u0056\u0005\uffff\u0001\u0054\u0002\uffff\u0001\u0057"+
- "\u0001\uffff\u0001\u0058\u0001\u0055",
- "\u0001\u0059\u000c\uffff\u0001\u005a\u0001\uffff\u0001\u005b",
- "\u0001\u005c\u0001\uffff\u0001\u005d\u0006\uffff\u0001\u005e"+
- "\u0001\u005f\u0004\uffff\u0001\u0060\u0001\u0061",
- "\u0001\u0062\u0003\uffff\u0001\u0063\u0009\uffff\u0001\u0065"+
- "\u0004\uffff\u0001\u0064",
- "\u0001\u0067\u0005\uffff\u0001\u0066",
- "\u0001\u0068\u0003\uffff\u0001\u0069\u0009\uffff\u0001\u006a",
- "\u0001\u006b",
- "\u0001\u006f\u0001\u0071\u0002\uffff\u0001\u006c\u0007\uffff"+
- "\u0001\u0070\u0001\uffff\u0001\u006d\u0001\uffff\u0001\u006e",
- "\u0001\u0072\u0003\uffff\u0001\u0074\u0002\uffff\u0001\u0076"+
- "\u0006\uffff\u0001\u0075\u0002\uffff\u0001\u0073",
- "\u0001\u0078\u0001\uffff\u0001\u0079\u0001\uffff\u0001\u007a"+
- "\u0005\uffff\u0001\u007e\u0001\u007c\u0002\uffff\u0001\u007b"+
- "\u0004\uffff\u0001\u0077\u0002\uffff\u0001\u007d",
- "\u0001\u007f",
- "\u0001\u0080\u0002\uffff\u0001\u0081\u0001\u0086\u0005\uffff"+
- "\u0001\u0082\u0002\uffff\u0001\u0083\u0002\uffff\u0001\u0085"+
- "\u0003\uffff\u0001\u0084",
- "\u0001\u0087\u0001\uffff\u0001\u0088\u0002\uffff\u0001\u0089",
- "\u0001\u008a\u0003\uffff\u0001\u008b",
- "\u0001\u008e\u0002\uffff\u0001\u008c\u0001\u008d\u0005\uffff"+
- "\u0001\u008f",
- "\u0001\u0090",
- "\u0001\u0091",
- "\u0001\u0092",
- "\u0001\u0093",
- "\u0001\u0094",
- "\u0001\u0095\u0001\u0096",
- "\u0001\u0098\u0016\uffff\u0001\u0099",
- "",
- "",
- "\u0001\u009d",
- "",
- "",
- "",
- "",
- "\u0001\u00a4\u0002\uffff\u0001\u00a3",
- "\u0001\u00a6",
- "",
- "\u0001\u00a9",
- "\u0001\u00ab",
- "",
- "\u0001\u00ae",
- "",
- "",
- "\u0001\u00b2",
- "\u0001\u00b7\u000d\uffff\u0001\u00b6\u000c\uffff\u0001\u00b5"+
- "\u0001\u00b4\u0001\uffff\u0001\u00b8",
- "\u0001\u00ba\u0001\u00bb",
- "\u0001\u00bd\u000e\uffff\u0001\u00be",
- "\u0001\u00c0\u0001\uffff\u000a\u00c2",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "",
- "",
- "\u0001\u00cb\u0001\uffff\u000a\u00ca\u000b\uffff\u0001\u00cc"+
- "\u001f\uffff\u0001\u00cc",
- "",
- "\u0001\u00cd\u0001\u00ce\u0014\uffff\u0001\u00cf",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0002\u0042\u0001\u00d0"+
- "\u0017\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0013\u0042\u0001\u00d2"+
- "\u0006\u0042",
- "\u0001\u00d4",
- "\u0001\u00d5",
- "\u0001\u00d6",
- "\u0001\u00d8\u0001\u00d7",
- "\u0001\u00d9",
- "",
- "\u0001\u00da",
- "\u0001\u00db",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u00dd",
- "\u0001\u00de",
- "\u0001\u00df\u0001\u00e0",
- "\u0001\u00e2\u0003\uffff\u0001\u00e1",
- "\u0001\u00e3\u0001\u00e4\u0001\u00e5\u0001\uffff\u0001\u00e6"+
- "\u0004\uffff\u0001\u00e7",
- "\u0001\u00e8\u0002\uffff\u0001\u00e9\u0005\uffff\u0001\u00eb"+
- "\u0006\uffff\u0001\u00ea",
- "\u0001\u00ee\u0004\uffff\u0001\u00ef\u0001\u00ed\u000b\uffff"+
- "\u0001\u00f0\u0002\uffff\u0001\u00ec",
- "\u0001\u00f1",
- "\u0001\u00f2\u000d\uffff\u0001\u00f3",
- "\u0001\u00f4",
- "\u0001\u00f5\u0001\u00f6\u000f\uffff\u0001\u00f7",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u00f9",
- "\u0001\u00fc\u0001\uffff\u0001\u00fa\u0005\uffff\u0001\u00fd"+
- "\u000a\uffff\u0001\u00fb",
- "\u0001\u00fe\u0005\uffff\u0001\u00ff",
- "\u0001\u0100",
- "\u0001\u0101",
- "\u0001\u0102",
- "\u0001\u0103\u0033\uffff\u0001\u0104\u000c\uffff\u0001\u0105"+
- "\u0001\u0106",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0108\u0009\uffff\u0001\u0109",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u010b",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u010d",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u0112"+
- "\u0001\u0042\u0001\u0111\u0001\u0042\u0001\u010e\u000a\u0042"+
- "\u0001\u010f\u0001\u0110\u0006\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0115",
- "\u0001\u0118\u0004\uffff\u0001\u0117\u0004\uffff\u0001\u0116",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0001\u0119\u0012\u0042"+
- "\u0001\u011a\u0001\u0042\u0001\u011b\u0004\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u011f\u0007\uffff\u0001\u011e",
- "\u0001\u0120\u000e\uffff\u0001\u0121",
- "\u0001\u0122",
- "\u0001\u0123",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0017\u0042\u0001\u0124"+
- "\u0002\u0042",
- "\u0001\u0126\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042"+
- "\u0001\u0127\u000f\u0042\u0001\u0128\u0006\u0042",
- "\u0001\u012a",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u012c",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u012d"+
- "\u0016\u0042",
- "\u0001\u012f",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u000b\u0042\u0001\u0130"+
- "\u000e\u0042",
- "\u0001\u0132",
- "\u0001\u0133\u0001\uffff\u0001\u0134",
- "\u0001\u0135\u0009\uffff\u0001\u0136",
- "\u0001\u0137",
- "\u0001\u0138",
- "\u0001\u0139",
- "\u0001\u013b\u0003\uffff\u0001\u013c\u0009\uffff\u0001\u013d"+
- "\u0002\uffff\u0001\u013a",
- "\u0001\u013f\u0006\uffff\u0001\u013e",
- "\u0001\u0140\u0006\uffff\u0001\u0141",
- "\u0001\u0142\u0001\uffff\u0001\u0143",
- "\u0001\u0144",
- "\u0001\u0145",
- "\u0001\u0146",
- "\u0001\u0147",
- "\u0001\u014c\u0001\uffff\u0001\u0149\u0001\uffff\u0001\u014a"+
- "\u0003\uffff\u0001\u0148\u0001\uffff\u0001\u014b",
- "\u0001\u014d",
- "\u0001\u014e",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0150\u0013\uffff\u0001\u0151",
- "\u0001\u0152",
- "\u0001\u0153",
- "\u0001\u0154",
- "\u0001\u0155\u0005\uffff\u0001\u0156",
- "\u0001\u0157\u000b\uffff\u0001\u0158",
- "\u0001\u0159",
- "\u0001\u015a\u0005\uffff\u0001\u015b",
- "\u0001\u015c",
- "\u0001\u015d\u0003\uffff\u0001\u015e",
- "\u0001\u0161\u0001\uffff\u0001\u015f\u0005\uffff\u0001\u0160",
- "\u0001\u0162",
- "\u0001\u0163",
- "\u0001\u0164",
- "\u0001\u0165",
- "\u0001\u0166",
- "\u0001\u0167",
- "\u0001\u0168",
- "",
- "",
- "",
- "\u0002\u016a\u0002\uffff\u0001\u016a\u0012\uffff\u0001\u016a"+
- "\u0020\uffff\u001a\u016a\u0004\uffff\u0001\u016a\u0001\uffff"+
- "\u001a\u016a",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "\u0001\u016b",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "\u0001\u016d",
- "\u0002\u016f\u0002\uffff\u0001\u016f\u0012\uffff\u0001\u016f"+
- "\u0020\uffff\u001a\u016f\u0004\uffff\u0001\u016f\u0001\uffff"+
- "\u001a\u016f",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "\u000a\u00c2\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "\u0001\u00cb\u0001\uffff\u000a\u00ca\u000b\uffff\u0001\u00cc"+
- "\u001f\uffff\u0001\u00cc",
- "\u000a\u0171\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
- "",
- "\u0001\u0172",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0175",
- "",
- "\u0001\u0176",
- "",
- "\u0001\u0177",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u000e\u0042\u0001\u0178"+
- "\u000b\u0042",
- "\u0001\u017a",
- "\u0001\u017b",
- "\u0001\u017c",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u017e",
- "\u0001\u017f",
- "",
- "\u0001\u0180",
- "\u0001\u0181",
- "\u0001\u0182\u000e\uffff\u0001\u0183",
- "\u0001\u0184",
- "\u0001\u0185",
- "\u0001\u0186",
- "\u0001\u0187",
- "\u0001\u0188",
- "\u0001\u0189\u0001\u018a",
- "\u0001\u018b",
- "\u0001\u018c",
- "\u0001\u018e\u0002\uffff\u0001\u018d",
- "\u0001\u018f",
- "\u0001\u0190",
- "\u0001\u0191",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0193",
- "\u0001\u0194",
- "\u0001\u0195",
- "\u0001\u0196",
- "\u0001\u0197",
- "\u0001\u0198",
- "\u0001\u0199",
- "\u0001\u019a",
- "\u0001\u019b",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u019d",
- "",
- "\u0001\u019e",
- "\u0001\u019f",
- "\u0001\u01a0",
- "\u0001\u01a1",
- "\u0001\u01a2",
- "\u0001\u01a3",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0004\u0042\u0001\u01a4"+
- "\u0015\u0042",
- "\u0001\u01a6",
- "\u0001\u01a7",
- "\u0001\u01a8",
- "\u0001\u01a9",
- "\u0001\u01aa",
- "\u0001\u01ab",
- "\u0001\u01ac",
- "",
- "\u0001\u01ad",
- "\u0001\u01ae",
- "",
- "\u0001\u01af",
- "",
- "\u0001\u01b0",
- "\u0001\u01b1",
- "\u0001\u01b3\u000e\uffff\u0001\u01b2",
- "\u0001\u01b4\u0009\uffff\u0001\u01b5",
- "\u0001\u01b6",
- "\u0001\u01b7",
- "",
- "",
- "\u0001\u01b8",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u01ba",
- "\u0001\u01bb",
- "\u0001\u01bc",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u01be",
- "",
- "",
- "\u0001\u01bf",
- "\u0001\u01c0",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u01c2"+
- "\u000b\u0042\u0001\u01c1\u0005\u0042",
- "\u0001\u01c4",
- "\u0001\u01c5",
- "\u0001\u01c6",
- "\u0001\u01c7",
- "",
- "\u0001\u01c8\u0006\uffff\u0001\u01c9",
- "\u0001\u01ca",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u01cc",
- "",
- "\u0001\u01cd",
- "\u0001\u01ce",
- "",
- "\u0001\u01cf",
- "\u0001\u01d0",
- "",
- "\u0001\u01d1",
- "\u0001\u01d3\u0003\uffff\u0001\u01d2",
- "\u0001\u01d4",
- "\u0001\u01d5\u000f\uffff\u0001\u01d6\u0002\uffff\u0001\u01d7",
- "\u0001\u01d8",
- "\u0001\u01da\u0035\uffff\u0001\u01d9",
- "\u0001\u01db",
- "\u0001\u01dc",
- "\u0001\u01de\u000b\uffff\u0001\u01dd",
- "\u0001\u01df\u000f\uffff\u0001\u01e0",
- "\u0001\u01e1",
- "\u0001\u01e2",
- "\u0001\u01e3",
- "\u0001\u01e4",
- "\u0001\u01e5",
- "\u0001\u01e6",
- "\u0001\u01e7",
- "\u0001\u01e8\u0001\u01e9",
- "\u0001\u01ea",
- "\u0001\u01eb",
- "\u0001\u01ec",
- "\u0001\u01ed",
- "\u0001\u01ee",
- "\u0001\u01ef",
- "\u0001\u01f0",
- "\u0001\u01f1",
- "\u0001\u01f2",
- "\u0001\u01f3",
- "\u0001\u01f4\u0004\uffff\u0001\u01f5",
- "",
- "\u0001\u01f6",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u01f8",
- "\u0001\u01f9",
- "\u0001\u01fa",
- "\u0001\u01fb\u0001\uffff\u0001\u01fc",
- "\u0001\u01fd",
- "\u0001\u01fe",
- "\u0001\u01ff",
- "\u0001\u0200",
- "\u0001\u0201\u000b\uffff\u0001\u0202",
- "\u0001\u0203",
- "\u0001\u0204",
- "\u0001\u0206\u0003\uffff\u0001\u0205",
- "\u0001\u0207",
- "\u0001\u0208",
- "\u0001\u0209",
- "\u0001\u020a",
- "\u0001\u020b",
- "\u0001\u020c",
- "\u0001\u020d",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u020f",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0211",
- "",
- "",
- "",
- "",
- "\u0001\u0212",
- "",
- "",
- "",
- "\u000a\u0171\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
- "\u0001\u0213",
- "",
- "",
- "\u0001\u0214",
- "\u0001\u0215",
- "\u0001\u0216",
- "\u0001\u0217",
- "",
- "\u0001\u0218",
- "\u0001\u0219",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u021b",
- "\u0001\u021c",
- "\u0001\u021d",
- "\u0001\u021e",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0001\u0220\u0019\u0042",
- "\u0001\u0222",
- "\u0001\u0223",
- "\u0001\u0224",
- "\u0001\u0225\u0003\uffff\u0001\u0226",
- "\u0001\u0227",
- "\u0001\u0228",
- "\u0001\u022a\u0003\uffff\u0001\u0229\u0003\uffff\u0001\u022b",
- "\u0001\u022c\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u022e",
- "\u0001\u022f",
- "\u0001\u0230",
- "\u0001\u0231",
- "\u0001\u0232",
- "\u0001\u0233",
- "",
- "\u0001\u0234",
- "\u0001\u0235",
- "\u0001\u0236",
- "\u0001\u0237",
- "\u0001\u0238",
- "\u0001\u0239",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u023b",
- "\u0001\u023c",
- "",
- "\u0001\u023d",
- "\u0001\u023e",
- "\u0001\u023f",
- "\u0001\u0240",
- "\u0001\u0241",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0243",
- "\u0001\u0244\u0007\uffff\u0001\u0245",
- "",
- "\u0001\u0246",
- "\u0001\u0247",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0249",
- "\u0001\u024a",
- "\u0001\u024b",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u024d",
- "\u0001\u024e",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0250",
- "\u0001\u0251",
- "\u0001\u0252",
- "\u0001\u0254\u0003\uffff\u0001\u0253",
- "\u0001\u0256\u000a\uffff\u0001\u0255",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0258",
- "\u0001\u0259",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u025c",
- "\u0001\u025d",
- "",
- "\u0001\u025e",
- "\u0001\u025f",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0261",
- "\u0001\u0262",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0264",
- "\u0001\u0265",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0267",
- "\u0001\u0268",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0269"+
- "\u0007\u0042",
- "",
- "\u0001\u026b\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u026d",
- "\u0001\u026e",
- "\u0001\u026f",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0271",
- "\u0001\u0272",
- "\u0001\u0273",
- "\u0001\u0274",
- "\u0001\u0275",
- "\u0001\u0276",
- "\u0001\u0277",
- "\u0001\u0278",
- "\u0001\u0279",
- "\u0001\u027a",
- "\u0001\u027b",
- "\u0001\u027c",
- "\u0001\u027d",
- "\u0001\u027e\u000c\uffff\u0001\u027f",
- "\u0001\u0280",
- "\u0001\u0281",
- "\u0001\u0282",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0284",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0286",
- "\u0001\u0287",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0289",
- "\u0001\u028a",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u028c",
- "\u0001\u028d",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u028f",
- "\u0001\u0290",
- "\u0001\u0291",
- "\u0001\u0292",
- "\u0001\u0293",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0296",
- "\u0001\u0297",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0298"+
- "\u0007\u0042",
- "\u0001\u029a",
- "\u0001\u029b",
- "\u0001\u029c",
- "\u0001\u029d",
- "\u0001\u029e",
- "\u0001\u029f",
- "\u0001\u02a0",
- "\u0001\u02a1",
- "\u0001\u02a2",
- "\u0001\u02a3",
- "\u0001\u02a4",
- "\u0001\u02a5",
- "\u0001\u02a6",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02a8",
- "\u0001\u02a9",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u000e\u0042\u0001\u02aa"+
- "\u000b\u0042",
- "\u0001\u02ac",
- "\u0001\u02ad",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u02ae"+
- "\u0007\u0042",
- "\u0001\u02b0",
- "",
- "\u0001\u02b1",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0000\u02b4",
- "\u0001\u02b5",
- "\u0001\u02b6",
- "\u0001\u02b7",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02b9",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02bb",
- "",
- "\u0001\u02bc",
- "\u0001\u02bd",
- "\u0001\u02be",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u02c0",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02c4",
- "\u0001\u02c5",
- "\u0001\u02c6",
- "\u0001\u02c7",
- "\u0001\u02c9\u0009\uffff\u0001\u02c8",
- "\u0001\u02ca",
- "\u0001\u02cb",
- "\u0001\u02cc",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02ce",
- "\u0001\u02cf",
- "\u0001\u02d0",
- "\u0001\u02d1",
- "\u0001\u02d2",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02d4",
- "\u0001\u02d5",
- "\u0001\u02d6",
- "\u0001\u02d7",
- "\u0001\u02d8",
- "",
- "\u0001\u02d9\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02db",
- "\u0001\u02dc",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02de",
- "\u0001\u02df",
- "\u0001\u02e0",
- "",
- "\u0001\u02e1",
- "\u0001\u02e2",
- "\u0001\u02e3",
- "\u0001\u02e4",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u02e6",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u02e9",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u02ea"+
- "\u0011\u0042",
- "",
- "\u0001\u02ec",
- "\u0001\u02ed",
- "\u0001\u02ee",
- "\u0001\u02ef",
- "\u0001\u02f0",
- "\u0001\u02f1",
- "\u0001\u02f2",
- "",
- "\u0001\u02f3",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0001\u02f5",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u02f7",
- "\u0001\u02f8",
- "",
- "\u0001\u02f9",
- "\u0001\u02fa",
- "",
- "\u0001\u02fb",
- "\u0001\u02fc",
- "",
- "\u0001\u02fd",
- "\u0001\u02fe",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0300",
- "",
- "\u0001\u0301",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0004\u0042\u0001\u0302"+
- "\u0003\u0042\u0001\u0303\u0011\u0042",
- "\u0001\u0305",
- "",
- "\u0001\u0306",
- "\u0001\u0307",
- "\u0001\u0308",
- "\u0001\u0309",
- "\u0001\u030a",
- "\u0001\u030b",
- "\u0001\u030c",
- "\u0001\u030d",
- "\u0001\u030e",
- "\u0001\u030f",
- "\u0001\u0310",
- "\u0001\u0311",
- "\u0001\u0312",
- "\u0001\u0313",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0315",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0317",
- "",
- "\u0001\u0318",
- "",
- "\u0001\u0319",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u031b",
- "\u0001\u031c",
- "",
- "\u0001\u031d",
- "\u0001\u031e",
- "",
- "\u0001\u031f",
- "\u0001\u0320",
- "\u0001\u0321",
- "\u0001\u0322",
- "\u0001\u0323",
- "",
- "",
- "\u0001\u0324",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0326",
- "",
- "\u0001\u0327",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u032a",
- "\u0001\u032b",
- "\u0001\u032c",
- "\u0001\u032d",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u032f",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0331",
- "\u0001\u0332",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0335",
- "\u0001\u0336",
- "",
- "\u0001\u0337",
- "\u0001\u0338",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u033a",
- "\u0001\u033b",
- "",
- "",
- "",
- "\u0001\u033c",
- "\u0001\u033d",
- "\u0001\u033e",
- "",
- "\u0001\u033f",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0341",
- "\u0001\u0342",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0344",
- "",
- "",
- "",
- "\u0001\u0345",
- "\u0001\u0346",
- "\u0001\u0347",
- "\u0001\u0349\u0013\uffff\u0001\u0348",
- "\u0001\u034a",
- "\u0001\u034b",
- "\u0001\u034c",
- "\u0001\u034d",
- "\u0001\u034e",
- "",
- "\u0001\u034f",
- "\u0001\u0350",
- "\u0001\u0351",
- "\u0001\u0352",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0354",
- "\u0001\u0355",
- "\u0001\u0356",
- "\u0001\u0357",
- "\u0001\u0358",
- "\u0001\u0359",
- "",
- "\u0001\u035a",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u035d",
- "\u0001\u035e",
- "\u0001\u035f",
- "\u0001\u0360",
- "\u0001\u0361",
- "\u0001\u0362",
- "",
- "\u0001\u0363",
- "",
- "",
- "\u0001\u0364",
- "\u0001\u0365",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0367",
- "\u0001\u0368",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u036a",
- "\u0001\u036b",
- "\u0001\u036c",
- "\u0001\u036d",
- "",
- "\u0001\u036e",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0370",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0373",
- "\u0001\u0374",
- "\u0001\u0375",
- "\u0001\u0376",
- "",
- "\u0001\u0377",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0379",
- "\u0001\u037a",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u037e",
- "\u0001\u037f",
- "\u0001\u0380",
- "\u0001\u0381",
- "\u0001\u0382",
- "\u0001\u0383",
- "\u0001\u0384",
- "\u0001\u0385",
- "\u0001\u0386",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0388",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u038b",
- "\u0001\u038c",
- "\u0001\u038d\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u038f",
- "\u0001\u0390",
- "\u0001\u0391",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u0393"+
- "\u0011\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0396",
- "\u0001\u0397",
- "\u0001\u0398",
- "\u0001\u0399",
- "",
- "\u0001\u039a",
- "\u0001\u039b",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u039d",
- "\u0001\u039e",
- "\u0001\u039f",
- "",
- "\u0001\u03a0",
- "",
- "\u0001\u03a1",
- "\u0001\u03a2",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03a4",
- "\u0001\u03a5",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03a8",
- "\u0001\u03a9",
- "\u0001\u03aa",
- "\u0001\u03ab",
- "\u0001\u03ac",
- "",
- "\u0001\u03ad",
- "\u0001\u03ae",
- "",
- "\u0001\u03af",
- "\u0001\u03b0",
- "\u0001\u03b1",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03b3",
- "\u0001\u03b4",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03b7",
- "\u0001\u03b8",
- "\u0001\u03b9",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03bb",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03bd\u0007\uffff\u0001\u03be",
- "",
- "\u0001\u03bf",
- "\u0001\u03c0",
- "\u0001\u03c1",
- "\u0001\u03c2",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03c4",
- "\u0001\u03c5",
- "",
- "",
- "\u0001\u03c6",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03c8",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03cb",
- "\u0001\u03cc",
- "\u0001\u03cd",
- "\u0001\u03ce",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03d0",
- "",
- "\u0001\u03d1",
- "\u0001\u03d2",
- "\u0001\u03d3",
- "\u0001\u03d4",
- "\u0001\u03d5",
- "",
- "\u0001\u03d6",
- "",
- "",
- "\u0001\u03d7",
- "\u0001\u03d8",
- "\u0001\u03d9",
- "\u0001\u03da",
- "\u0001\u03db",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03dd",
- "",
- "",
- "",
- "\u0001\u03de",
- "\u0001\u03df",
- "\u0001\u03e0",
- "\u0001\u03e1",
- "\u0001\u03e2",
- "\u0001\u03e3",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03e5",
- "\u0001\u03e6",
- "",
- "\u0001\u03e7",
- "",
- "",
- "\u0001\u03e8",
- "\u0001\u03e9",
- "\u0001\u03ea\u0003\uffff\u0001\u03eb",
- "",
- "\u0001\u03ec",
- "\u0001\u03ed",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u03ef",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03f1",
- "\u0001\u03f2",
- "\u0001\u03f3",
- "\u0001\u03f4",
- "\u0001\u03f5",
- "",
- "\u0001\u03f6",
- "\u0001\u03f7",
- "\u0001\u03f8",
- "\u0001\u03f9",
- "\u0001\u03fa",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u03fd",
- "",
- "",
- "\u0001\u03fe",
- "\u0001\u03ff\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0401",
- "\u0001\u0402",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0405",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0407",
- "\u0001\u0408",
- "",
- "\u0001\u0409",
- "\u0001\u040a",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u040d",
- "",
- "\u0001\u040e\u000c\uffff\u0001\u040f",
- "",
- "\u0001\u0410",
- "\u0001\u0411",
- "\u0001\u0412",
- "\u0001\u0413",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0415\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0417",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u041a",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u041c",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u041e",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0420",
- "\u0001\u0421",
- "\u0001\u0422",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0425",
- "\u0001\u0426",
- "\u0001\u0427",
- "\u0001\u0428",
- "\u0001\u0429",
- "\u0001\u042a",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u042c",
- "\u0001\u042d",
- "\u0001\u042e",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0431",
- "",
- "\u0001\u0432",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0434",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0436",
- "\u0001\u0437",
- "\u0001\u0438",
- "\u0001\u0439",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u043a"+
- "\u0007\u0042",
- "",
- "\u0001\u043c",
- "",
- "\u0001\u043d",
- "\u0001\u043e",
- "\u0001\u043f",
- "\u0001\u0440",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0442",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0444",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0001\u0447",
- "\u0001\u0448",
- "\u0001\u0449",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0001\u044c",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u044e",
- "\u0001\u044f",
- "\u0001\u0450",
- "",
- "",
- "\u0001\u0451",
- "\u0001\u0452",
- "\u0001\u0453",
- "\u0001\u0454",
- "\u0001\u0455",
- "\u0001\u0456",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0458",
- "",
- "\u0001\u0459",
- "",
- "",
- "\u0001\u045a\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u045d",
- "",
- "\u0001\u045e",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0462",
- "\u0001\u0463\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0465",
- "\u0001\u0466",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0468"+
- "\u0007\u0042",
- "\u0001\u046a",
- "\u0001\u046b\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0001\u046d",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u046f",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0471",
- "\u0001\u0472",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0476",
- "\u0001\u0477",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0479",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u047d",
- "\u0001\u047e",
- "",
- "",
- "\u0001\u047f",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0481",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0483",
- "\u0001\u0484",
- "\u0001\u0485",
- "\u0001\u0486\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
- "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u048a",
- "\u0001\u048b",
- "\u0001\u048c",
- "",
- "",
- "\u0001\u048d",
- "\u0001\u048e",
- "",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0490",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0492",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u0494",
- "\u0001\u0495",
- "",
- "\u0001\u0496",
- "",
- "\u0001\u0497",
- "",
- "\u0001\u0498",
- "\u0001\u0499",
- "",
- "",
- "",
- "\u0001\u049a",
- "\u0001\u049b",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u049e",
- "\u0001\u049f",
- "",
- "\u0001\u04a0",
- "",
- "\u0001\u04a1",
- "\u0001\u04a2",
- "\u0001\u04a3",
- "\u0001\u04a4",
- "",
- "",
- "",
- "\u0001\u04a5",
- "\u0001\u04a6",
- "\u0001\u04a7",
- "\u0001\u04a8",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u04aa",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u04ac",
- "\u0001\u04ad",
- "\u0001\u04ae",
- "\u0001\u04af",
- "\u0001\u04b0",
- "\u0001\u04b1",
- "\u0001\u04b2",
- "\u0001\u04b3",
- "",
- "",
- "\u0001\u04b4",
- "\u0001\u04b5",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04b7",
- "\u0001\u04b8",
- "\u0001\u04b9",
- "\u0001\u04ba",
- "\u0001\u04bb",
- "\u0001\u04bc",
- "\u0001\u04bd",
- "\u0001\u04be",
- "",
- "\u0001\u04bf",
- "",
- "\u0001\u04c0",
- "\u0001\u04c1",
- "\u0001\u04c2",
- "\u0001\u04c3",
- "\u0001\u04c4",
- "\u0001\u04c5",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04c8",
- "\u0001\u04c9",
- "",
- "\u0001\u04ca",
- "\u0001\u04cb",
- "\u0001\u04cc",
- "\u0001\u04cd",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04cf",
- "\u0001\u04d0",
- "\u0001\u04d1",
- "\u0001\u04d2",
- "\u0001\u04d3",
- "\u0001\u04d4",
- "\u0001\u04d5",
- "\u0001\u04d6",
- "\u0001\u04d7",
- "\u0001\u04d8",
- "",
- "",
- "\u0001\u04d9",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04db",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04dd",
- "\u0001\u04de",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04e0",
- "\u0001\u04e1",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04e3",
- "\u0001\u04e4",
- "\u0001\u04e5",
- "\u0001\u04e6",
- "\u0001\u04e7",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04e9",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u04eb",
- "\u0001\u04ec",
- "",
- "\u0001\u04ed",
- "\u0001\u04ee",
- "",
- "\u0001\u04ef",
- "\u0001\u04f0",
- "\u0001\u04f1",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04f3",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0001\u04f5",
- "\u0001\u04f6",
- "\u0001\u04f7",
- "\u0001\u04f8",
- "\u0001\u04f9",
- "\u0001\u04fa",
- "\u0001\u04fb",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u04fe",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0500",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "\u0001\u0503",
- "",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- "",
- "",
- "\u0001\u0506",
- "",
- "",
- "\u0001\u0507",
- "\u0001\u0508",
- "\u0001\u0509",
- "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
- "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryLexer, {
- DFA19_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_eotS),
- DFA19_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_eofS),
- DFA19_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryLexer.DFA19_minS),
- DFA19_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryLexer.DFA19_maxS),
- DFA19_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_acceptS),
- DFA19_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_specialS),
- DFA19_transition: (function() {
- var a = [],
- i,
- numStates = XQueryLexer.DFA19_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryLexer.DFA19 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 19;
- this.eot = XQueryLexer.DFA19_eot;
- this.eof = XQueryLexer.DFA19_eof;
- this.min = XQueryLexer.DFA19_min;
- this.max = XQueryLexer.DFA19_max;
- this.accept = XQueryLexer.DFA19_accept;
- this.special = XQueryLexer.DFA19_special;
- this.transition = XQueryLexer.DFA19_transition;
-};
-
-org.antlr.lang.extend(XQueryLexer.DFA19, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1:1: Tokens : ( ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | JSON | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | SWITCH | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | POSITION | APPEND | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER | CONCAT | LPAREN | RPAREN | DOLLAR | L_UNION_BRACKET | R_UNION_BRACKET | LBRACKET | RBRACKET | LSQUARE | RSQUARE | EQUAL | BIND | NOTEQUAL | ANN_PERCENT | HASH | AMP | COMMA | QUESTION | STAR | PLUS | MINUS | SMALLER | GREATER | SMALLEREQ | GREATEREQ | SMALLER_SMALLER | GREATER_GREATER | SLASH | SLASH_SLASH | BANG | DOT | DOT_DOT | COLON | COLON_COLON | EMPTY_CLOSE_TAG | CLOSE_TAG | SEMICOLON | VBAR | PRAGMA_START | PRAGMA_END | XML_COMMENT_START | XML_COMMENT_END | PI_START | PI_END | ATTR_SIGN | Q | CHARREF_DEC | CHARREF_HEX | APOS | QUOT | L_NCName | S | L_Pragma | L_DirCommentConstructor | L_DirPIConstructor | L_IntegerLiteral | L_DecimalLiteral | L_DoubleLiteral | L_Comment | L_AnyChar );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA19_530 = input.LA(1);
-
- s = -1;
- if ( ((LA19_530>='\u0000' && LA19_530<='\uFFFF')) ) {s = 692;}
-
- else s = 691;
-
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA19_0 = input.LA(1);
-
- s = -1;
- if ( (LA19_0=='a') ) {s = 1;}
-
- else if ( (LA19_0=='b') ) {s = 2;}
-
- else if ( (LA19_0=='c') ) {s = 3;}
-
- else if ( (LA19_0=='d') ) {s = 4;}
-
- else if ( (LA19_0=='e') ) {s = 5;}
-
- else if ( (LA19_0=='f') ) {s = 6;}
-
- else if ( (LA19_0=='g') ) {s = 7;}
-
- else if ( (LA19_0=='i') ) {s = 8;}
-
- else if ( (LA19_0=='l') ) {s = 9;}
-
- else if ( (LA19_0=='m') ) {s = 10;}
-
- else if ( (LA19_0=='n') ) {s = 11;}
-
- else if ( (LA19_0=='j') ) {s = 12;}
-
- else if ( (LA19_0=='o') ) {s = 13;}
-
- else if ( (LA19_0=='p') ) {s = 14;}
-
- else if ( (LA19_0=='s') ) {s = 15;}
-
- else if ( (LA19_0=='r') ) {s = 16;}
-
- else if ( (LA19_0=='t') ) {s = 17;}
-
- else if ( (LA19_0=='u') ) {s = 18;}
-
- else if ( (LA19_0=='v') ) {s = 19;}
-
- else if ( (LA19_0=='w') ) {s = 20;}
-
- else if ( (LA19_0=='x') ) {s = 21;}
-
- else if ( (LA19_0=='N') ) {s = 22;}
-
- else if ( (LA19_0=='z') ) {s = 23;}
-
- else if ( (LA19_0=='k') ) {s = 24;}
-
- else if ( (LA19_0=='q') ) {s = 25;}
-
- else if ( (LA19_0=='|') ) {s = 26;}
-
- else if ( (LA19_0=='(') ) {s = 27;}
-
- else if ( (LA19_0==')') ) {s = 28;}
-
- else if ( (LA19_0=='$') ) {s = 29;}
-
- else if ( (LA19_0=='{') ) {s = 30;}
-
- else if ( (LA19_0=='}') ) {s = 31;}
-
- else if ( (LA19_0=='[') ) {s = 32;}
-
- else if ( (LA19_0==']') ) {s = 33;}
-
- else if ( (LA19_0=='=') ) {s = 34;}
-
- else if ( (LA19_0==':') ) {s = 35;}
-
- else if ( (LA19_0=='!') ) {s = 36;}
-
- else if ( (LA19_0=='%') ) {s = 37;}
-
- else if ( (LA19_0=='#') ) {s = 38;}
-
- else if ( (LA19_0=='&') ) {s = 39;}
-
- else if ( (LA19_0==',') ) {s = 40;}
-
- else if ( (LA19_0=='?') ) {s = 41;}
-
- else if ( (LA19_0=='*') ) {s = 42;}
-
- else if ( (LA19_0=='+') ) {s = 43;}
-
- else if ( (LA19_0=='-') ) {s = 44;}
-
- else if ( (LA19_0=='<') ) {s = 45;}
-
- else if ( (LA19_0=='>') ) {s = 46;}
-
- else if ( (LA19_0=='/') ) {s = 47;}
-
- else if ( (LA19_0=='.') ) {s = 48;}
-
- else if ( (LA19_0==';') ) {s = 49;}
-
- else if ( (LA19_0=='@') ) {s = 50;}
-
- else if ( (LA19_0=='Q') ) {s = 51;}
-
- else if ( (LA19_0=='\'') ) {s = 52;}
-
- else if ( (LA19_0=='\"') ) {s = 53;}
-
- else if ( ((LA19_0>='A' && LA19_0<='M')||(LA19_0>='O' && LA19_0<='P')||(LA19_0>='R' && LA19_0<='Z')||LA19_0=='_'||LA19_0=='h'||LA19_0=='y') ) {s = 54;}
-
- else if ( ((LA19_0>='\t' && LA19_0<='\n')||LA19_0=='\r'||LA19_0==' ') ) {s = 55;}
-
- else if ( ((LA19_0>='0' && LA19_0<='9')) ) {s = 56;}
-
- else if ( ((LA19_0>='\u0000' && LA19_0<='\b')||(LA19_0>='\u000B' && LA19_0<='\f')||(LA19_0>='\u000E' && LA19_0<='\u001F')||LA19_0=='\\'||LA19_0=='^'||LA19_0=='`'||(LA19_0>='~' && LA19_0<='\uFFFF')) ) {s = 57;}
-
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA19_27 = input.LA(1);
-
-
- var index19_27 = input.index();
- input.rewind();
- s = -1;
- if ( (LA19_27=='#') ) {s = 152;}
-
- else if ( (LA19_27==':') && ((!this.inStr))) {s = 153;}
-
- else s = 154;
-
-
- input.seek(index19_27);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 19, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-
-})();
-exports.XQueryLexer = XQueryLexer; });
-define('ace/mode/xquery/XQDTLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all'], function(require, exports, module) {
-
-var org = require("./antlr3-all").org;
-
-var XQDTLexer = exports.XQDTLexer = function(input, state)
-{
- XQDTLexer.superclass.constructor.call(this, input, state);
-};
-
-org.antlr.lang.extend(XQDTLexer, org.antlr.runtime.Lexer, {
-
- comments: [],
-
- addComment: function(start, stop){ this.comments.push({ start: start, stop: stop }); },
-
- isWsExplicit: false,
-
- setIsWsExplicit: function (wsExplicit) {
- //console.log("A WS: " + wsExplicit);
- this.isWsExplicit = wsExplicit;
- //console.log("B WS: " + wsExplicit);
- },
-
- addToStack: function (stack) {
- stack.push(this);
- },
-
- rewindToIndex: function(index) {
- var stream = this.input;
- stream.seek(index);
- }
-});
-
-});
-define('ace/mode/xquery/XQueryParser', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/StringLexer', 'ace/mode/xquery/XMLLexer', 'ace/mode/xquery/XQueryLexer', 'ace/mode/xquery/XQDTParser', 'ace/mode/xquery/Position'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g 2012-09-05 10:41:46
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-var org = require("./antlr3-all").org;
-var StringLexer = require("./StringLexer").StringLexer;
-var XMLLexer = require("./XMLLexer").XMLLexer;
-var XQueryLexer = require("./XQueryLexer").XQueryLexer;
-var XQDTParser = require("./XQDTParser").XQDTParser;
-var Position = require("./Position").Position;
-var Exception = function(){};
-
-var XQS = true;
-var XQU = true;
-var ZORBA = true;
-
-
-
-var XQueryParser = function(input, state) {
- if (!state) {
- state = new org.antlr.runtime.RecognizerSharedState();
- }
-
- (function(){
-
-
- this.isInAttr = false;
-
- this.errors = [];
-
- this.hasErrors = function(){
- return this.errors.length > 0;
- };
-
- this.addError = function(error){
- this.errors.push(error);
- };
-
- this.getErrors = function(){
- return this.errors;
- };
-
- this.source = null;
- this.setSource = function(s){
- this.source = s;
- this.highlighter.setSource(s);
- };
-
- this.lexerStack = new Array();
-
- this.lc = function(b){ return b; };
- this.popLexer = function (){
- //console.log("popLexer");
- if(this.lexerStack.length == 0) return;
- this.getTokenStream().mark();
- var oldLexer = this.getTokenStream().getTokenSource();
- var newLexer = this.lexerStack.pop();
- if(oldLexer instanceof StringLexer && newLexer instanceof XQueryLexer) {
- newLexer.inStr = false;
- }
- this.getTokenStream().setTokenSource(newLexer);
- };
-
- this.pushXQueryLexer = function() {
- xqueryLexer = new XQueryLexer(this.source);
- this.pushLexer(xqueryLexer);
- };
-
- this.pushStringLexer = function(isAposStr){
- //console.log("pushStringLexer");
- var stringLexer = new StringLexer(this.source);
- stringLexer.inAposStr = isAposStr;
- stringLexer.inQuotStr = !isAposStr;
- stringLexer.setIsWsExplicit(true);
- this.pushLexer(stringLexer);
- };
-
- this.pushXMLLexer = function(){
- //console.log("pushXMLLexer");
- var xmlLexer = new XMLLexer(this.source);
- xmlLexer.setIsWsExplicit(true);
- this.pushLexer(xmlLexer);
- };
-
- this.pushLexer = function(lexer){
- var oldLexer = this.getTokenStream().getTokenSource();
- oldLexer.addToStack(this.lexerStack);
- this.getTokenStream().setTokenSource(lexer);
- };
-
- this.setWsExplicit = function(isExplicit){
- this.getTokenStream().setWsExplicit(isExplicit);
- };
-
- this.ap = function(token)
- {
- this.addToken(token, "xml_pe");
- };
-
- this.ax = function(start, stop)
- {
- this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "xml_pe");
- };
-
- this.at = function(start, stop)
- {
- this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "meta.tag");
- };
-
- this.av = function(start, stop)
- {
- this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "variable");
- };
-
- this.af = function(start, stop)
- {
- this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "support.function");
- };
-
- this.ao = function(t)
- {
- this.addToken(t, "keyword.operator");
- };
-
- this.ak = function(t)
- {
- this.addToken(t, "keyword");
- };
-
- this.ad = function(t)
- {
- this.addToken(t, "constant");
- };
-
- this.addString = function(start, stop)
- {
- if(stop == undefined) {
- this.addToken(start, "string");
- } else {
- this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "string");
- }
- };
-
- this.ac = function(t)
- {
- this.addToken(t, "comment");
- };
-
- this.addToken = function(k, type){
- if(org.antlr.lang.isArray(k)){
- for(i in k)
- {
- this.highlighter.addToken(k[i].getStartIndex(), k[i].getStopIndex(), type);
- }
- } else if(k != null ) {
- this.highlighter.addToken(k.getStartIndex(), k.getStopIndex(), type);
- }
- };
-
-
- }).call(this);
-
- XQueryParser.superclass.constructor.call(this, input, state);
-
- this.dfa1 = new XQueryParser.DFA1(this);
- this.dfa2 = new XQueryParser.DFA2(this);
- this.dfa6 = new XQueryParser.DFA6(this);
- this.dfa9 = new XQueryParser.DFA9(this);
- this.dfa44 = new XQueryParser.DFA44(this);
- this.dfa46 = new XQueryParser.DFA46(this);
- this.dfa119 = new XQueryParser.DFA119(this);
- this.dfa121 = new XQueryParser.DFA121(this);
- this.dfa123 = new XQueryParser.DFA123(this);
- this.dfa128 = new XQueryParser.DFA128(this);
- this.dfa129 = new XQueryParser.DFA129(this);
- this.dfa136 = new XQueryParser.DFA136(this);
- this.dfa172 = new XQueryParser.DFA172(this);
- this.dfa195 = new XQueryParser.DFA195(this);
- this.dfa230 = new XQueryParser.DFA230(this);
- this.dfa249 = new XQueryParser.DFA249(this);
- this.dfa265 = new XQueryParser.DFA265(this);
- this.adaptor = new org.antlr.runtime.tree.CommonTreeAdaptor();
-
-};
-
-org.antlr.lang.augmentObject(XQueryParser, {
- EOF: -1,
- L_QuotAttrContentChar: 4,
- L_AposAttrContentChar: 5,
- L_ElementContentChar: 6,
- L_CDataSection: 7,
- L_PredefinedEntityRef: 8,
- L_CharRef: 9,
- ESCAPE_LBRACKET: 10,
- ESCAPE_RBRACKET: 11,
- ESCAPE_APOS: 12,
- ESCAPE_QUOT: 13,
- CDATA_START: 14,
- CDATA_END: 15,
- ANCESTOR: 16,
- ANCESTOR_OR_SELF: 17,
- AND: 18,
- AS: 19,
- ASCENDING: 20,
- AT: 21,
- ATTRIBUTE: 22,
- BASE_URI: 23,
- BOUNDARY_SPACE: 24,
- BY: 25,
- CASE: 26,
- CAST: 27,
- CASTABLE: 28,
- CHILD: 29,
- COLLATION: 30,
- COMMENT: 31,
- CONSTRUCTION: 32,
- COPY_NAMESPACES: 33,
- DECLARE: 34,
- DEFAULT: 35,
- DESCENDANT: 36,
- DESCENDANT_OR_SELF: 37,
- DESCENDING: 38,
- DIV: 39,
- DOCUMENT: 40,
- DOCUMENT_NODE: 41,
- ELEMENT: 42,
- ELSE: 43,
- EMPTY: 44,
- EMPTY_SEQUENCE: 45,
- ENCODING: 46,
- EQ: 47,
- EVERY: 48,
- EXCEPT: 49,
- EXTERNAL: 50,
- FOLLOWING: 51,
- FOLLOWING_SIBLING: 52,
- FOR: 53,
- FUNCTION: 54,
- GE: 55,
- GREATEST: 56,
- GT: 57,
- IDIV: 58,
- IF: 59,
- IMPORT: 60,
- IN: 61,
- INHERIT: 62,
- INSTANCE: 63,
- INTERSECT: 64,
- IS: 65,
- ITEM: 66,
- LAX: 67,
- LE: 68,
- LEAST: 69,
- LET: 70,
- LT: 71,
- MOD: 72,
- MODULE: 73,
- NAMESPACE: 74,
- NE: 75,
- NO_INHERIT: 76,
- NO_PRESERVE: 77,
- NODE: 78,
- JSON: 79,
- OF: 80,
- OPTION: 81,
- OR: 82,
- ORDER: 83,
- ORDERED: 84,
- ORDERING: 85,
- PARENT: 86,
- PRECEDING: 87,
- PRECEDING_SIBLING: 88,
- PRESERVE: 89,
- PROCESSING_INSTRUCTION: 90,
- STRUCTURED_ITEM: 91,
- JSON_ITEM: 92,
- OBJECT: 93,
- ARRAY: 94,
- RETURN: 95,
- SATISFIES: 96,
- SCHEMA: 97,
- SCHEMA_ATTRIBUTE: 98,
- SCHEMA_ELEMENT: 99,
- SELF: 100,
- SOME: 101,
- STABLE: 102,
- STRICT: 103,
- STRIP: 104,
- TEXT: 105,
- THEN: 106,
- TO: 107,
- TREAT: 108,
- TYPESWITCH: 109,
- UNION: 110,
- UNORDERED: 111,
- VALIDATE: 112,
- VARIABLE: 113,
- VERSION: 114,
- WHERE: 115,
- XQUERY: 116,
- ALLOWING: 117,
- CATCH: 118,
- CONTEXT: 119,
- COUNT: 120,
- DECIMAL_FORMAT: 121,
- DECIMAL_SEPARATOR: 122,
- DIGIT: 123,
- END: 124,
- GROUP: 125,
- GROUPING_SEPARATOR: 126,
- INFINITY: 127,
- MINUS_SIGN: 128,
- NAMESPACE_NODE: 129,
- NAN: 130,
- NEXT: 131,
- ONLY: 132,
- PATTERN_SEPARATOR: 133,
- PERCENT: 134,
- PER_MILLE: 135,
- PREVIOUS: 136,
- SLIDING: 137,
- START: 138,
- SWITCH: 139,
- TRY: 140,
- TUMBLING: 141,
- TYPE: 142,
- WHEN: 143,
- WINDOW: 144,
- ZERO_DIGIT: 145,
- AFTER: 146,
- BEFORE: 147,
- COPY: 148,
- DELETE: 149,
- FIRST: 150,
- INSERT: 151,
- INTO: 152,
- POSITION: 153,
- APPEND: 154,
- LAST: 155,
- MODIFY: 156,
- NODES: 157,
- RENAME: 158,
- REPLACE: 159,
- REVALIDATION: 160,
- SKIP: 161,
- UPDATING: 162,
- VALUE: 163,
- WITH: 164,
- ALL: 165,
- ANY: 166,
- CONTAINS: 167,
- CONTENT: 168,
- DIACRITICS: 169,
- DIFFERENT: 170,
- DISTANCE: 171,
- ENTIRE: 172,
- EXACTLY: 173,
- FROM: 174,
- FT_OPTION: 175,
- FTAND: 176,
- FTNOT: 177,
- FTOR: 178,
- INSENSITIVE: 179,
- LANGUAGE: 180,
- LEVELS: 181,
- LOWERCASE: 182,
- MOST: 183,
- NO: 184,
- NOT: 185,
- OCCURS: 186,
- PARAGRAPH: 187,
- PARAGRAPHS: 188,
- PHRASE: 189,
- RELATIONSHIP: 190,
- SAME: 191,
- SCORE: 192,
- SENSITIVE: 193,
- SENTENCE: 194,
- SENTENCES: 195,
- STEMMING: 196,
- STOP: 197,
- THESAURUS: 198,
- TIMES: 199,
- UPPERCASE: 200,
- USING: 201,
- WEIGHT: 202,
- WILDCARDS: 203,
- WITHOUT: 204,
- WORD: 205,
- WORDS: 206,
- BREAK: 207,
- CONTINUE: 208,
- EXIT: 209,
- LOOP: 210,
- RETURNING: 211,
- WHILE: 212,
- CHECK: 213,
- COLLECTION: 214,
- CONSTRAINT: 215,
- FOREACH: 216,
- FOREIGN: 217,
- INDEX: 218,
- INTEGRITY: 219,
- KEY: 220,
- ON: 221,
- UNIQUE: 222,
- AMP_ER: 223,
- APOS_ER: 224,
- QUOT_ER: 225,
- CONCAT: 226,
- LPAREN: 227,
- RPAREN: 228,
- DOLLAR: 229,
- L_UNION_BRACKET: 230,
- R_UNION_BRACKET: 231,
- LBRACKET: 232,
- RBRACKET: 233,
- LSQUARE: 234,
- RSQUARE: 235,
- EQUAL: 236,
- BIND: 237,
- NOTEQUAL: 238,
- ANN_PERCENT: 239,
- HASH: 240,
- AMP: 241,
- COMMA: 242,
- QUESTION: 243,
- STAR: 244,
- PLUS: 245,
- MINUS: 246,
- SMALLER: 247,
- GREATER: 248,
- SMALLEREQ: 249,
- GREATEREQ: 250,
- SMALLER_SMALLER: 251,
- GREATER_GREATER: 252,
- SLASH: 253,
- SLASH_SLASH: 254,
- BANG: 255,
- DOT: 256,
- DOT_DOT: 257,
- COLON: 258,
- COLON_COLON: 259,
- EMPTY_CLOSE_TAG: 260,
- CLOSE_TAG: 261,
- SEMICOLON: 262,
- VBAR: 263,
- PRAGMA_START: 264,
- PRAGMA_END: 265,
- XML_COMMENT_START: 266,
- XML_COMMENT_END: 267,
- PI_START: 268,
- PI_END: 269,
- ATTR_SIGN: 270,
- Q: 271,
- CHARREF_DEC: 272,
- CHARREF_HEX: 273,
- APOS: 274,
- QUOT: 275,
- NCNameStartChar: 276,
- NCNameChar: 277,
- L_NCName: 278,
- Letter: 279,
- HexLetter: 280,
- Digit: 281,
- Digits: 282,
- S: 283,
- SU: 284,
- L_Pragma: 285,
- L_DirCommentConstructor: 286,
- L_DirPIConstructor: 287,
- L_IntegerLiteral: 288,
- L_DecimalLiteral: 289,
- L_DoubleLiteral: 290,
- L_Comment: 291,
- L_AnyChar: 292,
- L_QuotStringLiteralChar: 293,
- L_AposStringLiteralChar: 294,
- LibraryModule: 295,
- MainModule: 296,
- VersionDecl: 297,
- VersionDeclEncoding: 298,
- VersionDeclVersion: 299,
- ModuleDecl: 300,
- Prolog: 301,
- DefaultNamespaceDecls: 302,
- DefaultNamespaceDecl: 303,
- Setters: 304,
- Setter: 305,
- NamespaceDecls: 306,
- NamespaceDecl: 307,
- Imports: 308,
- FTOptionDecls: 309,
- SchemaImport: 310,
- SchemaPrefix: 311,
- NamespaceName: 312,
- DefaultElementNamespace: 313,
- AtHints: 314,
- ModuleImport: 315,
- BaseURIDecl: 316,
- OrderedDecls: 317,
- VarDecl: 318,
- VarType: 319,
- VarValue: 320,
- VarDefaultValue: 321,
- VarVariableDecl: 322,
- FunctionDecl: 323,
- ParamList: 324,
- ReturnType: 325,
- OptionDecl: 326,
- TypeDeclaration: 327,
- Param: 328,
- EnclosedExpr: 329,
- QueryBody: 330,
- UnaryExpr: 331,
- DirElemConstructor: 332,
- DirAttributeList: 333,
- DirAttributeValue: 334,
- DirElemContent: 335,
- CommonContent: 336,
- SequenceType: 337,
- EmptySequenceTest: 338,
- KindTest: 339,
- ItemTest: 340,
- FunctionTest: 341,
- AtomicType: 342,
- AtomicOrUnionType: 343,
- StringLiteral: 344,
- ElementContentChar: 345,
- AttributeValueChar: 346,
- QName: 347,
- BlockExpr: 348
-});
-
-(function(){
-// public class variables
-var EOF= -1,
- L_QuotAttrContentChar= 4,
- L_AposAttrContentChar= 5,
- L_ElementContentChar= 6,
- L_CDataSection= 7,
- L_PredefinedEntityRef= 8,
- L_CharRef= 9,
- ESCAPE_LBRACKET= 10,
- ESCAPE_RBRACKET= 11,
- ESCAPE_APOS= 12,
- ESCAPE_QUOT= 13,
- CDATA_START= 14,
- CDATA_END= 15,
- ANCESTOR= 16,
- ANCESTOR_OR_SELF= 17,
- AND= 18,
- AS= 19,
- ASCENDING= 20,
- AT= 21,
- ATTRIBUTE= 22,
- BASE_URI= 23,
- BOUNDARY_SPACE= 24,
- BY= 25,
- CASE= 26,
- CAST= 27,
- CASTABLE= 28,
- CHILD= 29,
- COLLATION= 30,
- COMMENT= 31,
- CONSTRUCTION= 32,
- COPY_NAMESPACES= 33,
- DECLARE= 34,
- DEFAULT= 35,
- DESCENDANT= 36,
- DESCENDANT_OR_SELF= 37,
- DESCENDING= 38,
- DIV= 39,
- DOCUMENT= 40,
- DOCUMENT_NODE= 41,
- ELEMENT= 42,
- ELSE= 43,
- EMPTY= 44,
- EMPTY_SEQUENCE= 45,
- ENCODING= 46,
- EQ= 47,
- EVERY= 48,
- EXCEPT= 49,
- EXTERNAL= 50,
- FOLLOWING= 51,
- FOLLOWING_SIBLING= 52,
- FOR= 53,
- FUNCTION= 54,
- GE= 55,
- GREATEST= 56,
- GT= 57,
- IDIV= 58,
- IF= 59,
- IMPORT= 60,
- IN= 61,
- INHERIT= 62,
- INSTANCE= 63,
- INTERSECT= 64,
- IS= 65,
- ITEM= 66,
- LAX= 67,
- LE= 68,
- LEAST= 69,
- LET= 70,
- LT= 71,
- MOD= 72,
- MODULE= 73,
- NAMESPACE= 74,
- NE= 75,
- NO_INHERIT= 76,
- NO_PRESERVE= 77,
- NODE= 78,
- JSON= 79,
- OF= 80,
- OPTION= 81,
- OR= 82,
- ORDER= 83,
- ORDERED= 84,
- ORDERING= 85,
- PARENT= 86,
- PRECEDING= 87,
- PRECEDING_SIBLING= 88,
- PRESERVE= 89,
- PROCESSING_INSTRUCTION= 90,
- STRUCTURED_ITEM= 91,
- JSON_ITEM= 92,
- OBJECT= 93,
- ARRAY= 94,
- RETURN= 95,
- SATISFIES= 96,
- SCHEMA= 97,
- SCHEMA_ATTRIBUTE= 98,
- SCHEMA_ELEMENT= 99,
- SELF= 100,
- SOME= 101,
- STABLE= 102,
- STRICT= 103,
- STRIP= 104,
- TEXT= 105,
- THEN= 106,
- TO= 107,
- TREAT= 108,
- TYPESWITCH= 109,
- UNION= 110,
- UNORDERED= 111,
- VALIDATE= 112,
- VARIABLE= 113,
- VERSION= 114,
- WHERE= 115,
- XQUERY= 116,
- ALLOWING= 117,
- CATCH= 118,
- CONTEXT= 119,
- COUNT= 120,
- DECIMAL_FORMAT= 121,
- DECIMAL_SEPARATOR= 122,
- DIGIT= 123,
- END= 124,
- GROUP= 125,
- GROUPING_SEPARATOR= 126,
- INFINITY= 127,
- MINUS_SIGN= 128,
- NAMESPACE_NODE= 129,
- NAN= 130,
- NEXT= 131,
- ONLY= 132,
- PATTERN_SEPARATOR= 133,
- PERCENT= 134,
- PER_MILLE= 135,
- PREVIOUS= 136,
- SLIDING= 137,
- START= 138,
- SWITCH= 139,
- TRY= 140,
- TUMBLING= 141,
- TYPE= 142,
- WHEN= 143,
- WINDOW= 144,
- ZERO_DIGIT= 145,
- AFTER= 146,
- BEFORE= 147,
- COPY= 148,
- DELETE= 149,
- FIRST= 150,
- INSERT= 151,
- INTO= 152,
- POSITION= 153,
- APPEND= 154,
- LAST= 155,
- MODIFY= 156,
- NODES= 157,
- RENAME= 158,
- REPLACE= 159,
- REVALIDATION= 160,
- SKIP= 161,
- UPDATING= 162,
- VALUE= 163,
- WITH= 164,
- ALL= 165,
- ANY= 166,
- CONTAINS= 167,
- CONTENT= 168,
- DIACRITICS= 169,
- DIFFERENT= 170,
- DISTANCE= 171,
- ENTIRE= 172,
- EXACTLY= 173,
- FROM= 174,
- FT_OPTION= 175,
- FTAND= 176,
- FTNOT= 177,
- FTOR= 178,
- INSENSITIVE= 179,
- LANGUAGE= 180,
- LEVELS= 181,
- LOWERCASE= 182,
- MOST= 183,
- NO= 184,
- NOT= 185,
- OCCURS= 186,
- PARAGRAPH= 187,
- PARAGRAPHS= 188,
- PHRASE= 189,
- RELATIONSHIP= 190,
- SAME= 191,
- SCORE= 192,
- SENSITIVE= 193,
- SENTENCE= 194,
- SENTENCES= 195,
- STEMMING= 196,
- STOP= 197,
- THESAURUS= 198,
- TIMES= 199,
- UPPERCASE= 200,
- USING= 201,
- WEIGHT= 202,
- WILDCARDS= 203,
- WITHOUT= 204,
- WORD= 205,
- WORDS= 206,
- BREAK= 207,
- CONTINUE= 208,
- EXIT= 209,
- LOOP= 210,
- RETURNING= 211,
- WHILE= 212,
- CHECK= 213,
- COLLECTION= 214,
- CONSTRAINT= 215,
- FOREACH= 216,
- FOREIGN= 217,
- INDEX= 218,
- INTEGRITY= 219,
- KEY= 220,
- ON= 221,
- UNIQUE= 222,
- AMP_ER= 223,
- APOS_ER= 224,
- QUOT_ER= 225,
- CONCAT= 226,
- LPAREN= 227,
- RPAREN= 228,
- DOLLAR= 229,
- L_UNION_BRACKET= 230,
- R_UNION_BRACKET= 231,
- LBRACKET= 232,
- RBRACKET= 233,
- LSQUARE= 234,
- RSQUARE= 235,
- EQUAL= 236,
- BIND= 237,
- NOTEQUAL= 238,
- ANN_PERCENT= 239,
- HASH= 240,
- AMP= 241,
- COMMA= 242,
- QUESTION= 243,
- STAR= 244,
- PLUS= 245,
- MINUS= 246,
- SMALLER= 247,
- GREATER= 248,
- SMALLEREQ= 249,
- GREATEREQ= 250,
- SMALLER_SMALLER= 251,
- GREATER_GREATER= 252,
- SLASH= 253,
- SLASH_SLASH= 254,
- BANG= 255,
- DOT= 256,
- DOT_DOT= 257,
- COLON= 258,
- COLON_COLON= 259,
- EMPTY_CLOSE_TAG= 260,
- CLOSE_TAG= 261,
- SEMICOLON= 262,
- VBAR= 263,
- PRAGMA_START= 264,
- PRAGMA_END= 265,
- XML_COMMENT_START= 266,
- XML_COMMENT_END= 267,
- PI_START= 268,
- PI_END= 269,
- ATTR_SIGN= 270,
- Q= 271,
- CHARREF_DEC= 272,
- CHARREF_HEX= 273,
- APOS= 274,
- QUOT= 275,
- NCNameStartChar= 276,
- NCNameChar= 277,
- L_NCName= 278,
- Letter= 279,
- HexLetter= 280,
- Digit= 281,
- Digits= 282,
- S= 283,
- SU= 284,
- L_Pragma= 285,
- L_DirCommentConstructor= 286,
- L_DirPIConstructor= 287,
- L_IntegerLiteral= 288,
- L_DecimalLiteral= 289,
- L_DoubleLiteral= 290,
- L_Comment= 291,
- L_AnyChar= 292,
- L_QuotStringLiteralChar= 293,
- L_AposStringLiteralChar= 294,
- LibraryModule= 295,
- MainModule= 296,
- VersionDecl= 297,
- VersionDeclEncoding= 298,
- VersionDeclVersion= 299,
- ModuleDecl= 300,
- Prolog= 301,
- DefaultNamespaceDecls= 302,
- DefaultNamespaceDecl= 303,
- Setters= 304,
- Setter= 305,
- NamespaceDecls= 306,
- NamespaceDecl= 307,
- Imports= 308,
- FTOptionDecls= 309,
- SchemaImport= 310,
- SchemaPrefix= 311,
- NamespaceName= 312,
- DefaultElementNamespace= 313,
- AtHints= 314,
- ModuleImport= 315,
- BaseURIDecl= 316,
- OrderedDecls= 317,
- VarDecl= 318,
- VarType= 319,
- VarValue= 320,
- VarDefaultValue= 321,
- VarVariableDecl= 322,
- FunctionDecl= 323,
- ParamList= 324,
- ReturnType= 325,
- OptionDecl= 326,
- TypeDeclaration= 327,
- Param= 328,
- EnclosedExpr= 329,
- QueryBody= 330,
- UnaryExpr= 331,
- DirElemConstructor= 332,
- DirAttributeList= 333,
- DirAttributeValue= 334,
- DirElemContent= 335,
- CommonContent= 336,
- SequenceType= 337,
- EmptySequenceTest= 338,
- KindTest= 339,
- ItemTest= 340,
- FunctionTest= 341,
- AtomicType= 342,
- AtomicOrUnionType= 343,
- StringLiteral= 344,
- ElementContentChar= 345,
- AttributeValueChar= 346,
- QName= 347,
- BlockExpr= 348;
-
-// public instance methods/vars
-org.antlr.lang.extend(XQueryParser, XQDTParser, {
-
- setTreeAdaptor: function(adaptor) {
- this.adaptor = adaptor;
- },
- getTreeAdaptor: function() {
- return this.adaptor;
- },
-
- getTokenNames: function() { return XQueryParser.tokenNames; },
- getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g"; }
-});
-org.antlr.lang.augmentObject(XQueryParser.prototype, {
-
- // inline static return class
- p_Module_return: (function() {
- XQueryParser.p_Module_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Module_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:292:1: p_Module : (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF ;
- // $ANTLR start "p_Module"
- p_Module: function() {
- var retval = new XQueryParser.p_Module_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var EOF1 = null;
- var vd = null;
- var lm = null;
- var mm = null;
-
- var EOF1_tree=null;
- var stream_EOF=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EOF");
- var stream_p_VersionDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VersionDecl");
- var stream_p_LibraryModule=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_LibraryModule");
- var stream_p_MainModule=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_MainModule");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:9: ( (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:11: (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:13: (vd= p_VersionDecl )?
- var alt1=2;
- alt1 = this.dfa1.predict(this.input);
- switch (alt1) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:13: vd= p_VersionDecl
- this.pushFollow(XQueryParser.FOLLOW_p_VersionDecl_in_p_Module503);
- vd=this.p_VersionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_VersionDecl.add(vd.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:294:13: (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->)
- var alt2=2;
- alt2 = this.dfa2.predict(this.input);
- switch (alt2) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:295:15: lm= p_LibraryModule[$vd.tree]
- this.pushFollow(XQueryParser.FOLLOW_p_LibraryModule_in_p_Module536);
- lm=this.p_LibraryModule((vd?vd.tree:null));
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_LibraryModule.add(lm.getTree());
-
-
- // AST REWRITE
- // elements:
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 295:44: ->
- {
- this.adaptor.addChild(root_0, (lm?lm.tree:null));
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:296:15: mm= p_MainModule[$vd.tree]
- this.pushFollow(XQueryParser.FOLLOW_p_MainModule_in_p_Module559);
- mm=this.p_MainModule((vd?vd.tree:null));
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_MainModule.add(mm.getTree());
-
-
- // AST REWRITE
- // elements:
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 296:44: ->
- {
- this.adaptor.addChild(root_0, (mm?mm.tree:null));
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
-
- EOF1=this.match(this.input,EOF,XQueryParser.FOLLOW_EOF_in_p_Module583); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EOF.add(EOF1);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VersionDecl_return: (function() {
- XQueryParser.p_VersionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VersionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:301:1: p_VersionDecl : k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) ) ;
- // $ANTLR start "p_VersionDecl"
- p_VersionDecl: function() {
- var retval = new XQueryParser.p_VersionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON2 = null;
- var enc = null;
- var ver = null;
-
- var k_tree=null;
- var SEMICOLON2_tree=null;
- var stream_ENCODING=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ENCODING");
- var stream_VERSION=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token VERSION");
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_XQUERY=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token XQUERY");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:9: (k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:11: k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON
- k=this.match(this.input,XQUERY,XQueryParser.FOLLOW_XQUERY_in_p_VersionDecl611); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_XQUERY.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:35: ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) )
- var alt4=2;
- var LA4_0 = this.input.LA(1);
-
- if ( (LA4_0==ENCODING) ) {
- alt4=1;
- }
- else if ( (LA4_0==VERSION) ) {
- alt4=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 4, 0, this.input);
-
- throw nvae;
- }
- switch (alt4) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:36: (k= ENCODING enc= p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:36: (k= ENCODING enc= p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:37: k= ENCODING enc= p_StringLiteral
- k=this.match(this.input,ENCODING,XQueryParser.FOLLOW_ENCODING_in_p_VersionDecl619); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ENCODING.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl625);
- enc=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(enc.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:13: (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:13: (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:14: k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )?
- k=this.match(this.input,VERSION,XQueryParser.FOLLOW_VERSION_in_p_VersionDecl646); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_VERSION.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl652);
- ver=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ver.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:59: (k= ENCODING enc= p_StringLiteral )?
- var alt3=2;
- var LA3_0 = this.input.LA(1);
-
- if ( (LA3_0==ENCODING) ) {
- alt3=1;
- }
- switch (alt3) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:60: k= ENCODING enc= p_StringLiteral
- k=this.match(this.input,ENCODING,XQueryParser.FOLLOW_ENCODING_in_p_VersionDecl657); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ENCODING.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl663);
- enc=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(enc.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
-
- }
-
- SEMICOLON2=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_VersionDecl669); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON2);
-
-
-
- // AST REWRITE
- // elements: ver, enc
- // token labels:
- // rule labels: retval, ver, enc
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_ver=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ver",ver!=null?ver.tree:null);
- var stream_enc=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token enc",enc!=null?enc.tree:null);
-
- root_0 = this.adaptor.nil();
- // 304:17: -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:20: ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(VersionDecl, "VersionDecl"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:34: ^( VersionDeclVersion ( $ver)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(VersionDeclVersion, "VersionDeclVersion"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:55: ( $ver)?
- if ( stream_ver.hasNext() ) {
- this.adaptor.addChild(root_2, stream_ver.nextTree());
-
- }
- stream_ver.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:62: ^( VersionDeclEncoding ( $enc)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(VersionDeclEncoding, "VersionDeclEncoding"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:84: ( $enc)?
- if ( stream_enc.hasNext() ) {
- this.adaptor.addChild(root_2, stream_enc.nextTree());
-
- }
- stream_enc.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_MainModule_return: (function() {
- XQueryParser.p_MainModule_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_MainModule_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:308:1: p_MainModule[vd] : pm_Prolog pm_QueryBody -> ^( MainModule pm_Prolog ) ;
- // $ANTLR start "p_MainModule"
- p_MainModule: function(vd) {
- var retval = new XQueryParser.p_MainModule_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pm_Prolog3 = null;
- var pm_QueryBody4 = null;
-
- var stream_pm_QueryBody=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_QueryBody");
- var stream_pm_Prolog=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_Prolog");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:309:9: ( pm_Prolog pm_QueryBody -> ^( MainModule pm_Prolog ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:309:11: pm_Prolog pm_QueryBody
- this.pushFollow(XQueryParser.FOLLOW_pm_Prolog_in_p_MainModule735);
- pm_Prolog3=this.pm_Prolog();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_Prolog.add(pm_Prolog3.getTree());
- this.pushFollow(XQueryParser.FOLLOW_pm_QueryBody_in_p_MainModule737);
- pm_QueryBody4=this.pm_QueryBody();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_QueryBody.add(pm_QueryBody4.getTree());
-
-
- // AST REWRITE
- // elements: pm_Prolog
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 310:17: -> ^( MainModule pm_Prolog )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:310:20: ^( MainModule pm_Prolog )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(MainModule, "MainModule"), root_1);
-
- this.adaptor.addChild(root_1, vd);
- this.adaptor.addChild(root_1, stream_pm_Prolog.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_LibraryModule_return: (function() {
- XQueryParser.p_LibraryModule_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_LibraryModule_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:314:1: p_LibraryModule[vd] : p_ModuleDecl pm_Prolog -> ^( LibraryModule p_ModuleDecl pm_Prolog ) ;
- // $ANTLR start "p_LibraryModule"
- p_LibraryModule: function(vd) {
- var retval = new XQueryParser.p_LibraryModule_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ModuleDecl5 = null;
- var pm_Prolog6 = null;
-
- var stream_pm_Prolog=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_Prolog");
- var stream_p_ModuleDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ModuleDecl");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:315:9: ( p_ModuleDecl pm_Prolog -> ^( LibraryModule p_ModuleDecl pm_Prolog ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:315:11: p_ModuleDecl pm_Prolog
- this.pushFollow(XQueryParser.FOLLOW_p_ModuleDecl_in_p_LibraryModule793);
- p_ModuleDecl5=this.p_ModuleDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_ModuleDecl.add(p_ModuleDecl5.getTree());
- this.pushFollow(XQueryParser.FOLLOW_pm_Prolog_in_p_LibraryModule795);
- pm_Prolog6=this.pm_Prolog();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_Prolog.add(pm_Prolog6.getTree());
-
-
- // AST REWRITE
- // elements: pm_Prolog, p_ModuleDecl
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 316:17: -> ^( LibraryModule p_ModuleDecl pm_Prolog )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:316:20: ^( LibraryModule p_ModuleDecl pm_Prolog )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(LibraryModule, "LibraryModule"), root_1);
-
- this.adaptor.addChild(root_1, vd);
- this.adaptor.addChild(root_1, stream_p_ModuleDecl.nextTree());
- this.adaptor.addChild(root_1, stream_pm_Prolog.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ModuleDecl_return: (function() {
- XQueryParser.p_ModuleDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ModuleDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:320:1: p_ModuleDecl : k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON -> ^( ModuleDecl p_NCName p_StringLiteral ) ;
- // $ANTLR start "p_ModuleDecl"
- p_ModuleDecl: function() {
- var retval = new XQueryParser.p_ModuleDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var EQUAL8 = null;
- var SEMICOLON10 = null;
- var k = null;
- var list_k=null;
- var p_NCName7 = null;
- var p_StringLiteral9 = null;
-
- var EQUAL8_tree=null;
- var SEMICOLON10_tree=null;
- var k_tree=null;
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_MODULE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MODULE");
- var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
- var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:321:9: (k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON -> ^( ModuleDecl p_NCName p_StringLiteral ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:321:11: k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON
- k=this.match(this.input,MODULE,XQueryParser.FOLLOW_MODULE_in_p_ModuleDecl851); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_MODULE.add(k);
-
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_ModuleDecl855); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);
-
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_ModuleDecl859);
- p_NCName7=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(p_NCName7.getTree());
- EQUAL8=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_ModuleDecl861); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL8);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_ModuleDecl863);
- p_StringLiteral9=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(p_StringLiteral9.getTree());
- SEMICOLON10=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ModuleDecl865); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON10);
-
-
-
- // AST REWRITE
- // elements: p_NCName, p_StringLiteral
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 322:17: -> ^( ModuleDecl p_NCName p_StringLiteral )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:322:21: ^( ModuleDecl p_NCName p_StringLiteral )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(ModuleDecl, "ModuleDecl"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_NCName.nextTree());
- this.adaptor.addChild(root_1, stream_p_StringLiteral.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_Prolog_return: (function() {
- XQueryParser.pm_Prolog_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_Prolog_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:328:1: pm_Prolog : ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )* -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) ) ;
- // $ANTLR start "pm_Prolog"
- pm_Prolog: function() {
- var retval = new XQueryParser.pm_Prolog_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var list_dnd=null;
- var list_s=null;
- var list_nd=null;
- var list_i=null;
- var list_fto=null;
- var list_od=null;
- var dnd = null;
- var s = null;
- var nd = null;
- var i = null;
- var fto = null;
- var od = null;
- var stream_pm_NamespaceDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_NamespaceDecl");
- var stream_p_Import=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Import");
- var stream_p_Setter=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Setter");
- var stream_pm_DefaultNamespaceDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_DefaultNamespaceDecl");
- var stream_pg_OrderedDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_OrderedDecl");
- var stream_pm_FTOptionDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_FTOptionDecl");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:9: ( ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )* -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )*
- loop6:
- do {
- var alt6=2;
- alt6 = this.dfa6.predict(this.input);
- switch (alt6) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:12: (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:12: (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl )
- var alt5=5;
- var LA5_0 = this.input.LA(1);
-
- if ( (LA5_0==DECLARE) ) {
- var LA5_1 = this.input.LA(2);
-
- if ( (LA5_1==REVALIDATION) && ((this.lc(XQU)))) {
- alt5=2;
- }
- else if ( (LA5_1==FT_OPTION) ) {
- alt5=5;
- }
- else if ( (LA5_1==DEFAULT) ) {
- var LA5_5 = this.input.LA(3);
-
- if ( (LA5_5==ELEMENT||LA5_5==FUNCTION) ) {
- alt5=1;
- }
- else if ( (LA5_5==COLLATION||LA5_5==ORDER||LA5_5==DECIMAL_FORMAT) ) {
- alt5=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 5, 5, this.input);
-
- throw nvae;
- }
- }
- else if ( ((LA5_1>=BASE_URI && LA5_1<=BOUNDARY_SPACE)||(LA5_1>=CONSTRUCTION && LA5_1<=COPY_NAMESPACES)||LA5_1==ORDERING||LA5_1==DECIMAL_FORMAT) ) {
- alt5=2;
- }
- else if ( (LA5_1==NAMESPACE) ) {
- alt5=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 5, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA5_0==IMPORT) ) {
- alt5=4;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 5, 0, this.input);
-
- throw nvae;
- }
- switch (alt5) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:13: dnd+= pm_DefaultNamespaceDecl
- this.pushFollow(XQueryParser.FOLLOW_pm_DefaultNamespaceDecl_in_pm_Prolog924);
- dnd=this.pm_DefaultNamespaceDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_DefaultNamespaceDecl.add(dnd.getTree());
- if (org.antlr.lang.isNull(list_dnd)) list_dnd = [];
- list_dnd.push(dnd.getTree());
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:44: s+= p_Setter
- this.pushFollow(XQueryParser.FOLLOW_p_Setter_in_pm_Prolog930);
- s=this.p_Setter();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_Setter.add(s.getTree());
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s.getTree());
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:58: nd+= pm_NamespaceDecl
- this.pushFollow(XQueryParser.FOLLOW_pm_NamespaceDecl_in_pm_Prolog936);
- nd=this.pm_NamespaceDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_NamespaceDecl.add(nd.getTree());
- if (org.antlr.lang.isNull(list_nd)) list_nd = [];
- list_nd.push(nd.getTree());
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:81: i+= p_Import
- this.pushFollow(XQueryParser.FOLLOW_p_Import_in_pm_Prolog942);
- i=this.p_Import();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_Import.add(i.getTree());
- if (org.antlr.lang.isNull(list_i)) list_i = [];
- list_i.push(i.getTree());
-
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:95: fto+= pm_FTOptionDecl
- this.pushFollow(XQueryParser.FOLLOW_pm_FTOptionDecl_in_pm_Prolog948);
- fto=this.pm_FTOptionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_FTOptionDecl.add(fto.getTree());
- if (org.antlr.lang.isNull(list_fto)) list_fto = [];
- list_fto.push(fto.getTree());
-
-
-
- break;
-
- }
-
-
-
- break;
-
- default :
- break loop6;
- }
- } while (true);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:121: (od+= pg_OrderedDecl )*
- loop7:
- do {
- var alt7=2;
- var LA7_0 = this.input.LA(1);
-
- if ( (LA7_0==DECLARE) ) {
- var LA7_3 = this.input.LA(2);
-
- if ( (LA7_3==FUNCTION||LA7_3==OPTION||LA7_3==VARIABLE||LA7_3==CONTEXT||LA7_3==UPDATING||LA7_3==COLLECTION||(LA7_3>=INDEX && LA7_3<=INTEGRITY)||LA7_3==ANN_PERCENT) ) {
- alt7=1;
- }
-
-
- }
-
-
- switch (alt7) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:121: od+= pg_OrderedDecl
- this.pushFollow(XQueryParser.FOLLOW_pg_OrderedDecl_in_pm_Prolog955);
- od=this.pg_OrderedDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pg_OrderedDecl.add(od.getTree());
- if (org.antlr.lang.isNull(list_od)) list_od = [];
- list_od.push(od.getTree());
-
-
-
- break;
-
- default :
- break loop7;
- }
- } while (true);
-
-
-
- // AST REWRITE
- // elements: fto, od, dnd, nd, i, s
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels: od, s, fto, nd, dnd, i
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_od=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token od",list_od);
- var stream_s=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token s",list_s);
- var stream_fto=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token fto",list_fto);
- var stream_nd=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nd",list_nd);
- var stream_dnd=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token dnd",list_dnd);
- var stream_i=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token i",list_i);
- root_0 = this.adaptor.nil();
- // 330:17: -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:330:21: ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(Prolog, "Prolog"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:331:33: ^( DefaultNamespaceDecls ( $dnd)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(DefaultNamespaceDecls, "DefaultNamespaceDecls"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:331:57: ( $dnd)*
- while ( stream_dnd.hasNext() ) {
- this.adaptor.addChild(root_2, stream_dnd.nextTree());
-
- }
- stream_dnd.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:332:33: ^( Setters ( $s)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(Setters, "Setters"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:332:43: ( $s)*
- while ( stream_s.hasNext() ) {
- this.adaptor.addChild(root_2, stream_s.nextTree());
-
- }
- stream_s.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:333:33: ^( NamespaceDecls ( $nd)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceDecls, "NamespaceDecls"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:333:50: ( $nd)*
- while ( stream_nd.hasNext() ) {
- this.adaptor.addChild(root_2, stream_nd.nextTree());
-
- }
- stream_nd.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:334:33: ^( Imports ( $i)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(Imports, "Imports"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:334:43: ( $i)*
- while ( stream_i.hasNext() ) {
- this.adaptor.addChild(root_2, stream_i.nextTree());
-
- }
- stream_i.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:335:33: ^( FTOptionDecls ( $fto)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(FTOptionDecls, "FTOptionDecls"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:335:49: ( $fto)*
- while ( stream_fto.hasNext() ) {
- this.adaptor.addChild(root_2, stream_fto.nextTree());
-
- }
- stream_fto.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:336:33: ^( OrderedDecls ( $od)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(OrderedDecls, "OrderedDecls"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:336:48: ( $od)*
- while ( stream_od.hasNext() ) {
- this.adaptor.addChild(root_2, stream_od.nextTree());
-
- }
- stream_od.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_OrderedDecl_return: (function() {
- XQueryParser.pg_OrderedDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_OrderedDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:344:1: pg_OrderedDecl : ( pm_ContextItemDecl | pm_AnnotatedDecl | pm_OptionDecl );
- // $ANTLR start "pg_OrderedDecl"
- pg_OrderedDecl: function() {
- var retval = new XQueryParser.pg_OrderedDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pm_ContextItemDecl11 = null;
- var pm_AnnotatedDecl12 = null;
- var pm_OptionDecl13 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:345:9: ( pm_ContextItemDecl | pm_AnnotatedDecl | pm_OptionDecl )
- var alt8=3;
- var LA8_0 = this.input.LA(1);
-
- if ( (LA8_0==DECLARE) ) {
- switch ( this.input.LA(2) ) {
- case CONTEXT:
- alt8=1;
- break;
- case FUNCTION:
- case VARIABLE:
- case UPDATING:
- case COLLECTION:
- case INDEX:
- case INTEGRITY:
- case ANN_PERCENT:
- alt8=2;
- break;
- case OPTION:
- alt8=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 8, 1, this.input);
-
- throw nvae;
- }
-
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 8, 0, this.input);
-
- throw nvae;
- }
- switch (alt8) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:345:11: pm_ContextItemDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_ContextItemDecl_in_pg_OrderedDecl1270);
- pm_ContextItemDecl11=this.pm_ContextItemDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ContextItemDecl11.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:346:11: pm_AnnotatedDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_AnnotatedDecl_in_pg_OrderedDecl1282);
- pm_AnnotatedDecl12=this.pm_AnnotatedDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_AnnotatedDecl12.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:347:11: pm_OptionDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_OptionDecl_in_pg_OrderedDecl1294);
- pm_OptionDecl13=this.pm_OptionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_OptionDecl13.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Setter_return: (function() {
- XQueryParser.p_Setter_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Setter_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:355:1: p_Setter : ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl );
- // $ANTLR start "p_Setter"
- p_Setter: function() {
- var retval = new XQueryParser.p_Setter_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pm_BoundarySpaceDecl14 = null;
- var pm_DefaultCollationDecl15 = null;
- var pm_BaseURIDecl16 = null;
- var pm_ConstructionDecl17 = null;
- var pm_OrderingModeDecl18 = null;
- var pm_EmptyOrderDecl19 = null;
- var pm_RevalidationDecl20 = null;
- var pm_CopyNamespacesDecl21 = null;
- var pm_DecimalFormatDecl22 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:356:9: ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl )
- var alt9=9;
- alt9 = this.dfa9.predict(this.input);
- switch (alt9) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:356:11: pm_BoundarySpaceDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_BoundarySpaceDecl_in_p_Setter1324);
- pm_BoundarySpaceDecl14=this.pm_BoundarySpaceDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_BoundarySpaceDecl14.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:357:11: pm_DefaultCollationDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_DefaultCollationDecl_in_p_Setter1336);
- pm_DefaultCollationDecl15=this.pm_DefaultCollationDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_DefaultCollationDecl15.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:358:11: pm_BaseURIDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_BaseURIDecl_in_p_Setter1348);
- pm_BaseURIDecl16=this.pm_BaseURIDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_BaseURIDecl16.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:359:11: pm_ConstructionDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_ConstructionDecl_in_p_Setter1360);
- pm_ConstructionDecl17=this.pm_ConstructionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ConstructionDecl17.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:360:11: pm_OrderingModeDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_OrderingModeDecl_in_p_Setter1372);
- pm_OrderingModeDecl18=this.pm_OrderingModeDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_OrderingModeDecl18.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:361:11: pm_EmptyOrderDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_EmptyOrderDecl_in_p_Setter1384);
- pm_EmptyOrderDecl19=this.pm_EmptyOrderDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_EmptyOrderDecl19.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:362:11: {...}? => pm_RevalidationDecl
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(XQU))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "p_Setter", "this.lc(XQU)");
- }
- this.pushFollow(XQueryParser.FOLLOW_pm_RevalidationDecl_in_p_Setter1399);
- pm_RevalidationDecl20=this.pm_RevalidationDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_RevalidationDecl20.getTree());
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:363:11: pm_CopyNamespacesDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CopyNamespacesDecl_in_p_Setter1411);
- pm_CopyNamespacesDecl21=this.pm_CopyNamespacesDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CopyNamespacesDecl21.getTree());
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:364:11: pm_DecimalFormatDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_DecimalFormatDecl_in_p_Setter1423);
- pm_DecimalFormatDecl22=this.pm_DecimalFormatDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_DecimalFormatDecl22.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_BoundarySpaceDecl_return: (function() {
- XQueryParser.pm_BoundarySpaceDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_BoundarySpaceDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:368:1: pm_BoundarySpaceDecl : k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON ;
- // $ANTLR start "pm_BoundarySpaceDecl"
- pm_BoundarySpaceDecl: function() {
- var retval = new XQueryParser.pm_BoundarySpaceDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON23 = null;
-
- var k_tree=null;
- var SEMICOLON23_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:9: (k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:11: k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_BoundarySpaceDecl1455); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,BOUNDARY_SPACE,XQueryParser.FOLLOW_BOUNDARY_SPACE_in_pm_BoundarySpaceDecl1461); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:68: ( (k= PRESERVE ) | (k= STRIP ) )
- var alt10=2;
- var LA10_0 = this.input.LA(1);
-
- if ( (LA10_0==PRESERVE) ) {
- alt10=1;
- }
- else if ( (LA10_0==STRIP) ) {
- alt10=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 10, 0, this.input);
-
- throw nvae;
- }
- switch (alt10) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:70: (k= PRESERVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:70: (k= PRESERVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:71: k= PRESERVE
- k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_pm_BoundarySpaceDecl1470); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:100: (k= STRIP )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:100: (k= STRIP )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:101: k= STRIP
- k=this.match(this.input,STRIP,XQueryParser.FOLLOW_STRIP_in_pm_BoundarySpaceDecl1480); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
-
-
- break;
-
- }
-
- SEMICOLON23=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_BoundarySpaceDecl1487); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON23_tree = this.adaptor.create(SEMICOLON23);
- this.adaptor.addChild(root_0, SEMICOLON23_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_DefaultCollationDecl_return: (function() {
- XQueryParser.pm_DefaultCollationDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_DefaultCollationDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:373:1: pm_DefaultCollationDecl : k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON ;
- // $ANTLR start "pm_DefaultCollationDecl"
- pm_DefaultCollationDecl: function() {
- var retval = new XQueryParser.pm_DefaultCollationDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON25 = null;
- var p_StringLiteral24 = null;
-
- var k_tree=null;
- var SEMICOLON25_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:374:9: (k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:374:11: k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DefaultCollationDecl1515); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DefaultCollationDecl1521); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_pm_DefaultCollationDecl1527); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DefaultCollationDecl1531);
- p_StringLiteral24=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral24.getTree());
- SEMICOLON25=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DefaultCollationDecl1533); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON25_tree = this.adaptor.create(SEMICOLON25);
- this.adaptor.addChild(root_0, SEMICOLON25_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_BaseURIDecl_return: (function() {
- XQueryParser.pm_BaseURIDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_BaseURIDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:378:1: pm_BaseURIDecl : k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON -> ^( BaseURIDecl $sl) ;
- // $ANTLR start "pm_BaseURIDecl"
- pm_BaseURIDecl: function() {
- var retval = new XQueryParser.pm_BaseURIDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON26 = null;
- var sl = null;
-
- var k_tree=null;
- var SEMICOLON26_tree=null;
- var stream_DECLARE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DECLARE");
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_BASE_URI=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token BASE_URI");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:379:9: (k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON -> ^( BaseURIDecl $sl) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:379:11: k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_BaseURIDecl1569); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_DECLARE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,BASE_URI,XQueryParser.FOLLOW_BASE_URI_in_pm_BaseURIDecl1575); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_BASE_URI.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_BaseURIDecl1581);
- sl=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(sl.getTree());
- SEMICOLON26=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_BaseURIDecl1583); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON26);
-
-
-
- // AST REWRITE
- // elements: sl
- // token labels:
- // rule labels: sl, retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_sl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token sl",sl!=null?sl.tree:null);
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 380:17: -> ^( BaseURIDecl $sl)
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:380:20: ^( BaseURIDecl $sl)
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(BaseURIDecl, "BaseURIDecl"), root_1);
-
- this.adaptor.addChild(root_1, stream_sl.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_ConstructionDecl_return: (function() {
- XQueryParser.pm_ConstructionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_ConstructionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:384:1: pm_ConstructionDecl : k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON ;
- // $ANTLR start "pm_ConstructionDecl"
- pm_ConstructionDecl: function() {
- var retval = new XQueryParser.pm_ConstructionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON27 = null;
-
- var k_tree=null;
- var SEMICOLON27_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:9: (k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:11: k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_ConstructionDecl1636); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,CONSTRUCTION,XQueryParser.FOLLOW_CONSTRUCTION_in_pm_ConstructionDecl1642); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:66: ( (k= STRIP | k= PRESERVE ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:68: (k= STRIP | k= PRESERVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:68: (k= STRIP | k= PRESERVE )
- var alt11=2;
- var LA11_0 = this.input.LA(1);
-
- if ( (LA11_0==STRIP) ) {
- alt11=1;
- }
- else if ( (LA11_0==PRESERVE) ) {
- alt11=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 11, 0, this.input);
-
- throw nvae;
- }
- switch (alt11) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:69: k= STRIP
- k=this.match(this.input,STRIP,XQueryParser.FOLLOW_STRIP_in_pm_ConstructionDecl1651); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:79: k= PRESERVE
- k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_pm_ConstructionDecl1657); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- SEMICOLON27=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ConstructionDecl1664); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON27_tree = this.adaptor.create(SEMICOLON27);
- this.adaptor.addChild(root_0, SEMICOLON27_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_OrderingModeDecl_return: (function() {
- XQueryParser.pm_OrderingModeDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_OrderingModeDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:389:1: pm_OrderingModeDecl : k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON ;
- // $ANTLR start "pm_OrderingModeDecl"
- pm_OrderingModeDecl: function() {
- var retval = new XQueryParser.pm_OrderingModeDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON28 = null;
-
- var k_tree=null;
- var SEMICOLON28_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:9: (k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:11: k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_OrderingModeDecl1692); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,ORDERING,XQueryParser.FOLLOW_ORDERING_in_pm_OrderingModeDecl1698); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:62: ( (k= ORDERED | k= UNORDERED ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:64: (k= ORDERED | k= UNORDERED )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:64: (k= ORDERED | k= UNORDERED )
- var alt12=2;
- var LA12_0 = this.input.LA(1);
-
- if ( (LA12_0==ORDERED) ) {
- alt12=1;
- }
- else if ( (LA12_0==UNORDERED) ) {
- alt12=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 12, 0, this.input);
-
- throw nvae;
- }
- switch (alt12) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:65: k= ORDERED
- k=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_pm_OrderingModeDecl1707); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:77: k= UNORDERED
- k=this.match(this.input,UNORDERED,XQueryParser.FOLLOW_UNORDERED_in_pm_OrderingModeDecl1713); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- SEMICOLON28=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_OrderingModeDecl1720); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON28_tree = this.adaptor.create(SEMICOLON28);
- this.adaptor.addChild(root_0, SEMICOLON28_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_EmptyOrderDecl_return: (function() {
- XQueryParser.pm_EmptyOrderDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_EmptyOrderDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:394:1: pm_EmptyOrderDecl : k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON ;
- // $ANTLR start "pm_EmptyOrderDecl"
- pm_EmptyOrderDecl: function() {
- var retval = new XQueryParser.pm_EmptyOrderDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON29 = null;
-
- var k_tree=null;
- var SEMICOLON29_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:9: (k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:11: k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_EmptyOrderDecl1748); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_EmptyOrderDecl1754); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_pm_EmptyOrderDecl1760); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_pm_EmptyOrderDecl1766); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:107: ( (k= GREATEST | k= LEAST ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:109: (k= GREATEST | k= LEAST )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:109: (k= GREATEST | k= LEAST )
- var alt13=2;
- var LA13_0 = this.input.LA(1);
-
- if ( (LA13_0==GREATEST) ) {
- alt13=1;
- }
- else if ( (LA13_0==LEAST) ) {
- alt13=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 13, 0, this.input);
-
- throw nvae;
- }
- switch (alt13) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:110: k= GREATEST
- k=this.match(this.input,GREATEST,XQueryParser.FOLLOW_GREATEST_in_pm_EmptyOrderDecl1775); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:123: k= LEAST
- k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_pm_EmptyOrderDecl1781); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- SEMICOLON29=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_EmptyOrderDecl1788); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON29_tree = this.adaptor.create(SEMICOLON29);
- this.adaptor.addChild(root_0, SEMICOLON29_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CopyNamespacesDecl_return: (function() {
- XQueryParser.pm_CopyNamespacesDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CopyNamespacesDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:399:1: pm_CopyNamespacesDecl : k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON ;
- // $ANTLR start "pm_CopyNamespacesDecl"
- pm_CopyNamespacesDecl: function() {
- var retval = new XQueryParser.pm_CopyNamespacesDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var COMMA31 = null;
- var SEMICOLON33 = null;
- var p_PreserveMode30 = null;
- var p_InheritMode32 = null;
-
- var k_tree=null;
- var COMMA31_tree=null;
- var SEMICOLON33_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:400:9: (k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:400:11: k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_CopyNamespacesDecl1816); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,COPY_NAMESPACES,XQueryParser.FOLLOW_COPY_NAMESPACES_in_pm_CopyNamespacesDecl1822); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PreserveMode_in_pm_CopyNamespacesDecl1826);
- p_PreserveMode30=this.p_PreserveMode();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PreserveMode30.getTree());
- COMMA31=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_CopyNamespacesDecl1828); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA31_tree = this.adaptor.create(COMMA31);
- this.adaptor.addChild(root_0, COMMA31_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_InheritMode_in_pm_CopyNamespacesDecl1830);
- p_InheritMode32=this.p_InheritMode();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InheritMode32.getTree());
- SEMICOLON33=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_CopyNamespacesDecl1832); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON33_tree = this.adaptor.create(SEMICOLON33);
- this.adaptor.addChild(root_0, SEMICOLON33_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PreserveMode_return: (function() {
- XQueryParser.p_PreserveMode_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PreserveMode_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:404:1: p_PreserveMode : (k+= PRESERVE | k+= NO_PRESERVE ) ;
- // $ANTLR start "p_PreserveMode"
- p_PreserveMode: function() {
- var retval = new XQueryParser.p_PreserveMode_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:9: ( (k+= PRESERVE | k+= NO_PRESERVE ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:11: (k+= PRESERVE | k+= NO_PRESERVE )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:11: (k+= PRESERVE | k+= NO_PRESERVE )
- var alt14=2;
- var LA14_0 = this.input.LA(1);
-
- if ( (LA14_0==PRESERVE) ) {
- alt14=1;
- }
- else if ( (LA14_0==NO_PRESERVE) ) {
- alt14=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 14, 0, this.input);
-
- throw nvae;
- }
- switch (alt14) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:12: k+= PRESERVE
- k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_p_PreserveMode1861); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:26: k+= NO_PRESERVE
- k=this.match(this.input,NO_PRESERVE,XQueryParser.FOLLOW_NO_PRESERVE_in_p_PreserveMode1867); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InheritMode_return: (function() {
- XQueryParser.p_InheritMode_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InheritMode_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:409:1: p_InheritMode : (k+= INHERIT | k+= NO_INHERIT ) ;
- // $ANTLR start "p_InheritMode"
- p_InheritMode: function() {
- var retval = new XQueryParser.p_InheritMode_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:9: ( (k+= INHERIT | k+= NO_INHERIT ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:11: (k+= INHERIT | k+= NO_INHERIT )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:11: (k+= INHERIT | k+= NO_INHERIT )
- var alt15=2;
- var LA15_0 = this.input.LA(1);
-
- if ( (LA15_0==INHERIT) ) {
- alt15=1;
- }
- else if ( (LA15_0==NO_INHERIT) ) {
- alt15=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 15, 0, this.input);
-
- throw nvae;
- }
- switch (alt15) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:12: k+= INHERIT
- k=this.match(this.input,INHERIT,XQueryParser.FOLLOW_INHERIT_in_p_InheritMode1899); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:25: k+= NO_INHERIT
- k=this.match(this.input,NO_INHERIT,XQueryParser.FOLLOW_NO_INHERIT_in_p_InheritMode1905); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_DecimalFormatDecl_return: (function() {
- XQueryParser.pm_DecimalFormatDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_DecimalFormatDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:414:1: pm_DecimalFormatDecl : k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON ;
- // $ANTLR start "pm_DecimalFormatDecl"
- pm_DecimalFormatDecl: function() {
- var retval = new XQueryParser.pm_DecimalFormatDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var EQUAL36 = null;
- var SEMICOLON38 = null;
- var p_EQName34 = null;
- var p_DFPropertyName35 = null;
- var p_StringLiteral37 = null;
-
- var k_tree=null;
- var EQUAL36_tree=null;
- var SEMICOLON38_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:9: (k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:11: k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DecimalFormatDecl1944); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:36: ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) )
- var alt16=2;
- var LA16_0 = this.input.LA(1);
-
- if ( (LA16_0==DECIMAL_FORMAT) ) {
- alt16=1;
- }
- else if ( (LA16_0==DEFAULT) ) {
- alt16=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 16, 0, this.input);
-
- throw nvae;
- }
- switch (alt16) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:37: (k= DECIMAL_FORMAT p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:37: (k= DECIMAL_FORMAT p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:38: k= DECIMAL_FORMAT p_EQName
- k=this.match(this.input,DECIMAL_FORMAT,XQueryParser.FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1952); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_DecimalFormatDecl1956);
- p_EQName34=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName34.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:82: (k= DEFAULT k= DECIMAL_FORMAT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:82: (k= DEFAULT k= DECIMAL_FORMAT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:83: k= DEFAULT k= DECIMAL_FORMAT
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DecimalFormatDecl1964); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,DECIMAL_FORMAT,XQueryParser.FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1970); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:142: ( p_DFPropertyName EQUAL p_StringLiteral )*
- loop17:
- do {
- var alt17=2;
- var LA17_0 = this.input.LA(1);
-
- if ( ((LA17_0>=DECIMAL_SEPARATOR && LA17_0<=DIGIT)||(LA17_0>=GROUPING_SEPARATOR && LA17_0<=MINUS_SIGN)||LA17_0==NAN||(LA17_0>=PATTERN_SEPARATOR && LA17_0<=PER_MILLE)||LA17_0==ZERO_DIGIT) ) {
- alt17=1;
- }
-
-
- switch (alt17) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:143: p_DFPropertyName EQUAL p_StringLiteral
- this.pushFollow(XQueryParser.FOLLOW_p_DFPropertyName_in_pm_DecimalFormatDecl1977);
- p_DFPropertyName35=this.p_DFPropertyName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DFPropertyName35.getTree());
- EQUAL36=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_DecimalFormatDecl1979); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- EQUAL36_tree = this.adaptor.create(EQUAL36);
- this.adaptor.addChild(root_0, EQUAL36_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DecimalFormatDecl1981);
- p_StringLiteral37=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral37.getTree());
-
-
- break;
-
- default :
- break loop17;
- }
- } while (true);
-
- SEMICOLON38=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DecimalFormatDecl1985); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON38_tree = this.adaptor.create(SEMICOLON38);
- this.adaptor.addChild(root_0, SEMICOLON38_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DFPropertyName_return: (function() {
- XQueryParser.p_DFPropertyName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DFPropertyName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:419:1: p_DFPropertyName : (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR ) ;
- // $ANTLR start "p_DFPropertyName"
- p_DFPropertyName: function() {
- var retval = new XQueryParser.p_DFPropertyName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:9: ( (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:11: (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:11: (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR )
- var alt18=10;
- switch ( this.input.LA(1) ) {
- case DECIMAL_SEPARATOR:
- alt18=1;
- break;
- case GROUPING_SEPARATOR:
- alt18=2;
- break;
- case INFINITY:
- alt18=3;
- break;
- case MINUS_SIGN:
- alt18=4;
- break;
- case NAN:
- alt18=5;
- break;
- case PERCENT:
- alt18=6;
- break;
- case PER_MILLE:
- alt18=7;
- break;
- case ZERO_DIGIT:
- alt18=8;
- break;
- case DIGIT:
- alt18=9;
- break;
- case PATTERN_SEPARATOR:
- alt18=10;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 18, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt18) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:12: k= DECIMAL_SEPARATOR
- k=this.match(this.input,DECIMAL_SEPARATOR,XQueryParser.FOLLOW_DECIMAL_SEPARATOR_in_p_DFPropertyName2014); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:34: k= GROUPING_SEPARATOR
- k=this.match(this.input,GROUPING_SEPARATOR,XQueryParser.FOLLOW_GROUPING_SEPARATOR_in_p_DFPropertyName2020); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:57: k= INFINITY
- k=this.match(this.input,INFINITY,XQueryParser.FOLLOW_INFINITY_in_p_DFPropertyName2026); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:70: k= MINUS_SIGN
- k=this.match(this.input,MINUS_SIGN,XQueryParser.FOLLOW_MINUS_SIGN_in_p_DFPropertyName2032); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:85: k= NAN
- k=this.match(this.input,NAN,XQueryParser.FOLLOW_NAN_in_p_DFPropertyName2038); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:93: k= PERCENT
- k=this.match(this.input,PERCENT,XQueryParser.FOLLOW_PERCENT_in_p_DFPropertyName2044); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:105: k= PER_MILLE
- k=this.match(this.input,PER_MILLE,XQueryParser.FOLLOW_PER_MILLE_in_p_DFPropertyName2050); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:119: k= ZERO_DIGIT
- k=this.match(this.input,ZERO_DIGIT,XQueryParser.FOLLOW_ZERO_DIGIT_in_p_DFPropertyName2056); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:134: k= DIGIT
- k=this.match(this.input,DIGIT,XQueryParser.FOLLOW_DIGIT_in_p_DFPropertyName2062); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:144: k= PATTERN_SEPARATOR
- k=this.match(this.input,PATTERN_SEPARATOR,XQueryParser.FOLLOW_PATTERN_SEPARATOR_in_p_DFPropertyName2068); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Import_return: (function() {
- XQueryParser.p_Import_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Import_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:424:1: p_Import : ( pm_SchemaImport | pm_ModuleImport );
- // $ANTLR start "p_Import"
- p_Import: function() {
- var retval = new XQueryParser.p_Import_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pm_SchemaImport39 = null;
- var pm_ModuleImport40 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:9: ( pm_SchemaImport | pm_ModuleImport )
- var alt19=2;
- var LA19_0 = this.input.LA(1);
-
- if ( (LA19_0==IMPORT) ) {
- var LA19_1 = this.input.LA(2);
-
- if ( (LA19_1==SCHEMA) ) {
- alt19=1;
- }
- else if ( (LA19_1==MODULE) ) {
- alt19=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 19, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 19, 0, this.input);
-
- throw nvae;
- }
- switch (alt19) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:11: pm_SchemaImport
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_SchemaImport_in_p_Import2097);
- pm_SchemaImport39=this.pm_SchemaImport();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_SchemaImport39.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:29: pm_ModuleImport
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_ModuleImport_in_p_Import2101);
- pm_ModuleImport40=this.pm_ModuleImport();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ModuleImport40.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_SchemaImport_return: (function() {
- XQueryParser.pm_SchemaImport_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_SchemaImport_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:429:1: pm_SchemaImport : k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) ) ;
- // $ANTLR start "pm_SchemaImport"
- pm_SchemaImport: function() {
- var retval = new XQueryParser.pm_SchemaImport_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var COMMA41 = null;
- var SEMICOLON42 = null;
- var list_ah=null;
- var sp = null;
- var us = null;
- var ah = null;
- var k_tree=null;
- var COMMA41_tree=null;
- var SEMICOLON42_tree=null;
- var stream_AT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AT");
- var stream_IMPORT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token IMPORT");
- var stream_SCHEMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SCHEMA");
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
- var stream_p_SchemaPrefix=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SchemaPrefix");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:9: (k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:11: k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON
- k=this.match(this.input,IMPORT,XQueryParser.FOLLOW_IMPORT_in_pm_SchemaImport2137); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_IMPORT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,SCHEMA,XQueryParser.FOLLOW_SCHEMA_in_pm_SchemaImport2143); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SCHEMA.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:61: (sp= p_SchemaPrefix )?
- var alt20=2;
- var LA20_0 = this.input.LA(1);
-
- if ( (LA20_0==DEFAULT||LA20_0==NAMESPACE) ) {
- alt20=1;
- }
- switch (alt20) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:61: sp= p_SchemaPrefix
- this.pushFollow(XQueryParser.FOLLOW_p_SchemaPrefix_in_pm_SchemaImport2149);
- sp=this.p_SchemaPrefix();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_SchemaPrefix.add(sp.getTree());
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2154);
- us=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:97: (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )?
- var alt22=2;
- var LA22_0 = this.input.LA(1);
-
- if ( (LA22_0==AT) ) {
- alt22=1;
- }
- switch (alt22) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:98: k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )*
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_pm_SchemaImport2159); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_AT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2165);
- ah=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
- if (org.antlr.lang.isNull(list_ah)) list_ah = [];
- list_ah.push(ah.getTree());
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:138: ( COMMA ah+= p_StringLiteral )*
- loop21:
- do {
- var alt21=2;
- var LA21_0 = this.input.LA(1);
-
- if ( (LA21_0==COMMA) ) {
- alt21=1;
- }
-
-
- switch (alt21) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:139: COMMA ah+= p_StringLiteral
- COMMA41=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_SchemaImport2168); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA41);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2172);
- ah=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
- if (org.antlr.lang.isNull(list_ah)) list_ah = [];
- list_ah.push(ah.getTree());
-
-
-
- break;
-
- default :
- break loop21;
- }
- } while (true);
-
-
-
- break;
-
- }
-
- SEMICOLON42=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_SchemaImport2178); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON42);
-
-
-
- // AST REWRITE
- // elements: us, ah, sp
- // token labels:
- // rule labels: retval, sp, us
- // token list labels:
- // rule list labels: ah
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_sp=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token sp",sp!=null?sp.tree:null);
- var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);
- var stream_ah=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ah",list_ah);
- root_0 = this.adaptor.nil();
- // 431:17: -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:20: ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(SchemaImport, "SchemaImport"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:35: ^( SchemaPrefix ( $sp)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(SchemaPrefix, "SchemaPrefix"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:50: ( $sp)?
- if ( stream_sp.hasNext() ) {
- this.adaptor.addChild(root_2, stream_sp.nextTree());
-
- }
- stream_sp.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- this.adaptor.addChild(root_1, stream_us.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:60: ^( AtHints ( $ah)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(AtHints, "AtHints"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:70: ( $ah)*
- while ( stream_ah.hasNext() ) {
- this.adaptor.addChild(root_2, stream_ah.nextTree());
-
- }
- stream_ah.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SchemaPrefix_return: (function() {
- XQueryParser.p_SchemaPrefix_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SchemaPrefix_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:435:1: p_SchemaPrefix : (k= NAMESPACE nn= p_NCName EQUAL -> ^( NamespaceName $nn) | k= DEFAULT k= ELEMENT k= NAMESPACE -> DefaultElementNamespace );
- // $ANTLR start "p_SchemaPrefix"
- p_SchemaPrefix: function() {
- var retval = new XQueryParser.p_SchemaPrefix_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var EQUAL43 = null;
- var nn = null;
-
- var k_tree=null;
- var EQUAL43_tree=null;
- var stream_ELEMENT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ELEMENT");
- var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
- var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
- var stream_DEFAULT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DEFAULT");
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:436:9: (k= NAMESPACE nn= p_NCName EQUAL -> ^( NamespaceName $nn) | k= DEFAULT k= ELEMENT k= NAMESPACE -> DefaultElementNamespace )
- var alt23=2;
- var LA23_0 = this.input.LA(1);
-
- if ( (LA23_0==NAMESPACE) ) {
- alt23=1;
- }
- else if ( (LA23_0==DEFAULT) ) {
- alt23=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 23, 0, this.input);
-
- throw nvae;
- }
- switch (alt23) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:436:11: k= NAMESPACE nn= p_NCName EQUAL
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_SchemaPrefix2248); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_SchemaPrefix2254);
- nn=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
- EQUAL43=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_SchemaPrefix2256); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL43);
-
-
-
- // AST REWRITE
- // elements: nn
- // token labels:
- // rule labels: retval, nn
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
-
- root_0 = this.adaptor.nil();
- // 437:17: -> ^( NamespaceName $nn)
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:437:20: ^( NamespaceName $nn)
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceName, "NamespaceName"), root_1);
-
- this.adaptor.addChild(root_1, stream_nn.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:438:11: k= DEFAULT k= ELEMENT k= NAMESPACE
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SchemaPrefix2295); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_DEFAULT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_p_SchemaPrefix2301); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ELEMENT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_SchemaPrefix2307); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- // AST REWRITE
- // elements:
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 439:17: -> DefaultElementNamespace
- {
- this.adaptor.addChild(root_0, this.adaptor.create(DefaultElementNamespace, "DefaultElementNamespace"));
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_ModuleImport_return: (function() {
- XQueryParser.pm_ModuleImport_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_ModuleImport_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:443:1: pm_ModuleImport : k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) ) ;
- // $ANTLR start "pm_ModuleImport"
- pm_ModuleImport: function() {
- var retval = new XQueryParser.pm_ModuleImport_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var EQUAL44 = null;
- var COMMA45 = null;
- var SEMICOLON46 = null;
- var list_ah=null;
- var nn = null;
- var us = null;
- var ah = null;
- var k_tree=null;
- var EQUAL44_tree=null;
- var COMMA45_tree=null;
- var SEMICOLON46_tree=null;
- var stream_AT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AT");
- var stream_IMPORT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token IMPORT");
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_MODULE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MODULE");
- var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
- var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
- var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:9: (k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:11: k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON
- k=this.match(this.input,IMPORT,XQueryParser.FOLLOW_IMPORT_in_pm_ModuleImport2357); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_IMPORT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,MODULE,XQueryParser.FOLLOW_MODULE_in_pm_ModuleImport2363); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_MODULE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:59: (k= NAMESPACE nn= p_NCName EQUAL )?
- var alt24=2;
- var LA24_0 = this.input.LA(1);
-
- if ( (LA24_0==NAMESPACE) ) {
- alt24=1;
- }
- switch (alt24) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:60: k= NAMESPACE nn= p_NCName EQUAL
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_ModuleImport2370); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_ModuleImport2376);
- nn=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
- EQUAL44=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_ModuleImport2378); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL44);
-
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2384);
- us=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:126: (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )?
- var alt26=2;
- var LA26_0 = this.input.LA(1);
-
- if ( (LA26_0==AT) ) {
- alt26=1;
- }
- switch (alt26) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:127: k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )*
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_pm_ModuleImport2389); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_AT.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2395);
- ah=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
- if (org.antlr.lang.isNull(list_ah)) list_ah = [];
- list_ah.push(ah.getTree());
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:167: ( COMMA ah+= p_StringLiteral )*
- loop25:
- do {
- var alt25=2;
- var LA25_0 = this.input.LA(1);
-
- if ( (LA25_0==COMMA) ) {
- alt25=1;
- }
-
-
- switch (alt25) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:168: COMMA ah+= p_StringLiteral
- COMMA45=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_ModuleImport2398); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA45);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2402);
- ah=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
- if (org.antlr.lang.isNull(list_ah)) list_ah = [];
- list_ah.push(ah.getTree());
-
-
-
- break;
-
- default :
- break loop25;
- }
- } while (true);
-
-
-
- break;
-
- }
-
- SEMICOLON46=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ModuleImport2408); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON46);
-
-
-
- // AST REWRITE
- // elements: nn, us, ah
- // token labels:
- // rule labels: retval, nn, us
- // token list labels:
- // rule list labels: ah
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
- var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);
- var stream_ah=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ah",list_ah);
- root_0 = this.adaptor.nil();
- // 445:17: -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:20: ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(ModuleImport, "ModuleImport"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:35: ^( NamespaceName ( $nn)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceName, "NamespaceName"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:51: ( $nn)?
- if ( stream_nn.hasNext() ) {
- this.adaptor.addChild(root_2, stream_nn.nextTree());
-
- }
- stream_nn.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- this.adaptor.addChild(root_1, stream_us.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:61: ^( AtHints ( $ah)* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(AtHints, "AtHints"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:71: ( $ah)*
- while ( stream_ah.hasNext() ) {
- this.adaptor.addChild(root_2, stream_ah.nextTree());
-
- }
- stream_ah.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_NamespaceDecl_return: (function() {
- XQueryParser.pm_NamespaceDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_NamespaceDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:449:1: pm_NamespaceDecl : k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON -> ^( NamespaceDecl $nn $us) ;
- // $ANTLR start "pm_NamespaceDecl"
- pm_NamespaceDecl: function() {
- var retval = new XQueryParser.pm_NamespaceDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var EQUAL47 = null;
- var SEMICOLON48 = null;
- var nn = null;
- var us = null;
-
- var k_tree=null;
- var EQUAL47_tree=null;
- var SEMICOLON48_tree=null;
- var stream_DECLARE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DECLARE");
- var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
- var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
- var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:450:9: (k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON -> ^( NamespaceDecl $nn $us) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:450:11: k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_NamespaceDecl2477); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_DECLARE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_NamespaceDecl2483); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_NamespaceDecl2489);
- nn=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
- EQUAL47=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_NamespaceDecl2491); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL47);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_NamespaceDecl2495);
- us=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
- SEMICOLON48=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_NamespaceDecl2497); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON48);
-
-
-
- // AST REWRITE
- // elements: nn, us
- // token labels:
- // rule labels: retval, nn, us
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
- var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);
-
- root_0 = this.adaptor.nil();
- // 451:17: -> ^( NamespaceDecl $nn $us)
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:451:20: ^( NamespaceDecl $nn $us)
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceDecl, "NamespaceDecl"), root_1);
-
- this.adaptor.addChild(root_1, stream_nn.nextTree());
- this.adaptor.addChild(root_1, stream_us.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_DefaultNamespaceDecl_return: (function() {
- XQueryParser.pm_DefaultNamespaceDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_DefaultNamespaceDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:455:1: pm_DefaultNamespaceDecl : k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON ;
- // $ANTLR start "pm_DefaultNamespaceDecl"
- pm_DefaultNamespaceDecl: function() {
- var retval = new XQueryParser.pm_DefaultNamespaceDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON50 = null;
- var p_StringLiteral49 = null;
-
- var k_tree=null;
- var SEMICOLON50_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:9: (k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:11: k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DefaultNamespaceDecl2554); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DefaultNamespaceDecl2560); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:61: (k= ELEMENT | k= FUNCTION )
- var alt27=2;
- var LA27_0 = this.input.LA(1);
-
- if ( (LA27_0==ELEMENT) ) {
- alt27=1;
- }
- else if ( (LA27_0==FUNCTION) ) {
- alt27=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 27, 0, this.input);
-
- throw nvae;
- }
- switch (alt27) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:62: k= ELEMENT
- k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_pm_DefaultNamespaceDecl2567); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:74: k= FUNCTION
- k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_pm_DefaultNamespaceDecl2573); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_DefaultNamespaceDecl2580); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DefaultNamespaceDecl2584);
- p_StringLiteral49=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral49.getTree());
- SEMICOLON50=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DefaultNamespaceDecl2586); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON50_tree = this.adaptor.create(SEMICOLON50);
- this.adaptor.addChild(root_0, SEMICOLON50_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_AnnotatedDecl_return: (function() {
- XQueryParser.pm_AnnotatedDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_AnnotatedDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:460:1: pm_AnnotatedDecl : k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON ;
- // $ANTLR start "pm_AnnotatedDecl"
- pm_AnnotatedDecl: function() {
- var retval = new XQueryParser.pm_AnnotatedDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON53 = null;
- var p_Annotation51 = null;
- var pg_AnnotatedDecl52 = null;
-
- var k_tree=null;
- var SEMICOLON53_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:9: (k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:11: k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_AnnotatedDecl2614); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:36: ( p_Annotation )*
- loop28:
- do {
- var alt28=2;
- var LA28_0 = this.input.LA(1);
-
- if ( (LA28_0==ANN_PERCENT) ) {
- alt28=1;
- }
-
-
- switch (alt28) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:36: p_Annotation
- this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_pm_AnnotatedDecl2618);
- p_Annotation51=this.p_Annotation();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation51.getTree());
-
-
- break;
-
- default :
- break loop28;
- }
- } while (true);
-
- this.pushFollow(XQueryParser.FOLLOW_pg_AnnotatedDecl_in_pm_AnnotatedDecl2621);
- pg_AnnotatedDecl52=this.pg_AnnotatedDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_AnnotatedDecl52.getTree());
- SEMICOLON53=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_AnnotatedDecl2623); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON53_tree = this.adaptor.create(SEMICOLON53);
- this.adaptor.addChild(root_0, SEMICOLON53_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_AnnotatedDecl_return: (function() {
- XQueryParser.pg_AnnotatedDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_AnnotatedDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:463:1: pg_AnnotatedDecl : ( p_VarDecl | pm_FunctionDecl | {...}? => p_CollectionDecl | {...}? => p_IndexDecl | {...}? => p_ICDecl );
- // $ANTLR start "pg_AnnotatedDecl"
- pg_AnnotatedDecl: function() {
- var retval = new XQueryParser.pg_AnnotatedDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_VarDecl54 = null;
- var pm_FunctionDecl55 = null;
- var p_CollectionDecl56 = null;
- var p_IndexDecl57 = null;
- var p_ICDecl58 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:464:9: ( p_VarDecl | pm_FunctionDecl | {...}? => p_CollectionDecl | {...}? => p_IndexDecl | {...}? => p_ICDecl )
- var alt29=5;
- var LA29_0 = this.input.LA(1);
-
- if ( (LA29_0==VARIABLE) ) {
- alt29=1;
- }
- else if ( (LA29_0==UPDATING) && ((this.lc(XQU)))) {
- alt29=2;
- }
- else if ( (LA29_0==FUNCTION) ) {
- alt29=2;
- }
- else if ( (LA29_0==COLLECTION) && ((this.lc(ZORBA)))) {
- alt29=3;
- }
- else if ( (LA29_0==INDEX) && ((this.lc(ZORBA)))) {
- alt29=4;
- }
- else if ( (LA29_0==INTEGRITY) && ((this.lc(ZORBA)))) {
- alt29=5;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 29, 0, this.input);
-
- throw nvae;
- }
- switch (alt29) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:464:11: p_VarDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_VarDecl_in_pg_AnnotatedDecl2647);
- p_VarDecl54=this.p_VarDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDecl54.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:465:11: pm_FunctionDecl
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_FunctionDecl_in_pg_AnnotatedDecl2659);
- pm_FunctionDecl55=this.pm_FunctionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_FunctionDecl55.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:466:11: {...}? => p_CollectionDecl
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(ZORBA))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
- }
- this.pushFollow(XQueryParser.FOLLOW_p_CollectionDecl_in_pg_AnnotatedDecl2674);
- p_CollectionDecl56=this.p_CollectionDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CollectionDecl56.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:467:11: {...}? => p_IndexDecl
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(ZORBA))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
- }
- this.pushFollow(XQueryParser.FOLLOW_p_IndexDecl_in_pg_AnnotatedDecl2689);
- p_IndexDecl57=this.p_IndexDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexDecl57.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:468:11: {...}? => p_ICDecl
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(ZORBA))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ICDecl_in_pg_AnnotatedDecl2704);
- p_ICDecl58=this.p_ICDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICDecl58.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Annotation_return: (function() {
- XQueryParser.p_Annotation_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Annotation_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:472:1: p_Annotation : ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )? ;
- // $ANTLR start "p_Annotation"
- p_Annotation: function() {
- var retval = new XQueryParser.p_Annotation_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ANN_PERCENT59 = null;
- var LPAREN61 = null;
- var COMMA63 = null;
- var RPAREN65 = null;
- var p_EQName60 = null;
- var p_Literal62 = null;
- var p_Literal64 = null;
-
- var ANN_PERCENT59_tree=null;
- var LPAREN61_tree=null;
- var COMMA63_tree=null;
- var RPAREN65_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:9: ( ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:11: ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )?
- root_0 = this.adaptor.nil();
-
- ANN_PERCENT59=this.match(this.input,ANN_PERCENT,XQueryParser.FOLLOW_ANN_PERCENT_in_p_Annotation2730); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ANN_PERCENT59_tree = this.adaptor.create(ANN_PERCENT59);
- this.adaptor.addChild(root_0, ANN_PERCENT59_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_Annotation2732);
- p_EQName60=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName60.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:32: ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )?
- var alt31=2;
- var LA31_0 = this.input.LA(1);
-
- if ( (LA31_0==LPAREN) ) {
- alt31=1;
- }
- switch (alt31) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:33: LPAREN p_Literal ( COMMA p_Literal )* RPAREN
- LPAREN61=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_Annotation2735); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN61_tree = this.adaptor.create(LPAREN61);
- this.adaptor.addChild(root_0, LPAREN61_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_Annotation2737);
- p_Literal62=this.p_Literal();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal62.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:50: ( COMMA p_Literal )*
- loop30:
- do {
- var alt30=2;
- var LA30_0 = this.input.LA(1);
-
- if ( (LA30_0==COMMA) ) {
- alt30=1;
- }
-
-
- switch (alt30) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:51: COMMA p_Literal
- COMMA63=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_Annotation2740); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA63_tree = this.adaptor.create(COMMA63);
- this.adaptor.addChild(root_0, COMMA63_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_Annotation2742);
- p_Literal64=this.p_Literal();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal64.getTree());
-
-
- break;
-
- default :
- break loop30;
- }
- } while (true);
-
- RPAREN65=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_Annotation2746); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN65_tree = this.adaptor.create(RPAREN65);
- this.adaptor.addChild(root_0, RPAREN65_tree);
- }
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarDecl_return: (function() {
- XQueryParser.p_VarDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:477:1: p_VarDecl : k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) ) -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) ) ;
- // $ANTLR start "p_VarDecl"
- p_VarDecl: function() {
- var retval = new XQueryParser.p_VarDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var BIND66 = null;
- var BIND67 = null;
- var qn = null;
- var td = null;
- var vv = null;
- var vdv = null;
-
- var k_tree=null;
- var d_tree=null;
- var BIND66_tree=null;
- var BIND67_tree=null;
- var stream_DOLLAR=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DOLLAR");
- var stream_EXTERNAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EXTERNAL");
- var stream_VARIABLE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token VARIABLE");
- var stream_BIND=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token BIND");
- var stream_p_TypeDeclaration=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_TypeDeclaration");
- var stream_p_VarDefaultValue=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VarDefaultValue");
- var stream_p_VarValue=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VarValue");
- var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:9: (k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) ) -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:11: k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) )
- k=this.match(this.input,VARIABLE,XQueryParser.FOLLOW_VARIABLE_in_p_VarDecl2776); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_VARIABLE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDecl2782); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_DOLLAR.add(d);
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_VarDecl2786);
- qn=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_EQName.add(qn.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (qn?qn.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:87: (td= p_TypeDeclaration )?
- var alt32=2;
- var LA32_0 = this.input.LA(1);
-
- if ( (LA32_0==AS) ) {
- alt32=1;
- }
- switch (alt32) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:87: td= p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDecl2792);
- td=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_TypeDeclaration.add(td.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:107: ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) )
- var alt34=2;
- var LA34_0 = this.input.LA(1);
-
- if ( (LA34_0==BIND) ) {
- alt34=1;
- }
- else if ( (LA34_0==EXTERNAL) ) {
- alt34=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 34, 0, this.input);
-
- throw nvae;
- }
- switch (alt34) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:108: ( BIND vv= p_VarValue )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:108: ( BIND vv= p_VarValue )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:109: BIND vv= p_VarValue
- BIND66=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDecl2797); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_BIND.add(BIND66);
-
- this.pushFollow(XQueryParser.FOLLOW_p_VarValue_in_p_VarDecl2801);
- vv=this.p_VarValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_VarValue.add(vv.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:131: (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:131: (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:132: k= EXTERNAL ( BIND vdv= p_VarDefaultValue )?
- k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_p_VarDecl2809); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EXTERNAL.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:158: ( BIND vdv= p_VarDefaultValue )?
- var alt33=2;
- var LA33_0 = this.input.LA(1);
-
- if ( (LA33_0==BIND) ) {
- alt33=1;
- }
- switch (alt33) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:159: BIND vdv= p_VarDefaultValue
- BIND67=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDecl2814); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_BIND.add(BIND67);
-
- this.pushFollow(XQueryParser.FOLLOW_p_VarDefaultValue_in_p_VarDecl2818);
- vdv=this.p_VarDefaultValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_VarDefaultValue.add(vdv.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
-
- }
-
-
-
- // AST REWRITE
- // elements: vv, qn, td, vdv
- // token labels:
- // rule labels: qn, vv, retval, vdv, td
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
- var stream_vv=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token vv",vv!=null?vv.tree:null);
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_vdv=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token vdv",vdv!=null?vdv.tree:null);
- var stream_td=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token td",td!=null?td.tree:null);
-
- root_0 = this.adaptor.nil();
- // 479:17: -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:20: ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(VarDecl, "VarDecl"), root_1);
-
- this.adaptor.addChild(root_1, stream_qn.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:34: ^( VarType ( $td)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(VarType, "VarType"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:44: ( $td)?
- if ( stream_td.hasNext() ) {
- this.adaptor.addChild(root_2, stream_td.nextTree());
-
- }
- stream_td.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:50: ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(VarValue, "VarValue"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:61: ( $vv)?
- if ( stream_vv.hasNext() ) {
- this.adaptor.addChild(root_2, stream_vv.nextTree());
-
- }
- stream_vv.reset();
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:66: ^( VarDefaultValue ( $vdv)? )
- {
- var root_3 = this.adaptor.nil();
- root_3 = this.adaptor.becomeRoot(this.adaptor.create(VarDefaultValue, "VarDefaultValue"), root_3);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:84: ( $vdv)?
- if ( stream_vdv.hasNext() ) {
- this.adaptor.addChild(root_3, stream_vdv.nextTree());
-
- }
- stream_vdv.reset();
-
- this.adaptor.addChild(root_2, root_3);
- }
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarValue_return: (function() {
- XQueryParser.p_VarValue_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarValue_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:483:1: p_VarValue : p_ExprSingle[true] ;
- // $ANTLR start "p_VarValue"
- p_VarValue: function() {
- var retval = new XQueryParser.p_VarValue_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle68 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:484:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:484:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarValue2897);
- p_ExprSingle68=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle68.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarDefaultValue_return: (function() {
- XQueryParser.p_VarDefaultValue_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarDefaultValue_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:488:1: p_VarDefaultValue : p_ExprSingle[true] ;
- // $ANTLR start "p_VarDefaultValue"
- p_VarDefaultValue: function() {
- var retval = new XQueryParser.p_VarDefaultValue_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle69 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:489:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:489:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDefaultValue2924);
- p_ExprSingle69=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle69.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_ContextItemDecl_return: (function() {
- XQueryParser.pm_ContextItemDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_ContextItemDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:493:1: pm_ContextItemDecl : k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON ;
- // $ANTLR start "pm_ContextItemDecl"
- pm_ContextItemDecl: function() {
- var retval = new XQueryParser.pm_ContextItemDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var BIND71 = null;
- var BIND73 = null;
- var SEMICOLON75 = null;
- var p_ItemType70 = null;
- var p_VarValue72 = null;
- var p_VarDefaultValue74 = null;
-
- var k_tree=null;
- var BIND71_tree=null;
- var BIND73_tree=null;
- var SEMICOLON75_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:9: (k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:11: k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_ContextItemDecl2953); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,CONTEXT,XQueryParser.FOLLOW_CONTEXT_in_pm_ContextItemDecl2959); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,ITEM,XQueryParser.FOLLOW_ITEM_in_pm_ContextItemDecl2965); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:83: (k= AS p_ItemType )?
- var alt35=2;
- var LA35_0 = this.input.LA(1);
-
- if ( (LA35_0==AS) ) {
- alt35=1;
- }
- switch (alt35) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:84: k= AS p_ItemType
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_pm_ContextItemDecl2972); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_pm_ContextItemDecl2976);
- p_ItemType70=this.p_ItemType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ItemType70.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:117: ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) )
- var alt37=2;
- var LA37_0 = this.input.LA(1);
-
- if ( (LA37_0==BIND) ) {
- alt37=1;
- }
- else if ( (LA37_0==EXTERNAL) ) {
- alt37=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 37, 0, this.input);
-
- throw nvae;
- }
- switch (alt37) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:118: ( BIND p_VarValue )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:118: ( BIND p_VarValue )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:119: BIND p_VarValue
- BIND71=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_pm_ContextItemDecl2982); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND71_tree = this.adaptor.create(BIND71);
- this.adaptor.addChild(root_0, BIND71_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarValue_in_pm_ContextItemDecl2984);
- p_VarValue72=this.p_VarValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarValue72.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:138: (k= EXTERNAL ( BIND p_VarDefaultValue )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:138: (k= EXTERNAL ( BIND p_VarDefaultValue )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:139: k= EXTERNAL ( BIND p_VarDefaultValue )?
- k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_pm_ContextItemDecl2992); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:165: ( BIND p_VarDefaultValue )?
- var alt36=2;
- var LA36_0 = this.input.LA(1);
-
- if ( (LA36_0==BIND) ) {
- alt36=1;
- }
- switch (alt36) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:166: BIND p_VarDefaultValue
- BIND73=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_pm_ContextItemDecl2997); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND73_tree = this.adaptor.create(BIND73);
- this.adaptor.addChild(root_0, BIND73_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarDefaultValue_in_pm_ContextItemDecl2999);
- p_VarDefaultValue74=this.p_VarDefaultValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDefaultValue74.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
-
- }
-
- SEMICOLON75=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ContextItemDecl3005); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON75_tree = this.adaptor.create(SEMICOLON75);
- this.adaptor.addChild(root_0, SEMICOLON75_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_FunctionDecl_return: (function() {
- XQueryParser.pm_FunctionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_FunctionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:499:1: pm_FunctionDecl : ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL ) -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? ) ;
- // $ANTLR start "pm_FunctionDecl"
- pm_FunctionDecl: function() {
- var retval = new XQueryParser.pm_FunctionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN76 = null;
- var RPAREN77 = null;
- var LBRACKET78 = null;
- var RBRACKET79 = null;
- var qn = null;
- var pl = null;
- var st = null;
- var soe = null;
-
- var k_tree=null;
- var LPAREN76_tree=null;
- var RPAREN77_tree=null;
- var LBRACKET78_tree=null;
- var RBRACKET79_tree=null;
- var stream_FUNCTION=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token FUNCTION");
- var stream_LBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LBRACKET");
- var stream_AS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AS");
- var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
- var stream_EXTERNAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EXTERNAL");
- var stream_RBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RBRACKET");
- var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
- var stream_UPDATING=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token UPDATING");
- var stream_p_StatementsAndOptionalExpr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StatementsAndOptionalExpr");
- var stream_p_ParamList=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ParamList");
- var stream_pg_FQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_FQName");
- var stream_p_SequenceType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SequenceType");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:9: ( ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL ) -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:11: ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:11: ({...}? =>k= UPDATING )?
- var alt38=2;
- var LA38_0 = this.input.LA(1);
-
- if ( (LA38_0==UPDATING) && ((this.lc(XQU)))) {
- alt38=1;
- }
- switch (alt38) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:12: {...}? =>k= UPDATING
- if ( !((this.lc(XQU))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "pm_FunctionDecl", "this.lc(XQU)");
- }
- k=this.match(this.input,UPDATING,XQueryParser.FOLLOW_UPDATING_in_pm_FunctionDecl3038); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_UPDATING.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
-
- }
-
- k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_pm_FunctionDecl3046); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_FUNCTION.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_pg_FQName_in_pm_FunctionDecl3052);
- qn=this.pg_FQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pg_FQName.add(qn.getTree());
- LPAREN76=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_pm_FunctionDecl3054); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_LPAREN.add(LPAREN76);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:106: (pl= p_ParamList )?
- var alt39=2;
- var LA39_0 = this.input.LA(1);
-
- if ( (LA39_0==DOLLAR) ) {
- alt39=1;
- }
- switch (alt39) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:106: pl= p_ParamList
- this.pushFollow(XQueryParser.FOLLOW_p_ParamList_in_pm_FunctionDecl3058);
- pl=this.p_ParamList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_ParamList.add(pl.getTree());
-
-
- break;
-
- }
-
- RPAREN77=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_pm_FunctionDecl3061); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_RPAREN.add(RPAREN77);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:127: (k= AS st= p_SequenceType )?
- var alt40=2;
- var LA40_0 = this.input.LA(1);
-
- if ( (LA40_0==AS) ) {
- alt40=1;
- }
- switch (alt40) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:128: k= AS st= p_SequenceType
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_pm_FunctionDecl3066); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_AS.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_pm_FunctionDecl3072);
- st=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_SequenceType.add(st.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:168: ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL )
- var alt41=2;
- var LA41_0 = this.input.LA(1);
-
- if ( (LA41_0==LBRACKET) ) {
- alt41=1;
- }
- else if ( (LA41_0==EXTERNAL) ) {
- alt41=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 41, 0, this.input);
-
- throw nvae;
- }
- switch (alt41) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:169: LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET
- LBRACKET78=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_FunctionDecl3077); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_LBRACKET.add(LBRACKET78);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_FunctionDecl3081);
- soe=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_StatementsAndOptionalExpr.add(soe.getTree());
- RBRACKET79=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_FunctionDecl3083); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_RBRACKET.add(RBRACKET79);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:221: k= EXTERNAL
- k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_pm_FunctionDecl3089); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EXTERNAL.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
-
- }
-
-
-
- // AST REWRITE
- // elements: soe, pl, st, qn
- // token labels:
- // rule labels: qn, soe, retval, pl, st
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
- var stream_soe=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token soe",soe!=null?soe.tree:null);
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_pl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token pl",pl!=null?pl.tree:null);
- var stream_st=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token st",st!=null?st.tree:null);
-
- root_0 = this.adaptor.nil();
- // 501:17: -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:20: ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(FunctionDecl, "FunctionDecl"), root_1);
-
- this.adaptor.addChild(root_1, stream_qn.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:39: ^( ParamList ( $pl)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(ParamList, "ParamList"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:51: ( $pl)?
- if ( stream_pl.hasNext() ) {
- this.adaptor.addChild(root_2, stream_pl.nextTree());
-
- }
- stream_pl.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:57: ^( ReturnType ( $st)? )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(ReturnType, "ReturnType"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:70: ( $st)?
- if ( stream_st.hasNext() ) {
- this.adaptor.addChild(root_2, stream_st.nextTree());
-
- }
- stream_st.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:76: ( $soe)?
- if ( stream_soe.hasNext() ) {
- this.adaptor.addChild(root_1, stream_soe.nextTree());
-
- }
- stream_soe.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ParamList_return: (function() {
- XQueryParser.p_ParamList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ParamList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:505:1: p_ParamList : p+= p_Param ( COMMA p+= p_Param )* -> ( $p)+ ;
- // $ANTLR start "p_ParamList"
- p_ParamList: function() {
- var retval = new XQueryParser.p_ParamList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COMMA80 = null;
- var list_p=null;
- var p = null;
- var COMMA80_tree=null;
- var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
- var stream_p_Param=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Param");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:9: (p+= p_Param ( COMMA p+= p_Param )* -> ( $p)+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:11: p+= p_Param ( COMMA p+= p_Param )*
- this.pushFollow(XQueryParser.FOLLOW_p_Param_in_p_ParamList3166);
- p=this.p_Param();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_Param.add(p.getTree());
- if (org.antlr.lang.isNull(list_p)) list_p = [];
- list_p.push(p.getTree());
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:22: ( COMMA p+= p_Param )*
- loop42:
- do {
- var alt42=2;
- var LA42_0 = this.input.LA(1);
-
- if ( (LA42_0==COMMA) ) {
- alt42=1;
- }
-
-
- switch (alt42) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:23: COMMA p+= p_Param
- COMMA80=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ParamList3169); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA80);
-
- this.pushFollow(XQueryParser.FOLLOW_p_Param_in_p_ParamList3173);
- p=this.p_Param();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_Param.add(p.getTree());
- if (org.antlr.lang.isNull(list_p)) list_p = [];
- list_p.push(p.getTree());
-
-
-
- break;
-
- default :
- break loop42;
- }
- } while (true);
-
-
-
- // AST REWRITE
- // elements: p
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels: p
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_p=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token p",list_p);
- root_0 = this.adaptor.nil();
- // 507:17: -> ( $p)+
- {
- if ( !(stream_p.hasNext()) ) {
- throw new org.antlr.runtime.tree.RewriteEarlyExitException();
- }
- while ( stream_p.hasNext() ) {
- this.adaptor.addChild(root_0, stream_p.nextTree());
-
- }
- stream_p.reset();
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Param_return: (function() {
- XQueryParser.p_Param_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Param_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:511:1: p_Param : d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? -> ^( Param $qn ( $td)? ) ;
- // $ANTLR start "p_Param"
- p_Param: function() {
- var retval = new XQueryParser.p_Param_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var qn = null;
- var td = null;
-
- var d_tree=null;
- var stream_DOLLAR=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DOLLAR");
- var stream_p_TypeDeclaration=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_TypeDeclaration");
- var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:9: (d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? -> ^( Param $qn ( $td)? ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:11: d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )?
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_Param3233); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_DOLLAR.add(d);
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_Param3237);
- qn=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_EQName.add(qn.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (qn?qn.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:61: (td= p_TypeDeclaration )?
- var alt43=2;
- var LA43_0 = this.input.LA(1);
-
- if ( (LA43_0==AS) ) {
- alt43=1;
- }
- switch (alt43) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:61: td= p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_Param3243);
- td=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_TypeDeclaration.add(td.getTree());
-
-
- break;
-
- }
-
-
-
- // AST REWRITE
- // elements: qn, td
- // token labels:
- // rule labels: qn, retval, td
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_td=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token td",td!=null?td.tree:null);
-
- root_0 = this.adaptor.nil();
- // 513:17: -> ^( Param $qn ( $td)? )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:513:20: ^( Param $qn ( $td)? )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(Param, "Param"), root_1);
-
- this.adaptor.addChild(root_1, stream_qn.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:513:32: ( $td)?
- if ( stream_td.hasNext() ) {
- this.adaptor.addChild(root_1, stream_td.nextTree());
-
- }
- stream_td.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_FunctionBody_return: (function() {
- XQueryParser.pm_FunctionBody_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_FunctionBody_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:517:1: pm_FunctionBody : p_EnclosedExpr ;
- // $ANTLR start "pm_FunctionBody"
- pm_FunctionBody: function() {
- var retval = new XQueryParser.pm_FunctionBody_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EnclosedExpr81 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:518:9: ( p_EnclosedExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:518:11: p_EnclosedExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EnclosedExpr_in_pm_FunctionBody3299);
- p_EnclosedExpr81=this.p_EnclosedExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EnclosedExpr81.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_EnclosedExpr_return: (function() {
- XQueryParser.p_EnclosedExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_EnclosedExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:523:1: p_EnclosedExpr : LBRACKET p_Expr[true,true] RBRACKET -> ^( EnclosedExpr p_Expr ) ;
- // $ANTLR start "p_EnclosedExpr"
- p_EnclosedExpr: function() {
- var retval = new XQueryParser.p_EnclosedExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET82 = null;
- var RBRACKET84 = null;
- var p_Expr83 = null;
-
- var LBRACKET82_tree=null;
- var RBRACKET84_tree=null;
- var stream_LBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LBRACKET");
- var stream_RBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RBRACKET");
- var stream_p_Expr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Expr");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:524:9: ( LBRACKET p_Expr[true,true] RBRACKET -> ^( EnclosedExpr p_Expr ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:524:11: LBRACKET p_Expr[true,true] RBRACKET
- LBRACKET82=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_EnclosedExpr3326); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_LBRACKET.add(LBRACKET82);
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_EnclosedExpr3328);
- p_Expr83=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_Expr.add(p_Expr83.getTree());
- RBRACKET84=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_EnclosedExpr3331); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_RBRACKET.add(RBRACKET84);
-
-
-
- // AST REWRITE
- // elements: p_Expr
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 525:17: -> ^( EnclosedExpr p_Expr )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:525:20: ^( EnclosedExpr p_Expr )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(EnclosedExpr, "EnclosedExpr"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_Expr.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_OptionDecl_return: (function() {
- XQueryParser.pm_OptionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_OptionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:529:1: pm_OptionDecl : k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON ;
- // $ANTLR start "pm_OptionDecl"
- pm_OptionDecl: function() {
- var retval = new XQueryParser.pm_OptionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON87 = null;
- var p_EQName85 = null;
- var p_StringLiteral86 = null;
-
- var k_tree=null;
- var SEMICOLON87_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:530:9: (k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:530:11: k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_OptionDecl3383); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,OPTION,XQueryParser.FOLLOW_OPTION_in_pm_OptionDecl3389); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_OptionDecl3393);
- p_EQName85=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName85.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_OptionDecl3395);
- p_StringLiteral86=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral86.getTree());
- SEMICOLON87=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_OptionDecl3397); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON87_tree = this.adaptor.create(SEMICOLON87);
- this.adaptor.addChild(root_0, SEMICOLON87_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_QueryBody_return: (function() {
- XQueryParser.pm_QueryBody_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_QueryBody_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:534:1: pm_QueryBody : ({...}? => p_Program | p_Expr[true,true] );
- // $ANTLR start "pm_QueryBody"
- pm_QueryBody: function() {
- var retval = new XQueryParser.pm_QueryBody_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Program88 = null;
- var p_Expr89 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:535:9: ({...}? => p_Program | p_Expr[true,true] )
- var alt44=2;
- alt44 = this.dfa44.predict(this.input);
- switch (alt44) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:535:11: {...}? => p_Program
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(XQS))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "pm_QueryBody", "this.lc(XQS)");
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Program_in_pm_QueryBody3426);
- p_Program88=this.p_Program();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Program88.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:536:11: p_Expr[true,true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_QueryBody3438);
- p_Expr89=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr89.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Expr_return: (function() {
- XQueryParser.p_Expr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Expr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:546:1: p_Expr[strict, allowConcat] : es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )* ;
- // $ANTLR start "p_Expr"
- p_Expr: function(strict, allowConcat) {
- var retval = new XQueryParser.p_Expr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COMMA90 = null;
- var es = null;
- var p_ExprSingle91 = null;
-
- var COMMA90_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:547:9: (es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:547:11: es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Expr3474);
- es=this.p_ExprSingle(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, es.getTree());
- if ( this.state.backtracking===0 ) {
- if (!allowConcat) throw new Exception();
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:548:11: ( COMMA p_ExprSingle[$strict] )*
- loop45:
- do {
- var alt45=2;
- var LA45_0 = this.input.LA(1);
-
- if ( (LA45_0==COMMA) ) {
- alt45=1;
- }
-
-
- switch (alt45) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:548:12: COMMA p_ExprSingle[$strict]
- COMMA90=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_Expr3490); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA90_tree = this.adaptor.create(COMMA90);
- this.adaptor.addChild(root_0, COMMA90_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Expr3492);
- p_ExprSingle91=this.p_ExprSingle(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle91.getTree());
-
-
- break;
-
- default :
- break loop45;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (e) {
-
- if(e instanceof org.antlr.runtime.RecognitionException) {
- //console.log("catch1");
- reportError(e);
- recover(this.input, e);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), e);
- } else if(e instanceof Exception) {
- //console.log("catch2");
- root_0 = this.adaptor.nil();
- this.adaptor.addChild(root_0, es.getTree());
- retval.stop = this.input.LT(-1);
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- } else {
- throw e;
- }
-
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ExprSingle_return: (function() {
- XQueryParser.p_ExprSingle_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ExprSingle_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:570:1: p_ExprSingle[strict] : ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple );
- // $ANTLR start "p_ExprSingle"
- p_ExprSingle: function(strict) {
- var retval = new XQueryParser.p_ExprSingle_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FLWORHybrid92 = null;
- var p_IfHybrid93 = null;
- var p_SwitchHybrid94 = null;
- var p_TypeswitchHybrid95 = null;
- var p_TryCatchHybrid96 = null;
- var p_ExprSimple97 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:9: ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple )
- var alt46=6;
- alt46 = this.dfa46.predict(this.input);
- switch (alt46) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:11: ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FLWORHybrid_in_p_ExprSingle3559);
- p_FLWORHybrid92=this.p_FLWORHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FLWORHybrid92.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:11: ( IF LPAREN )=> p_IfHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_IfHybrid_in_p_ExprSingle3589);
- p_IfHybrid93=this.p_IfHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IfHybrid93.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:11: ( SWITCH LPAREN )=> p_SwitchHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SwitchHybrid_in_p_ExprSingle3615);
- p_SwitchHybrid94=this.p_SwitchHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchHybrid94.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:11: ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TypeswitchHybrid_in_p_ExprSingle3637);
- p_TypeswitchHybrid95=this.p_TypeswitchHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeswitchHybrid95.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:11: ( TRY LBRACKET )=> p_TryCatchHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TryCatchHybrid_in_p_ExprSingle3664);
- p_TryCatchHybrid96=this.p_TryCatchHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryCatchHybrid96.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:576:11: p_ExprSimple
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSimple_in_p_ExprSingle3677);
- p_ExprSimple97=this.p_ExprSimple();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSimple97.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FLWORHybrid_return: (function() {
- XQueryParser.p_FLWORHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FLWORHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:580:1: p_FLWORHybrid[strict] : p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict] ;
- // $ANTLR start "p_FLWORHybrid"
- p_FLWORHybrid: function(strict) {
- var retval = new XQueryParser.p_FLWORHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_InitialClause98 = null;
- var p_IntermediateClause99 = null;
- var p_ReturnHybrid100 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:9: ( p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:11: p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_FLWORHybrid3704);
- p_InitialClause98=this.p_InitialClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause98.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:27: ( p_IntermediateClause )*
- loop47:
- do {
- var alt47=2;
- var LA47_0 = this.input.LA(1);
-
- if ( (LA47_0==FOR||LA47_0==LET||LA47_0==ORDER||LA47_0==STABLE||LA47_0==WHERE||LA47_0==COUNT||LA47_0==GROUP) ) {
- alt47=1;
- }
-
-
- switch (alt47) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:27: p_IntermediateClause
- this.pushFollow(XQueryParser.FOLLOW_p_IntermediateClause_in_p_FLWORHybrid3706);
- p_IntermediateClause99=this.p_IntermediateClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntermediateClause99.getTree());
-
-
- break;
-
- default :
- break loop47;
- }
- } while (true);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ReturnHybrid_in_p_FLWORHybrid3709);
- p_ReturnHybrid100=this.p_ReturnHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReturnHybrid100.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InitialClause_return: (function() {
- XQueryParser.p_InitialClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InitialClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:585:1: p_InitialClause : ( p_ForClause | p_LetClause | p_WindowClause );
- // $ANTLR start "p_InitialClause"
- p_InitialClause: function() {
- var retval = new XQueryParser.p_InitialClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ForClause101 = null;
- var p_LetClause102 = null;
- var p_WindowClause103 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:9: ( p_ForClause | p_LetClause | p_WindowClause )
- var alt48=3;
- var LA48_0 = this.input.LA(1);
-
- if ( (LA48_0==FOR) ) {
- var LA48_1 = this.input.LA(2);
-
- if ( (LA48_1==DOLLAR) ) {
- alt48=1;
- }
- else if ( (LA48_1==SLIDING||LA48_1==TUMBLING) ) {
- alt48=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 48, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA48_0==LET) ) {
- alt48=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 48, 0, this.input);
-
- throw nvae;
- }
- switch (alt48) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:11: p_ForClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ForClause_in_p_InitialClause3736);
- p_ForClause101=this.p_ForClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForClause101.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:25: p_LetClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_LetClause_in_p_InitialClause3740);
- p_LetClause102=this.p_LetClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetClause102.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:39: p_WindowClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_WindowClause_in_p_InitialClause3744);
- p_WindowClause103=this.p_WindowClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowClause103.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IntermediateClause_return: (function() {
- XQueryParser.p_IntermediateClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IntermediateClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:590:1: p_IntermediateClause : ( p_InitialClause | p_WhereClause | p_GroupByClause | p_OrderByClause | p_CountClause );
- // $ANTLR start "p_IntermediateClause"
- p_IntermediateClause: function() {
- var retval = new XQueryParser.p_IntermediateClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_InitialClause104 = null;
- var p_WhereClause105 = null;
- var p_GroupByClause106 = null;
- var p_OrderByClause107 = null;
- var p_CountClause108 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:9: ( p_InitialClause | p_WhereClause | p_GroupByClause | p_OrderByClause | p_CountClause )
- var alt49=5;
- switch ( this.input.LA(1) ) {
- case FOR:
- case LET:
- alt49=1;
- break;
- case WHERE:
- alt49=2;
- break;
- case GROUP:
- alt49=3;
- break;
- case ORDER:
- case STABLE:
- alt49=4;
- break;
- case COUNT:
- alt49=5;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 49, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt49) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:11: p_InitialClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_IntermediateClause3770);
- p_InitialClause104=this.p_InitialClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause104.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:29: p_WhereClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_WhereClause_in_p_IntermediateClause3774);
- p_WhereClause105=this.p_WhereClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WhereClause105.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:45: p_GroupByClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_GroupByClause_in_p_IntermediateClause3778);
- p_GroupByClause106=this.p_GroupByClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupByClause106.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:63: p_OrderByClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_OrderByClause_in_p_IntermediateClause3782);
- p_OrderByClause107=this.p_OrderByClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderByClause107.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:81: p_CountClause
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CountClause_in_p_IntermediateClause3786);
- p_CountClause108=this.p_CountClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CountClause108.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StringConcatExpr_return: (function() {
- XQueryParser.p_StringConcatExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StringConcatExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:595:1: p_StringConcatExpr : p_RangeExpr (o= CONCAT p_RangeExpr )* ;
- // $ANTLR start "p_StringConcatExpr"
- p_StringConcatExpr: function() {
- var retval = new XQueryParser.p_StringConcatExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var o = null;
- var p_RangeExpr109 = null;
- var p_RangeExpr110 = null;
-
- var o_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:4: ( p_RangeExpr (o= CONCAT p_RangeExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:6: p_RangeExpr (o= CONCAT p_RangeExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_RangeExpr_in_p_StringConcatExpr3807);
- p_RangeExpr109=this.p_RangeExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RangeExpr109.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:18: (o= CONCAT p_RangeExpr )*
- loop50:
- do {
- var alt50=2;
- var LA50_0 = this.input.LA(1);
-
- if ( (LA50_0==CONCAT) ) {
- alt50=1;
- }
-
-
- switch (alt50) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:20: o= CONCAT p_RangeExpr
- o=this.match(this.input,CONCAT,XQueryParser.FOLLOW_CONCAT_in_p_StringConcatExpr3813); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_RangeExpr_in_p_StringConcatExpr3817);
- p_RangeExpr110=this.p_RangeExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RangeExpr110.getTree());
-
-
- break;
-
- default :
- break loop50;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ForClause_return: (function() {
- XQueryParser.p_ForClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ForClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:601:1: p_ForClause : k= FOR p_ForBinding ( COMMA p_ForBinding )* ;
- // $ANTLR start "p_ForClause"
- p_ForClause: function() {
- var retval = new XQueryParser.p_ForClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var COMMA112 = null;
- var p_ForBinding111 = null;
- var p_ForBinding113 = null;
-
- var k_tree=null;
- var COMMA112_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:9: (k= FOR p_ForBinding ( COMMA p_ForBinding )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:11: k= FOR p_ForBinding ( COMMA p_ForBinding )*
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_p_ForClause3844); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ForBinding_in_p_ForClause3848);
- p_ForBinding111=this.p_ForBinding();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForBinding111.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:45: ( COMMA p_ForBinding )*
- loop51:
- do {
- var alt51=2;
- var LA51_0 = this.input.LA(1);
-
- if ( (LA51_0==COMMA) ) {
- alt51=1;
- }
-
-
- switch (alt51) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:46: COMMA p_ForBinding
- COMMA112=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ForClause3851); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA112_tree = this.adaptor.create(COMMA112);
- this.adaptor.addChild(root_0, COMMA112_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ForBinding_in_p_ForClause3853);
- p_ForBinding113=this.p_ForBinding();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForBinding113.getTree());
-
-
- break;
-
- default :
- break loop51;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ForBinding_return: (function() {
- XQueryParser.p_ForBinding_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ForBinding_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:606:1: p_ForBinding : s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true] ;
- // $ANTLR start "p_ForBinding"
- p_ForBinding: function() {
- var retval = new XQueryParser.p_ForBinding_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var s = null;
- var k = null;
- var v = null;
- var p_TypeDeclaration114 = null;
- var p_AllowingEmpty115 = null;
- var p_PositionalVar116 = null;
- var p_FTScoreVar117 = null;
- var p_ExprSingle118 = null;
-
- var s_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:9: (s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:11: s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- s=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ForBinding3883); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- s_tree = this.adaptor.create(s);
- this.adaptor.addChild(root_0, s_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_ForBinding3887);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(s, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:58: ( p_TypeDeclaration )?
- var alt52=2;
- var LA52_0 = this.input.LA(1);
-
- if ( (LA52_0==AS) ) {
- alt52=1;
- }
- switch (alt52) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:58: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_ForBinding3891);
- p_TypeDeclaration114=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration114.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:77: ( p_AllowingEmpty )?
- var alt53=2;
- var LA53_0 = this.input.LA(1);
-
- if ( (LA53_0==ALLOWING) ) {
- alt53=1;
- }
- switch (alt53) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:77: p_AllowingEmpty
- this.pushFollow(XQueryParser.FOLLOW_p_AllowingEmpty_in_p_ForBinding3894);
- p_AllowingEmpty115=this.p_AllowingEmpty();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AllowingEmpty115.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:94: ( p_PositionalVar )?
- var alt54=2;
- var LA54_0 = this.input.LA(1);
-
- if ( (LA54_0==AT) ) {
- alt54=1;
- }
- switch (alt54) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:94: p_PositionalVar
- this.pushFollow(XQueryParser.FOLLOW_p_PositionalVar_in_p_ForBinding3897);
- p_PositionalVar116=this.p_PositionalVar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PositionalVar116.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:111: ( p_FTScoreVar )?
- var alt55=2;
- var LA55_0 = this.input.LA(1);
-
- if ( (LA55_0==SCORE) ) {
- alt55=1;
- }
- switch (alt55) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:111: p_FTScoreVar
- this.pushFollow(XQueryParser.FOLLOW_p_FTScoreVar_in_p_ForBinding3900);
- p_FTScoreVar117=this.p_FTScoreVar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScoreVar117.getTree());
-
-
- break;
-
- }
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_ForBinding3905); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ForBinding3909);
- p_ExprSingle118=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle118.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AllowingEmpty_return: (function() {
- XQueryParser.p_AllowingEmpty_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AllowingEmpty_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:611:1: p_AllowingEmpty : k= ALLOWING k= EMPTY ;
- // $ANTLR start "p_AllowingEmpty"
- p_AllowingEmpty: function() {
- var retval = new XQueryParser.p_AllowingEmpty_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:612:9: (k= ALLOWING k= EMPTY )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:612:11: k= ALLOWING k= EMPTY
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,ALLOWING,XQueryParser.FOLLOW_ALLOWING_in_p_AllowingEmpty3938); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_p_AllowingEmpty3944); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PositionalVar_return: (function() {
- XQueryParser.p_PositionalVar_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PositionalVar_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:616:1: p_PositionalVar : k= AT d= DOLLAR v= p_VarName ;
- // $ANTLR start "p_PositionalVar"
- p_PositionalVar: function() {
- var retval = new XQueryParser.p_PositionalVar_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:617:9: (k= AT d= DOLLAR v= p_VarName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:617:11: k= AT d= DOLLAR v= p_VarName
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_PositionalVar3974); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_PositionalVar3980); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_PositionalVar3984);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_LetClause_return: (function() {
- XQueryParser.p_LetClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_LetClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:621:1: p_LetClause : k= LET p_LetBinding ( COMMA p_LetBinding )* ;
- // $ANTLR start "p_LetClause"
- p_LetClause: function() {
- var retval = new XQueryParser.p_LetClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var COMMA120 = null;
- var p_LetBinding119 = null;
- var p_LetBinding121 = null;
-
- var k_tree=null;
- var COMMA120_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:9: (k= LET p_LetBinding ( COMMA p_LetBinding )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:11: k= LET p_LetBinding ( COMMA p_LetBinding )*
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,LET,XQueryParser.FOLLOW_LET_in_p_LetClause4014); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_LetBinding_in_p_LetClause4018);
- p_LetBinding119=this.p_LetBinding();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetBinding119.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:45: ( COMMA p_LetBinding )*
- loop56:
- do {
- var alt56=2;
- var LA56_0 = this.input.LA(1);
-
- if ( (LA56_0==COMMA) ) {
- alt56=1;
- }
-
-
- switch (alt56) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:46: COMMA p_LetBinding
- COMMA120=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_LetClause4021); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA120_tree = this.adaptor.create(COMMA120);
- this.adaptor.addChild(root_0, COMMA120_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_LetBinding_in_p_LetClause4023);
- p_LetBinding121=this.p_LetBinding();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetBinding121.getTree());
-
-
- break;
-
- default :
- break loop56;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_LetBinding_return: (function() {
- XQueryParser.p_LetBinding_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_LetBinding_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:627:1: p_LetBinding : ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true] ;
- // $ANTLR start "p_LetBinding"
- p_LetBinding: function() {
- var retval = new XQueryParser.p_LetBinding_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var BIND124 = null;
- var v = null;
- var p_TypeDeclaration122 = null;
- var p_FTScoreVar123 = null;
- var p_ExprSingle125 = null;
-
- var d_tree=null;
- var BIND124_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:9: ( ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:11: ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:11: ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar )
- var alt58=2;
- var LA58_0 = this.input.LA(1);
-
- if ( (LA58_0==DOLLAR) ) {
- alt58=1;
- }
- else if ( (LA58_0==SCORE) ) {
- alt58=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 58, 0, this.input);
-
- throw nvae;
- }
- switch (alt58) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:13: (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:13: (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:14: d= DOLLAR v= p_VarName ( p_TypeDeclaration )?
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_LetBinding4057); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_LetBinding4061);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:59: ( p_TypeDeclaration )?
- var alt57=2;
- var LA57_0 = this.input.LA(1);
-
- if ( (LA57_0==AS) ) {
- alt57=1;
- }
- switch (alt57) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:59: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_LetBinding4065);
- p_TypeDeclaration122=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration122.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:81: p_FTScoreVar
- this.pushFollow(XQueryParser.FOLLOW_p_FTScoreVar_in_p_LetBinding4071);
- p_FTScoreVar123=this.p_FTScoreVar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScoreVar123.getTree());
-
-
- break;
-
- }
-
- BIND124=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_LetBinding4075); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND124_tree = this.adaptor.create(BIND124);
- this.adaptor.addChild(root_0, BIND124_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_LetBinding4077);
- p_ExprSingle125=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle125.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WindowClause_return: (function() {
- XQueryParser.p_WindowClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WindowClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:632:1: p_WindowClause : k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause ) ;
- // $ANTLR start "p_WindowClause"
- p_WindowClause: function() {
- var retval = new XQueryParser.p_WindowClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_TumblingWindowClause126 = null;
- var p_SlidingWindowClause127 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:9: (k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:11: k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause )
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_p_WindowClause4106); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:32: ( p_TumblingWindowClause | p_SlidingWindowClause )
- var alt59=2;
- var LA59_0 = this.input.LA(1);
-
- if ( (LA59_0==TUMBLING) ) {
- alt59=1;
- }
- else if ( (LA59_0==SLIDING) ) {
- alt59=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 59, 0, this.input);
-
- throw nvae;
- }
- switch (alt59) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:33: p_TumblingWindowClause
- this.pushFollow(XQueryParser.FOLLOW_p_TumblingWindowClause_in_p_WindowClause4111);
- p_TumblingWindowClause126=this.p_TumblingWindowClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TumblingWindowClause126.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:58: p_SlidingWindowClause
- this.pushFollow(XQueryParser.FOLLOW_p_SlidingWindowClause_in_p_WindowClause4115);
- p_SlidingWindowClause127=this.p_SlidingWindowClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SlidingWindowClause127.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TumblingWindowClause_return: (function() {
- XQueryParser.p_TumblingWindowClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TumblingWindowClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:637:1: p_TumblingWindowClause : k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? ;
- // $ANTLR start "p_TumblingWindowClause"
- p_TumblingWindowClause: function() {
- var retval = new XQueryParser.p_TumblingWindowClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_TypeDeclaration128 = null;
- var p_ExprSingle129 = null;
- var p_WindowStartCondition130 = null;
- var p_WindowEndCondition131 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:9: (k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:11: k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TUMBLING,XQueryParser.FOLLOW_TUMBLING_in_p_TumblingWindowClause4152); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_TumblingWindowClause4158); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TumblingWindowClause4164); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TumblingWindowClause4168);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:106: ( p_TypeDeclaration )?
- var alt60=2;
- var LA60_0 = this.input.LA(1);
-
- if ( (LA60_0==AS) ) {
- alt60=1;
- }
- switch (alt60) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:106: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_TumblingWindowClause4172);
- p_TypeDeclaration128=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration128.getTree());
-
-
- break;
-
- }
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_TumblingWindowClause4177); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TumblingWindowClause4181);
- p_ExprSingle129=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle129.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_WindowStartCondition_in_p_TumblingWindowClause4184);
- p_WindowStartCondition130=this.p_WindowStartCondition();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowStartCondition130.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:187: ( p_WindowEndCondition )?
- var alt61=2;
- var LA61_0 = this.input.LA(1);
-
- if ( (LA61_0==END||LA61_0==ONLY) ) {
- alt61=1;
- }
- switch (alt61) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:187: p_WindowEndCondition
- this.pushFollow(XQueryParser.FOLLOW_p_WindowEndCondition_in_p_TumblingWindowClause4186);
- p_WindowEndCondition131=this.p_WindowEndCondition();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowEndCondition131.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SlidingWindowClause_return: (function() {
- XQueryParser.p_SlidingWindowClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SlidingWindowClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:642:1: p_SlidingWindowClause : k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? ;
- // $ANTLR start "p_SlidingWindowClause"
- p_SlidingWindowClause: function() {
- var retval = new XQueryParser.p_SlidingWindowClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_TypeDeclaration132 = null;
- var p_ExprSingle133 = null;
- var p_WindowStartCondition134 = null;
- var p_WindowEndCondition135 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:9: (k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:11: k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,SLIDING,XQueryParser.FOLLOW_SLIDING_in_p_SlidingWindowClause4215); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_SlidingWindowClause4221); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_SlidingWindowClause4227); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_SlidingWindowClause4231);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:107: ( p_TypeDeclaration )?
- var alt62=2;
- var LA62_0 = this.input.LA(1);
-
- if ( (LA62_0==AS) ) {
- alt62=1;
- }
- switch (alt62) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:107: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_SlidingWindowClause4235);
- p_TypeDeclaration132=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration132.getTree());
-
-
- break;
-
- }
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_SlidingWindowClause4240); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SlidingWindowClause4244);
- p_ExprSingle133=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle133.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_WindowStartCondition_in_p_SlidingWindowClause4247);
- p_WindowStartCondition134=this.p_WindowStartCondition();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowStartCondition134.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:188: ( p_WindowEndCondition )?
- var alt63=2;
- var LA63_0 = this.input.LA(1);
-
- if ( (LA63_0==END||LA63_0==ONLY) ) {
- alt63=1;
- }
- switch (alt63) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:188: p_WindowEndCondition
- this.pushFollow(XQueryParser.FOLLOW_p_WindowEndCondition_in_p_SlidingWindowClause4249);
- p_WindowEndCondition135=this.p_WindowEndCondition();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowEndCondition135.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WindowStartCondition_return: (function() {
- XQueryParser.p_WindowStartCondition_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WindowStartCondition_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:647:1: p_WindowStartCondition : k= START p_WindowVars k= WHEN p_ExprSingle[true] ;
- // $ANTLR start "p_WindowStartCondition"
- p_WindowStartCondition: function() {
- var retval = new XQueryParser.p_WindowStartCondition_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_WindowVars136 = null;
- var p_ExprSingle137 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:648:9: (k= START p_WindowVars k= WHEN p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:648:11: k= START p_WindowVars k= WHEN p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,START,XQueryParser.FOLLOW_START_in_p_WindowStartCondition4278); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_WindowVars_in_p_WindowStartCondition4282);
- p_WindowVars136=this.p_WindowVars();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowVars136.getTree());
- k=this.match(this.input,WHEN,XQueryParser.FOLLOW_WHEN_in_p_WindowStartCondition4286); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WindowStartCondition4290);
- p_ExprSingle137=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle137.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WindowEndCondition_return: (function() {
- XQueryParser.p_WindowEndCondition_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WindowEndCondition_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:652:1: p_WindowEndCondition : (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true] ;
- // $ANTLR start "p_WindowEndCondition"
- p_WindowEndCondition: function() {
- var retval = new XQueryParser.p_WindowEndCondition_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_WindowVars138 = null;
- var p_ExprSingle139 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:9: ( (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:11: (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:11: (k= ONLY )?
- var alt64=2;
- var LA64_0 = this.input.LA(1);
-
- if ( (LA64_0==ONLY) ) {
- alt64=1;
- }
- switch (alt64) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:12: k= ONLY
- k=this.match(this.input,ONLY,XQueryParser.FOLLOW_ONLY_in_p_WindowEndCondition4320); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
-
- }
-
- k=this.match(this.input,END,XQueryParser.FOLLOW_END_in_p_WindowEndCondition4328); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_WindowVars_in_p_WindowEndCondition4332);
- p_WindowVars138=this.p_WindowVars();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowVars138.getTree());
- k=this.match(this.input,WHEN,XQueryParser.FOLLOW_WHEN_in_p_WindowEndCondition4336); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WindowEndCondition4340);
- p_ExprSingle139=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle139.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WindowVars_return: (function() {
- XQueryParser.p_WindowVars_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WindowVars_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:657:1: p_WindowVars : (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )? ;
- // $ANTLR start "p_WindowVars"
- p_WindowVars: function() {
- var retval = new XQueryParser.p_WindowVars_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var k = null;
- var DOLLAR141 = null;
- var DOLLAR143 = null;
- var v = null;
- var p_PositionalVar140 = null;
- var p_PreviousItem142 = null;
- var p_NextItem144 = null;
-
- var d_tree=null;
- var k_tree=null;
- var DOLLAR141_tree=null;
- var DOLLAR143_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:9: ( (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:11: (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )?
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:11: (d= DOLLAR v= p_CurrentItem )?
- var alt65=2;
- var LA65_0 = this.input.LA(1);
-
- if ( (LA65_0==DOLLAR) ) {
- alt65=1;
- }
- switch (alt65) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:12: d= DOLLAR v= p_CurrentItem
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4370); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_CurrentItem_in_p_WindowVars4374);
- v=this.p_CurrentItem();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:65: ( p_PositionalVar )?
- var alt66=2;
- var LA66_0 = this.input.LA(1);
-
- if ( (LA66_0==AT) ) {
- alt66=1;
- }
- switch (alt66) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:65: p_PositionalVar
- this.pushFollow(XQueryParser.FOLLOW_p_PositionalVar_in_p_WindowVars4380);
- p_PositionalVar140=this.p_PositionalVar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PositionalVar140.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:82: (k= PREVIOUS DOLLAR p_PreviousItem )?
- var alt67=2;
- var LA67_0 = this.input.LA(1);
-
- if ( (LA67_0==PREVIOUS) ) {
- alt67=1;
- }
- switch (alt67) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:83: k= PREVIOUS DOLLAR p_PreviousItem
- k=this.match(this.input,PREVIOUS,XQueryParser.FOLLOW_PREVIOUS_in_p_WindowVars4386); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- DOLLAR141=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4390); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DOLLAR141_tree = this.adaptor.create(DOLLAR141);
- this.adaptor.addChild(root_0, DOLLAR141_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PreviousItem_in_p_WindowVars4392);
- p_PreviousItem142=this.p_PreviousItem();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PreviousItem142.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:133: (k= NEXT DOLLAR p_NextItem )?
- var alt68=2;
- var LA68_0 = this.input.LA(1);
-
- if ( (LA68_0==NEXT) ) {
- alt68=1;
- }
- switch (alt68) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:134: k= NEXT DOLLAR p_NextItem
- k=this.match(this.input,NEXT,XQueryParser.FOLLOW_NEXT_in_p_WindowVars4399); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- DOLLAR143=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4403); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DOLLAR143_tree = this.adaptor.create(DOLLAR143);
- this.adaptor.addChild(root_0, DOLLAR143_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NextItem_in_p_WindowVars4405);
- p_NextItem144=this.p_NextItem();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NextItem144.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CurrentItem_return: (function() {
- XQueryParser.p_CurrentItem_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CurrentItem_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:662:1: p_CurrentItem : p_EQName ;
- // $ANTLR start "p_CurrentItem"
- p_CurrentItem: function() {
- var retval = new XQueryParser.p_CurrentItem_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName145 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:663:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:663:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_CurrentItem4433);
- p_EQName145=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName145.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PreviousItem_return: (function() {
- XQueryParser.p_PreviousItem_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PreviousItem_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:667:1: p_PreviousItem : p_EQName ;
- // $ANTLR start "p_PreviousItem"
- p_PreviousItem: function() {
- var retval = new XQueryParser.p_PreviousItem_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName146 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:668:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:668:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_PreviousItem4459);
- p_EQName146=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName146.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NextItem_return: (function() {
- XQueryParser.p_NextItem_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NextItem_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:672:1: p_NextItem : p_EQName ;
- // $ANTLR start "p_NextItem"
- p_NextItem: function() {
- var retval = new XQueryParser.p_NextItem_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName147 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:673:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:673:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_NextItem4485);
- p_EQName147=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName147.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CountClause_return: (function() {
- XQueryParser.p_CountClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CountClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:677:1: p_CountClause : k= COUNT d= DOLLAR v= p_VarName ;
- // $ANTLR start "p_CountClause"
- p_CountClause: function() {
- var retval = new XQueryParser.p_CountClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:678:9: (k= COUNT d= DOLLAR v= p_VarName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:678:11: k= COUNT d= DOLLAR v= p_VarName
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COUNT,XQueryParser.FOLLOW_COUNT_in_p_CountClause4513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CountClause4519); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CountClause4523);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WhereClause_return: (function() {
- XQueryParser.p_WhereClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WhereClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:682:1: p_WhereClause : k= WHERE p_ExprSingle[true] ;
- // $ANTLR start "p_WhereClause"
- p_WhereClause: function() {
- var retval = new XQueryParser.p_WhereClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_ExprSingle148 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:683:9: (k= WHERE p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:683:11: k= WHERE p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,WHERE,XQueryParser.FOLLOW_WHERE_in_p_WhereClause4561); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WhereClause4565);
- p_ExprSingle148=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle148.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_GroupByClause_return: (function() {
- XQueryParser.p_GroupByClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_GroupByClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:687:1: p_GroupByClause : k= GROUP k= BY p_GroupingSpecList ;
- // $ANTLR start "p_GroupByClause"
- p_GroupByClause: function() {
- var retval = new XQueryParser.p_GroupByClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_GroupingSpecList149 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:688:9: (k= GROUP k= BY p_GroupingSpecList )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:688:11: k= GROUP k= BY p_GroupingSpecList
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,GROUP,XQueryParser.FOLLOW_GROUP_in_p_GroupByClause4594); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_GroupByClause4600); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpecList_in_p_GroupByClause4604);
- p_GroupingSpecList149=this.p_GroupingSpecList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpecList149.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_GroupingSpecList_return: (function() {
- XQueryParser.p_GroupingSpecList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_GroupingSpecList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:692:1: p_GroupingSpecList : p_GroupingSpec ( COMMA p_GroupingSpec )* ;
- // $ANTLR start "p_GroupingSpecList"
- p_GroupingSpecList: function() {
- var retval = new XQueryParser.p_GroupingSpecList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COMMA151 = null;
- var p_GroupingSpec150 = null;
- var p_GroupingSpec152 = null;
-
- var COMMA151_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:9: ( p_GroupingSpec ( COMMA p_GroupingSpec )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:11: p_GroupingSpec ( COMMA p_GroupingSpec )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4630);
- p_GroupingSpec150=this.p_GroupingSpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpec150.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:26: ( COMMA p_GroupingSpec )*
- loop69:
- do {
- var alt69=2;
- var LA69_0 = this.input.LA(1);
-
- if ( (LA69_0==COMMA) ) {
- alt69=1;
- }
-
-
- switch (alt69) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:27: COMMA p_GroupingSpec
- COMMA151=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_GroupingSpecList4633); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA151_tree = this.adaptor.create(COMMA151);
- this.adaptor.addChild(root_0, COMMA151_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4635);
- p_GroupingSpec152=this.p_GroupingSpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpec152.getTree());
-
-
- break;
-
- default :
- break loop69;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_GroupingSpec_return: (function() {
- XQueryParser.p_GroupingSpec_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_GroupingSpec_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:697:1: p_GroupingSpec : p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )? ;
- // $ANTLR start "p_GroupingSpec"
- p_GroupingSpec: function() {
- var retval = new XQueryParser.p_GroupingSpec_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var BIND155 = null;
- var p_GroupingVariable153 = null;
- var p_TypeDeclaration154 = null;
- var p_ExprSingle156 = null;
- var p_StringLiteral157 = null;
-
- var k_tree=null;
- var BIND155_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:9: ( p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:11: p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_GroupingVariable_in_p_GroupingSpec4663);
- p_GroupingVariable153=this.p_GroupingVariable();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingVariable153.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:30: ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )?
- var alt71=2;
- var LA71_0 = this.input.LA(1);
-
- if ( (LA71_0==AS||LA71_0==BIND) ) {
- alt71=1;
- }
- switch (alt71) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: ( p_TypeDeclaration )? BIND p_ExprSingle[true]
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: ( p_TypeDeclaration )?
- var alt70=2;
- var LA70_0 = this.input.LA(1);
-
- if ( (LA70_0==AS) ) {
- alt70=1;
- }
- switch (alt70) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_GroupingSpec4666);
- p_TypeDeclaration154=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration154.getTree());
-
-
- break;
-
- }
-
- BIND155=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_GroupingSpec4669); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND155_tree = this.adaptor.create(BIND155);
- this.adaptor.addChild(root_0, BIND155_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_GroupingSpec4671);
- p_ExprSingle156=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle156.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:76: (k= COLLATION p_StringLiteral )?
- var alt72=2;
- var LA72_0 = this.input.LA(1);
-
- if ( (LA72_0==COLLATION) ) {
- alt72=1;
- }
- switch (alt72) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:77: k= COLLATION p_StringLiteral
- k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_GroupingSpec4679); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_GroupingSpec4683);
- p_StringLiteral157=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral157.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_GroupingVariable_return: (function() {
- XQueryParser.p_GroupingVariable_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_GroupingVariable_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:701:1: p_GroupingVariable : d= DOLLAR v= p_VarName ;
- // $ANTLR start "p_GroupingVariable"
- p_GroupingVariable: function() {
- var retval = new XQueryParser.p_GroupingVariable_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var v = null;
-
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:702:9: (d= DOLLAR v= p_VarName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:702:11: d= DOLLAR v= p_VarName
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_GroupingVariable4712); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_GroupingVariable4716);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrderByClause_return: (function() {
- XQueryParser.p_OrderByClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrderByClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:706:1: p_OrderByClause : ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList ;
- // $ANTLR start "p_OrderByClause"
- p_OrderByClause: function() {
- var retval = new XQueryParser.p_OrderByClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_OrderSpecList158 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:9: ( ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:11: ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:11: ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) )
- var alt73=2;
- var LA73_0 = this.input.LA(1);
-
- if ( (LA73_0==ORDER) ) {
- alt73=1;
- }
- else if ( (LA73_0==STABLE) ) {
- alt73=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 73, 0, this.input);
-
- throw nvae;
- }
- switch (alt73) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:12: (k+= ORDER k+= BY )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:12: (k+= ORDER k+= BY )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:13: k+= ORDER k+= BY
- k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_p_OrderByClause4748); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_OrderByClause4752); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:31: (k+= STABLE k+= ORDER k+= BY )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:31: (k+= STABLE k+= ORDER k+= BY )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:32: k+= STABLE k+= ORDER k+= BY
- k=this.match(this.input,STABLE,XQueryParser.FOLLOW_STABLE_in_p_OrderByClause4760); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_p_OrderByClause4764); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_OrderByClause4768); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_OrderSpecList_in_p_OrderByClause4774);
- p_OrderSpecList158=this.p_OrderSpecList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpecList158.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrderSpecList_return: (function() {
- XQueryParser.p_OrderSpecList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrderSpecList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:711:1: p_OrderSpecList : p_OrderSpec ( COMMA p_OrderSpec )* ;
- // $ANTLR start "p_OrderSpecList"
- p_OrderSpecList: function() {
- var retval = new XQueryParser.p_OrderSpecList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COMMA160 = null;
- var p_OrderSpec159 = null;
- var p_OrderSpec161 = null;
-
- var COMMA160_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:9: ( p_OrderSpec ( COMMA p_OrderSpec )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:11: p_OrderSpec ( COMMA p_OrderSpec )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_OrderSpec_in_p_OrderSpecList4800);
- p_OrderSpec159=this.p_OrderSpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpec159.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:23: ( COMMA p_OrderSpec )*
- loop74:
- do {
- var alt74=2;
- var LA74_0 = this.input.LA(1);
-
- if ( (LA74_0==COMMA) ) {
- alt74=1;
- }
-
-
- switch (alt74) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:24: COMMA p_OrderSpec
- COMMA160=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_OrderSpecList4803); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA160_tree = this.adaptor.create(COMMA160);
- this.adaptor.addChild(root_0, COMMA160_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_OrderSpec_in_p_OrderSpecList4805);
- p_OrderSpec161=this.p_OrderSpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpec161.getTree());
-
-
- break;
-
- default :
- break loop74;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrderSpec_return: (function() {
- XQueryParser.p_OrderSpec_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrderSpec_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:716:1: p_OrderSpec : p_ExprSingle[true] p_OrderModifier ;
- // $ANTLR start "p_OrderSpec"
- p_OrderSpec: function() {
- var retval = new XQueryParser.p_OrderSpec_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle162 = null;
- var p_OrderModifier163 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:717:9: ( p_ExprSingle[true] p_OrderModifier )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:717:11: p_ExprSingle[true] p_OrderModifier
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_OrderSpec4833);
- p_ExprSingle162=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle162.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_OrderModifier_in_p_OrderSpec4836);
- p_OrderModifier163=this.p_OrderModifier();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderModifier163.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrderModifier_return: (function() {
- XQueryParser.p_OrderModifier_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrderModifier_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:721:1: p_OrderModifier : (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )? ;
- // $ANTLR start "p_OrderModifier"
- p_OrderModifier: function() {
- var retval = new XQueryParser.p_OrderModifier_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_StringLiteral164 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:9: ( (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:11: (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )?
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:11: (k+= ASCENDING | k+= DESCENDING )?
- var alt75=3;
- var LA75_0 = this.input.LA(1);
-
- if ( (LA75_0==ASCENDING) ) {
- alt75=1;
- }
- else if ( (LA75_0==DESCENDING) ) {
- alt75=2;
- }
- switch (alt75) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:12: k+= ASCENDING
- k=this.match(this.input,ASCENDING,XQueryParser.FOLLOW_ASCENDING_in_p_OrderModifier4865); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:27: k+= DESCENDING
- k=this.match(this.input,DESCENDING,XQueryParser.FOLLOW_DESCENDING_in_p_OrderModifier4871); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:43: (k+= EMPTY (k+= GREATEST | k+= LEAST ) )?
- var alt77=2;
- var LA77_0 = this.input.LA(1);
-
- if ( (LA77_0==EMPTY) ) {
- alt77=1;
- }
- switch (alt77) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:44: k+= EMPTY (k+= GREATEST | k+= LEAST )
- k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_p_OrderModifier4878); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:53: (k+= GREATEST | k+= LEAST )
- var alt76=2;
- var LA76_0 = this.input.LA(1);
-
- if ( (LA76_0==GREATEST) ) {
- alt76=1;
- }
- else if ( (LA76_0==LEAST) ) {
- alt76=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 76, 0, this.input);
-
- throw nvae;
- }
- switch (alt76) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:54: k+= GREATEST
- k=this.match(this.input,GREATEST,XQueryParser.FOLLOW_GREATEST_in_p_OrderModifier4883); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:68: k+= LEAST
- k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_OrderModifier4889); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:80: (k+= COLLATION p_StringLiteral )?
- var alt78=2;
- var LA78_0 = this.input.LA(1);
-
- if ( (LA78_0==COLLATION) ) {
- alt78=1;
- }
- switch (alt78) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:81: k+= COLLATION p_StringLiteral
- k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_OrderModifier4897); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_OrderModifier4899);
- p_StringLiteral164=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral164.getTree());
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ReturnHybrid_return: (function() {
- XQueryParser.p_ReturnHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ReturnHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:726:1: p_ReturnHybrid[strict] : k= RETURN p_Hybrid[$strict,false] ;
- // $ANTLR start "p_ReturnHybrid"
- p_ReturnHybrid: function(strict) {
- var retval = new XQueryParser.p_ReturnHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_Hybrid165 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:727:9: (k= RETURN p_Hybrid[$strict,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:727:11: k= RETURN p_Hybrid[$strict,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_ReturnHybrid4932); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_ReturnHybrid4936);
- p_Hybrid165=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid165.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_QuantifiedExpr_return: (function() {
- XQueryParser.p_QuantifiedExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_QuantifiedExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:731:1: p_QuantifiedExpr : (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true] ;
- // $ANTLR start "p_QuantifiedExpr"
- p_QuantifiedExpr: function() {
- var retval = new XQueryParser.p_QuantifiedExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var e = null;
- var COMMA168 = null;
- var v = null;
- var w = null;
- var p_TypeDeclaration166 = null;
- var p_ExprSingle167 = null;
- var p_TypeDeclaration169 = null;
- var p_ExprSingle170 = null;
- var p_ExprSingle171 = null;
-
- var k_tree=null;
- var d_tree=null;
- var e_tree=null;
- var COMMA168_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:9: ( (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:11: (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:11: (k= SOME | k= EVERY )
- var alt79=2;
- var LA79_0 = this.input.LA(1);
-
- if ( (LA79_0==SOME) ) {
- alt79=1;
- }
- else if ( (LA79_0==EVERY) ) {
- alt79=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 79, 0, this.input);
-
- throw nvae;
- }
- switch (alt79) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:12: k= SOME
- k=this.match(this.input,SOME,XQueryParser.FOLLOW_SOME_in_p_QuantifiedExpr4966); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:21: k= EVERY
- k=this.match(this.input,EVERY,XQueryParser.FOLLOW_EVERY_in_p_QuantifiedExpr4972); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_QuantifiedExpr4979); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_QuantifiedExpr4983);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:92: ( p_TypeDeclaration )?
- var alt80=2;
- var LA80_0 = this.input.LA(1);
-
- if ( (LA80_0==AS) ) {
- alt80=1;
- }
- switch (alt80) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:92: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr4987);
- p_TypeDeclaration166=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration166.getTree());
-
-
- break;
-
- }
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_QuantifiedExpr4992); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr4996);
- p_ExprSingle167=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle167.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:150: ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )*
- loop82:
- do {
- var alt82=2;
- var LA82_0 = this.input.LA(1);
-
- if ( (LA82_0==COMMA) ) {
- alt82=1;
- }
-
-
- switch (alt82) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:151: COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true]
- COMMA168=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_QuantifiedExpr5000); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA168_tree = this.adaptor.create(COMMA168);
- this.adaptor.addChild(root_0, COMMA168_tree);
- }
- e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_QuantifiedExpr5004); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- e_tree = this.adaptor.create(e);
- this.adaptor.addChild(root_0, e_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_QuantifiedExpr5008);
- w=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(e, (w?w.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:201: ( p_TypeDeclaration )?
- var alt81=2;
- var LA81_0 = this.input.LA(1);
-
- if ( (LA81_0==AS) ) {
- alt81=1;
- }
- switch (alt81) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:201: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr5012);
- p_TypeDeclaration169=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration169.getTree());
-
-
- break;
-
- }
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_QuantifiedExpr5017); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5021);
- p_ExprSingle170=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle170.getTree());
-
-
- break;
-
- default :
- break loop82;
- }
- } while (true);
-
- k=this.match(this.input,SATISFIES,XQueryParser.FOLLOW_SATISFIES_in_p_QuantifiedExpr5028); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5032);
- p_ExprSingle171=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle171.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SwitchHybrid_return: (function() {
- XQueryParser.p_SwitchHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SwitchHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:736:1: p_SwitchHybrid[strict] : k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false] ;
- // $ANTLR start "p_SwitchHybrid"
- p_SwitchHybrid: function(strict) {
- var retval = new XQueryParser.p_SwitchHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN172 = null;
- var RPAREN174 = null;
- var p_Expr173 = null;
- var p_SwitchCaseHybrid175 = null;
- var p_Hybrid176 = null;
-
- var k_tree=null;
- var LPAREN172_tree=null;
- var RPAREN174_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:9: (k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:11: k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_p_SwitchHybrid5062); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN172=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SwitchHybrid5066); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN172_tree = this.adaptor.create(LPAREN172);
- this.adaptor.addChild(root_0, LPAREN172_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SwitchHybrid5068);
- p_Expr173=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr173.getTree());
- RPAREN174=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SwitchHybrid5071); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN174_tree = this.adaptor.create(RPAREN174);
- this.adaptor.addChild(root_0, RPAREN174_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:67: ( p_SwitchCaseHybrid[$strict] )+
- var cnt83=0;
- loop83:
- do {
- var alt83=2;
- var LA83_0 = this.input.LA(1);
-
- if ( (LA83_0==CASE) ) {
- alt83=1;
- }
-
-
- switch (alt83) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:67: p_SwitchCaseHybrid[$strict]
- this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseHybrid_in_p_SwitchHybrid5073);
- p_SwitchCaseHybrid175=this.p_SwitchCaseHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseHybrid175.getTree());
-
-
- break;
-
- default :
- if ( cnt83 >= 1 ) {
- break loop83;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(83, this.input);
- throw eee;
- }
- cnt83++;
- } while (true);
-
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SwitchHybrid5079); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchHybrid5085); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchHybrid5089);
- p_Hybrid176=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid176.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SwitchCaseHybrid_return: (function() {
- XQueryParser.p_SwitchCaseHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SwitchCaseHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:741:1: p_SwitchCaseHybrid[strict] : (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false] ;
- // $ANTLR start "p_SwitchCaseHybrid"
- p_SwitchCaseHybrid: function(strict) {
- var retval = new XQueryParser.p_SwitchCaseHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_SwitchCaseOperand177 = null;
- var p_Hybrid178 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:9: ( (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:11: (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false]
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:11: (k= CASE p_SwitchCaseOperand )+
- var cnt84=0;
- loop84:
- do {
- var alt84=2;
- var LA84_0 = this.input.LA(1);
-
- if ( (LA84_0==CASE) ) {
- alt84=1;
- }
-
-
- switch (alt84) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:12: k= CASE p_SwitchCaseOperand
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_SwitchCaseHybrid5120); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseHybrid5124);
- p_SwitchCaseOperand177=this.p_SwitchCaseOperand();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseOperand177.getTree());
-
-
- break;
-
- default :
- if ( cnt84 >= 1 ) {
- break loop84;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(84, this.input);
- throw eee;
- }
- cnt84++;
- } while (true);
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchCaseHybrid5130); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchCaseHybrid5134);
- p_Hybrid178=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid178.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SwitchCaseOperand_return: (function() {
- XQueryParser.p_SwitchCaseOperand_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SwitchCaseOperand_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:746:1: p_SwitchCaseOperand : p_ExprSingle[true] ;
- // $ANTLR start "p_SwitchCaseOperand"
- p_SwitchCaseOperand: function() {
- var retval = new XQueryParser.p_SwitchCaseOperand_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle179 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:747:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:747:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SwitchCaseOperand5161);
- p_ExprSingle179=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle179.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TypeswitchHybrid_return: (function() {
- XQueryParser.p_TypeswitchHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TypeswitchHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:751:1: p_TypeswitchHybrid[strict] : k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false] ;
- // $ANTLR start "p_TypeswitchHybrid"
- p_TypeswitchHybrid: function(strict) {
- var retval = new XQueryParser.p_TypeswitchHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var LPAREN180 = null;
- var RPAREN182 = null;
- var v = null;
- var p_Expr181 = null;
- var p_CaseHybrid183 = null;
- var p_Hybrid184 = null;
-
- var k_tree=null;
- var d_tree=null;
- var LPAREN180_tree=null;
- var RPAREN182_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:9: (k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:11: k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_p_TypeswitchHybrid5191); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN180=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypeswitchHybrid5195); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN180_tree = this.adaptor.create(LPAREN180);
- this.adaptor.addChild(root_0, LPAREN180_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TypeswitchHybrid5197);
- p_Expr181=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr181.getTree());
- RPAREN182=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypeswitchHybrid5200); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN182_tree = this.adaptor.create(RPAREN182);
- this.adaptor.addChild(root_0, RPAREN182_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:71: ( p_CaseHybrid[$strict] )+
- var cnt85=0;
- loop85:
- do {
- var alt85=2;
- var LA85_0 = this.input.LA(1);
-
- if ( (LA85_0==CASE) ) {
- alt85=1;
- }
-
-
- switch (alt85) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:71: p_CaseHybrid[$strict]
- this.pushFollow(XQueryParser.FOLLOW_p_CaseHybrid_in_p_TypeswitchHybrid5202);
- p_CaseHybrid183=this.p_CaseHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CaseHybrid183.getTree());
-
-
- break;
-
- default :
- if ( cnt85 >= 1 ) {
- break loop85;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(85, this.input);
- throw eee;
- }
- cnt85++;
- } while (true);
-
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_TypeswitchHybrid5208); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:119: (d= DOLLAR v= p_VarName )?
- var alt86=2;
- var LA86_0 = this.input.LA(1);
-
- if ( (LA86_0==DOLLAR) ) {
- alt86=1;
- }
- switch (alt86) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:120: d= DOLLAR v= p_VarName
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TypeswitchHybrid5215); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TypeswitchHybrid5219);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
- break;
-
- }
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TypeswitchHybrid5227); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_TypeswitchHybrid5231);
- p_Hybrid184=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid184.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CaseHybrid_return: (function() {
- XQueryParser.p_CaseHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CaseHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:756:1: p_CaseHybrid[strict] : k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false] ;
- // $ANTLR start "p_CaseHybrid"
- p_CaseHybrid: function(strict) {
- var retval = new XQueryParser.p_CaseHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_SequenceTypeUnion185 = null;
- var p_ExprSingle186 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:9: (k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:11: k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_CaseHybrid5261); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:33: (d= DOLLAR v= p_VarName k= AS )?
- var alt87=2;
- var LA87_0 = this.input.LA(1);
-
- if ( (LA87_0==DOLLAR) ) {
- alt87=1;
- }
- switch (alt87) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:34: d= DOLLAR v= p_VarName k= AS
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CaseHybrid5268); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CaseHybrid5272);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CaseHybrid5278); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceTypeUnion_in_p_CaseHybrid5284);
- p_SequenceTypeUnion185=this.p_SequenceTypeUnion();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceTypeUnion185.getTree());
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_CaseHybrid5288); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_CaseHybrid5292);
- p_ExprSingle186=this.p_ExprSingle(false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle186.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SequenceTypeUnion_return: (function() {
- XQueryParser.p_SequenceTypeUnion_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SequenceTypeUnion_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:761:1: p_SequenceTypeUnion : p_SequenceType ( VBAR p_SequenceType )* ;
- // $ANTLR start "p_SequenceTypeUnion"
- p_SequenceTypeUnion: function() {
- var retval = new XQueryParser.p_SequenceTypeUnion_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var VBAR188 = null;
- var p_SequenceType187 = null;
- var p_SequenceType189 = null;
-
- var VBAR188_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:9: ( p_SequenceType ( VBAR p_SequenceType )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:11: p_SequenceType ( VBAR p_SequenceType )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5319);
- p_SequenceType187=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType187.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:26: ( VBAR p_SequenceType )*
- loop88:
- do {
- var alt88=2;
- var LA88_0 = this.input.LA(1);
-
- if ( (LA88_0==VBAR) ) {
- alt88=1;
- }
-
-
- switch (alt88) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:27: VBAR p_SequenceType
- VBAR188=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_SequenceTypeUnion5322); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- VBAR188_tree = this.adaptor.create(VBAR188);
- this.adaptor.addChild(root_0, VBAR188_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5324);
- p_SequenceType189=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType189.getTree());
-
-
- break;
-
- default :
- break loop88;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IfHybrid_return: (function() {
- XQueryParser.p_IfHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IfHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:766:1: p_IfHybrid[strict] : k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false] ;
- // $ANTLR start "p_IfHybrid"
- p_IfHybrid: function(strict) {
- var retval = new XQueryParser.p_IfHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN190 = null;
- var RPAREN192 = null;
- var p_Expr191 = null;
- var p_Hybrid193 = null;
- var p_Hybrid194 = null;
-
- var k_tree=null;
- var LPAREN190_tree=null;
- var RPAREN192_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:767:9: (k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:767:11: k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_p_IfHybrid5355); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN190=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_IfHybrid5359); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN190_tree = this.adaptor.create(LPAREN190);
- this.adaptor.addChild(root_0, LPAREN190_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_IfHybrid5361);
- p_Expr191=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr191.getTree());
- RPAREN192=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_IfHybrid5364); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN192_tree = this.adaptor.create(RPAREN192);
- this.adaptor.addChild(root_0, RPAREN192_tree);
- }
- k=this.match(this.input,THEN,XQueryParser.FOLLOW_THEN_in_p_IfHybrid5368); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfHybrid5372);
- p_Hybrid193=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid193.getTree());
- k=this.match(this.input,ELSE,XQueryParser.FOLLOW_ELSE_in_p_IfHybrid5377); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfHybrid5381);
- p_Hybrid194=this.p_Hybrid(strict, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid194.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TryCatchExpr_return: (function() {
- XQueryParser.p_TryCatchExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TryCatchExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:771:1: p_TryCatchExpr : p_TryClause ( p_CatchClause )+ ;
- // $ANTLR start "p_TryCatchExpr"
- p_TryCatchExpr: function() {
- var retval = new XQueryParser.p_TryCatchExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_TryClause195 = null;
- var p_CatchClause196 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:9: ( p_TryClause ( p_CatchClause )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:11: p_TryClause ( p_CatchClause )+
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TryClause_in_p_TryCatchExpr5408);
- p_TryClause195=this.p_TryClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryClause195.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:23: ( p_CatchClause )+
- var cnt89=0;
- loop89:
- do {
- var alt89=2;
- var LA89_0 = this.input.LA(1);
-
- if ( (LA89_0==CATCH) ) {
- alt89=1;
- }
-
-
- switch (alt89) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:23: p_CatchClause
- this.pushFollow(XQueryParser.FOLLOW_p_CatchClause_in_p_TryCatchExpr5410);
- p_CatchClause196=this.p_CatchClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchClause196.getTree());
-
-
- break;
-
- default :
- if ( cnt89 >= 1 ) {
- break loop89;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(89, this.input);
- throw eee;
- }
- cnt89++;
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TryClause_return: (function() {
- XQueryParser.p_TryClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TryClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:776:1: p_TryClause : k= TRY LBRACKET p_TryTargetExpr RBRACKET ;
- // $ANTLR start "p_TryClause"
- p_TryClause: function() {
- var retval = new XQueryParser.p_TryClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET197 = null;
- var RBRACKET199 = null;
- var p_TryTargetExpr198 = null;
-
- var k_tree=null;
- var LBRACKET197_tree=null;
- var RBRACKET199_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:777:9: (k= TRY LBRACKET p_TryTargetExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:777:11: k= TRY LBRACKET p_TryTargetExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryClause5439); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET197=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_TryClause5443); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET197_tree = this.adaptor.create(LBRACKET197);
- this.adaptor.addChild(root_0, LBRACKET197_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_TryTargetExpr_in_p_TryClause5445);
- p_TryTargetExpr198=this.p_TryTargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryTargetExpr198.getTree());
- RBRACKET199=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_TryClause5447); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET199_tree = this.adaptor.create(RBRACKET199);
- this.adaptor.addChild(root_0, RBRACKET199_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TryTargetExpr_return: (function() {
- XQueryParser.p_TryTargetExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TryTargetExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:781:1: p_TryTargetExpr : p_Expr[false,false] ;
- // $ANTLR start "p_TryTargetExpr"
- p_TryTargetExpr: function() {
- var retval = new XQueryParser.p_TryTargetExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Expr200 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:782:9: ( p_Expr[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:782:11: p_Expr[false,false]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TryTargetExpr5473);
- p_Expr200=this.p_Expr(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr200.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CatchClause_return: (function() {
- XQueryParser.p_CatchClause_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CatchClause_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:786:1: p_CatchClause : k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET ;
- // $ANTLR start "p_CatchClause"
- p_CatchClause: function() {
- var retval = new XQueryParser.p_CatchClause_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET202 = null;
- var RBRACKET204 = null;
- var p_CatchErrorList201 = null;
- var p_Expr203 = null;
-
- var k_tree=null;
- var LBRACKET202_tree=null;
- var RBRACKET204_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:787:9: (k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:787:11: k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_CatchClause5502); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_CatchClause5506);
- p_CatchErrorList201=this.p_CatchErrorList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList201.getTree());
- LBRACKET202=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CatchClause5508); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET202_tree = this.adaptor.create(LBRACKET202);
- this.adaptor.addChild(root_0, LBRACKET202_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_CatchClause5510);
- p_Expr203=this.p_Expr(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr203.getTree());
- RBRACKET204=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CatchClause5513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET204_tree = this.adaptor.create(RBRACKET204);
- this.adaptor.addChild(root_0, RBRACKET204_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CatchErrorList_return: (function() {
- XQueryParser.p_CatchErrorList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CatchErrorList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:791:1: p_CatchErrorList : p_NameTest ( VBAR p_NameTest )* ;
- // $ANTLR start "p_CatchErrorList"
- p_CatchErrorList: function() {
- var retval = new XQueryParser.p_CatchErrorList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var VBAR206 = null;
- var p_NameTest205 = null;
- var p_NameTest207 = null;
-
- var VBAR206_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:9: ( p_NameTest ( VBAR p_NameTest )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:11: p_NameTest ( VBAR p_NameTest )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_CatchErrorList5539);
- p_NameTest205=this.p_NameTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest205.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:22: ( VBAR p_NameTest )*
- loop90:
- do {
- var alt90=2;
- var LA90_0 = this.input.LA(1);
-
- if ( (LA90_0==VBAR) ) {
- alt90=1;
- }
-
-
- switch (alt90) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:23: VBAR p_NameTest
- VBAR206=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_CatchErrorList5542); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- VBAR206_tree = this.adaptor.create(VBAR206);
- this.adaptor.addChild(root_0, VBAR206_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_CatchErrorList5544);
- p_NameTest207=this.p_NameTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest207.getTree());
-
-
- break;
-
- default :
- break loop90;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrExpr_return: (function() {
- XQueryParser.p_OrExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:796:1: p_OrExpr : p_AndExpr (k= OR p_AndExpr )* ;
- // $ANTLR start "p_OrExpr"
- p_OrExpr: function() {
- var retval = new XQueryParser.p_OrExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_AndExpr208 = null;
- var p_AndExpr209 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:9: ( p_AndExpr (k= OR p_AndExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:11: p_AndExpr (k= OR p_AndExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AndExpr_in_p_OrExpr5572);
- p_AndExpr208=this.p_AndExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AndExpr208.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:21: (k= OR p_AndExpr )*
- loop91:
- do {
- var alt91=2;
- var LA91_0 = this.input.LA(1);
-
- if ( (LA91_0==OR) ) {
- alt91=1;
- }
-
-
- switch (alt91) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:23: k= OR p_AndExpr
- k=this.match(this.input,OR,XQueryParser.FOLLOW_OR_in_p_OrExpr5578); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_AndExpr_in_p_OrExpr5582);
- p_AndExpr209=this.p_AndExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AndExpr209.getTree());
-
-
- break;
-
- default :
- break loop91;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AndExpr_return: (function() {
- XQueryParser.p_AndExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AndExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:801:1: p_AndExpr : p_ComparisonExpr (k= AND p_ComparisonExpr )* ;
- // $ANTLR start "p_AndExpr"
- p_AndExpr: function() {
- var retval = new XQueryParser.p_AndExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_ComparisonExpr210 = null;
- var p_ComparisonExpr211 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:9: ( p_ComparisonExpr (k= AND p_ComparisonExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:11: p_ComparisonExpr (k= AND p_ComparisonExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ComparisonExpr_in_p_AndExpr5611);
- p_ComparisonExpr210=this.p_ComparisonExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComparisonExpr210.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:28: (k= AND p_ComparisonExpr )*
- loop92:
- do {
- var alt92=2;
- var LA92_0 = this.input.LA(1);
-
- if ( (LA92_0==AND) ) {
- alt92=1;
- }
-
-
- switch (alt92) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:30: k= AND p_ComparisonExpr
- k=this.match(this.input,AND,XQueryParser.FOLLOW_AND_in_p_AndExpr5617); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ComparisonExpr_in_p_AndExpr5621);
- p_ComparisonExpr211=this.p_ComparisonExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComparisonExpr211.getTree());
-
-
- break;
-
- default :
- break loop92;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ComparisonExpr_return: (function() {
- XQueryParser.p_ComparisonExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ComparisonExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:807:1: p_ComparisonExpr : p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )? ;
- // $ANTLR start "p_ComparisonExpr"
- p_ComparisonExpr: function() {
- var retval = new XQueryParser.p_ComparisonExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTContainsExpr212 = null;
- var p_ValueComp213 = null;
- var p_GeneralComp214 = null;
- var p_NodeComp215 = null;
- var p_FTContainsExpr216 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:9: ( p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:11: p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5651);
- p_FTContainsExpr212=this.p_FTContainsExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContainsExpr212.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:28: ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )?
- var alt94=2;
- var LA94_0 = this.input.LA(1);
-
- if ( (LA94_0==EQ||LA94_0==GE||LA94_0==GT||LA94_0==IS||LA94_0==LE||LA94_0==LT||LA94_0==NE||LA94_0==EQUAL||LA94_0==NOTEQUAL||(LA94_0>=SMALLER && LA94_0<=GREATER_GREATER)) ) {
- alt94=1;
- }
- switch (alt94) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:30: ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:30: ( p_ValueComp | p_GeneralComp | p_NodeComp )
- var alt93=3;
- switch ( this.input.LA(1) ) {
- case EQ:
- case GE:
- case GT:
- case LE:
- case LT:
- case NE:
- alt93=1;
- break;
- case EQUAL:
- case NOTEQUAL:
- case SMALLER:
- case GREATER:
- case SMALLEREQ:
- case GREATEREQ:
- alt93=2;
- break;
- case IS:
- case SMALLER_SMALLER:
- case GREATER_GREATER:
- alt93=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 93, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt93) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:31: p_ValueComp
- this.pushFollow(XQueryParser.FOLLOW_p_ValueComp_in_p_ComparisonExpr5656);
- p_ValueComp213=this.p_ValueComp();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValueComp213.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:45: p_GeneralComp
- this.pushFollow(XQueryParser.FOLLOW_p_GeneralComp_in_p_ComparisonExpr5660);
- p_GeneralComp214=this.p_GeneralComp();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GeneralComp214.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:61: p_NodeComp
- this.pushFollow(XQueryParser.FOLLOW_p_NodeComp_in_p_ComparisonExpr5664);
- p_NodeComp215=this.p_NodeComp();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeComp215.getTree());
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5667);
- p_FTContainsExpr216=this.p_FTContainsExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContainsExpr216.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_RangeExpr_return: (function() {
- XQueryParser.p_RangeExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_RangeExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:812:1: p_RangeExpr : p_AdditiveExpr (k= TO p_AdditiveExpr )? ;
- // $ANTLR start "p_RangeExpr"
- p_RangeExpr: function() {
- var retval = new XQueryParser.p_RangeExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_AdditiveExpr217 = null;
- var p_AdditiveExpr218 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:9: ( p_AdditiveExpr (k= TO p_AdditiveExpr )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:11: p_AdditiveExpr (k= TO p_AdditiveExpr )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_RangeExpr5696);
- p_AdditiveExpr217=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr217.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:26: (k= TO p_AdditiveExpr )?
- var alt95=2;
- var LA95_0 = this.input.LA(1);
-
- if ( (LA95_0==TO) ) {
- alt95=1;
- }
- switch (alt95) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:28: k= TO p_AdditiveExpr
- k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_RangeExpr5702); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_RangeExpr5706);
- p_AdditiveExpr218=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr218.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AdditiveExpr_return: (function() {
- XQueryParser.p_AdditiveExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AdditiveExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:817:1: p_AdditiveExpr : p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )* ;
- // $ANTLR start "p_AdditiveExpr"
- p_AdditiveExpr: function() {
- var retval = new XQueryParser.p_AdditiveExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var o = null;
- var p_MultiplicativeExpr219 = null;
- var p_MultiplicativeExpr220 = null;
-
- var o_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:9: ( p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:11: p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5735);
- p_MultiplicativeExpr219=this.p_MultiplicativeExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_MultiplicativeExpr219.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:32: ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )*
- loop97:
- do {
- var alt97=2;
- var LA97_0 = this.input.LA(1);
-
- if ( ((LA97_0>=PLUS && LA97_0<=MINUS)) ) {
- alt97=1;
- }
-
-
- switch (alt97) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:34: (o= PLUS | o= MINUS ) p_MultiplicativeExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:34: (o= PLUS | o= MINUS )
- var alt96=2;
- var LA96_0 = this.input.LA(1);
-
- if ( (LA96_0==PLUS) ) {
- alt96=1;
- }
- else if ( (LA96_0==MINUS) ) {
- alt96=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 96, 0, this.input);
-
- throw nvae;
- }
- switch (alt96) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:35: o= PLUS
- o=this.match(this.input,PLUS,XQueryParser.FOLLOW_PLUS_in_p_AdditiveExpr5742); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:59: o= MINUS
- o=this.match(this.input,MINUS,XQueryParser.FOLLOW_MINUS_in_p_AdditiveExpr5750); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5755);
- p_MultiplicativeExpr220=this.p_MultiplicativeExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_MultiplicativeExpr220.getTree());
-
-
- break;
-
- default :
- break loop97;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_MultiplicativeExpr_return: (function() {
- XQueryParser.p_MultiplicativeExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_MultiplicativeExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:822:1: p_MultiplicativeExpr : p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )* ;
- // $ANTLR start "p_MultiplicativeExpr"
- p_MultiplicativeExpr: function() {
- var retval = new XQueryParser.p_MultiplicativeExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var o = null;
- var k = null;
- var p_UnionExpr221 = null;
- var p_UnionExpr222 = null;
-
- var o_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:9: ( p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:11: p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5784);
- p_UnionExpr221=this.p_UnionExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr221.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:23: ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )*
- loop100:
- do {
- var alt100=2;
- var LA100_0 = this.input.LA(1);
-
- if ( (LA100_0==DIV||LA100_0==IDIV||LA100_0==MOD||LA100_0==STAR) ) {
- alt100=1;
- }
-
-
- switch (alt100) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:25: (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:25: (o= STAR | (k= DIV | k= IDIV | k= MOD ) )
- var alt99=2;
- var LA99_0 = this.input.LA(1);
-
- if ( (LA99_0==STAR) ) {
- alt99=1;
- }
- else if ( (LA99_0==DIV||LA99_0==IDIV||LA99_0==MOD) ) {
- alt99=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 99, 0, this.input);
-
- throw nvae;
- }
- switch (alt99) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:26: o= STAR
- o=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_MultiplicativeExpr5791); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:50: (k= DIV | k= IDIV | k= MOD )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:50: (k= DIV | k= IDIV | k= MOD )
- var alt98=3;
- switch ( this.input.LA(1) ) {
- case DIV:
- alt98=1;
- break;
- case IDIV:
- alt98=2;
- break;
- case MOD:
- alt98=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 98, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt98) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:51: k= DIV
- k=this.match(this.input,DIV,XQueryParser.FOLLOW_DIV_in_p_MultiplicativeExpr5800); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:59: k= IDIV
- k=this.match(this.input,IDIV,XQueryParser.FOLLOW_IDIV_in_p_MultiplicativeExpr5806); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:68: k= MOD
- k=this.match(this.input,MOD,XQueryParser.FOLLOW_MOD_in_p_MultiplicativeExpr5812); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5818);
- p_UnionExpr222=this.p_UnionExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr222.getTree());
-
-
- break;
-
- default :
- break loop100;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_UnionExpr_return: (function() {
- XQueryParser.p_UnionExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_UnionExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:827:1: p_UnionExpr : p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )* ;
- // $ANTLR start "p_UnionExpr"
- p_UnionExpr: function() {
- var retval = new XQueryParser.p_UnionExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var VBAR224 = null;
- var p_IntersectExceptExpr223 = null;
- var p_IntersectExceptExpr225 = null;
-
- var k_tree=null;
- var VBAR224_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:9: ( p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:11: p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5847);
- p_IntersectExceptExpr223=this.p_IntersectExceptExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntersectExceptExpr223.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:33: ( (k= UNION | VBAR ) p_IntersectExceptExpr )*
- loop102:
- do {
- var alt102=2;
- var LA102_0 = this.input.LA(1);
-
- if ( (LA102_0==UNION||LA102_0==VBAR) ) {
- alt102=1;
- }
-
-
- switch (alt102) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:35: (k= UNION | VBAR ) p_IntersectExceptExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:35: (k= UNION | VBAR )
- var alt101=2;
- var LA101_0 = this.input.LA(1);
-
- if ( (LA101_0==UNION) ) {
- alt101=1;
- }
- else if ( (LA101_0==VBAR) ) {
- alt101=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 101, 0, this.input);
-
- throw nvae;
- }
- switch (alt101) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:36: k= UNION
- k=this.match(this.input,UNION,XQueryParser.FOLLOW_UNION_in_p_UnionExpr5854); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:61: VBAR
- VBAR224=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_UnionExpr5860); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- VBAR224_tree = this.adaptor.create(VBAR224);
- this.adaptor.addChild(root_0, VBAR224_tree);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5863);
- p_IntersectExceptExpr225=this.p_IntersectExceptExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntersectExceptExpr225.getTree());
-
-
- break;
-
- default :
- break loop102;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IntersectExceptExpr_return: (function() {
- XQueryParser.p_IntersectExceptExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IntersectExceptExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:832:1: p_IntersectExceptExpr : p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )* ;
- // $ANTLR start "p_IntersectExceptExpr"
- p_IntersectExceptExpr: function() {
- var retval = new XQueryParser.p_IntersectExceptExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_InstanceofExpr226 = null;
- var p_InstanceofExpr227 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:9: ( p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:11: p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5892);
- p_InstanceofExpr226=this.p_InstanceofExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InstanceofExpr226.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:28: ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )*
- loop104:
- do {
- var alt104=2;
- var LA104_0 = this.input.LA(1);
-
- if ( (LA104_0==EXCEPT||LA104_0==INTERSECT) ) {
- alt104=1;
- }
-
-
- switch (alt104) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:30: (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:30: (k= INTERSECT | k= EXCEPT )
- var alt103=2;
- var LA103_0 = this.input.LA(1);
-
- if ( (LA103_0==INTERSECT) ) {
- alt103=1;
- }
- else if ( (LA103_0==EXCEPT) ) {
- alt103=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 103, 0, this.input);
-
- throw nvae;
- }
- switch (alt103) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:31: k= INTERSECT
- k=this.match(this.input,INTERSECT,XQueryParser.FOLLOW_INTERSECT_in_p_IntersectExceptExpr5899); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:45: k= EXCEPT
- k=this.match(this.input,EXCEPT,XQueryParser.FOLLOW_EXCEPT_in_p_IntersectExceptExpr5905); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5910);
- p_InstanceofExpr227=this.p_InstanceofExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InstanceofExpr227.getTree());
-
-
- break;
-
- default :
- break loop104;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InstanceofExpr_return: (function() {
- XQueryParser.p_InstanceofExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InstanceofExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:837:1: p_InstanceofExpr : p_TreatExpr (k= INSTANCE k= OF p_SequenceType )? ;
- // $ANTLR start "p_InstanceofExpr"
- p_InstanceofExpr: function() {
- var retval = new XQueryParser.p_InstanceofExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_TreatExpr228 = null;
- var p_SequenceType229 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:9: ( p_TreatExpr (k= INSTANCE k= OF p_SequenceType )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:11: p_TreatExpr (k= INSTANCE k= OF p_SequenceType )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TreatExpr_in_p_InstanceofExpr5939);
- p_TreatExpr228=this.p_TreatExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TreatExpr228.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:23: (k= INSTANCE k= OF p_SequenceType )?
- var alt105=2;
- var LA105_0 = this.input.LA(1);
-
- if ( (LA105_0==INSTANCE) ) {
- alt105=1;
- }
- switch (alt105) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:25: k= INSTANCE k= OF p_SequenceType
- k=this.match(this.input,INSTANCE,XQueryParser.FOLLOW_INSTANCE_in_p_InstanceofExpr5945); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_InstanceofExpr5951); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_InstanceofExpr5955);
- p_SequenceType229=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType229.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TreatExpr_return: (function() {
- XQueryParser.p_TreatExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TreatExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:842:1: p_TreatExpr : p_CastableExpr (k= TREAT k= AS p_SequenceType )? ;
- // $ANTLR start "p_TreatExpr"
- p_TreatExpr: function() {
- var retval = new XQueryParser.p_TreatExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_CastableExpr230 = null;
- var p_SequenceType231 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:9: ( p_CastableExpr (k= TREAT k= AS p_SequenceType )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:11: p_CastableExpr (k= TREAT k= AS p_SequenceType )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CastableExpr_in_p_TreatExpr5983);
- p_CastableExpr230=this.p_CastableExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CastableExpr230.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:26: (k= TREAT k= AS p_SequenceType )?
- var alt106=2;
- var LA106_0 = this.input.LA(1);
-
- if ( (LA106_0==TREAT) ) {
- alt106=1;
- }
- switch (alt106) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:28: k= TREAT k= AS p_SequenceType
- k=this.match(this.input,TREAT,XQueryParser.FOLLOW_TREAT_in_p_TreatExpr5989); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TreatExpr5995); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TreatExpr5999);
- p_SequenceType231=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType231.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CastableExpr_return: (function() {
- XQueryParser.p_CastableExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CastableExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:847:1: p_CastableExpr : p_CastExpr (k= CASTABLE k= AS p_SingleType )? ;
- // $ANTLR start "p_CastableExpr"
- p_CastableExpr: function() {
- var retval = new XQueryParser.p_CastableExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_CastExpr232 = null;
- var p_SingleType233 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:9: ( p_CastExpr (k= CASTABLE k= AS p_SingleType )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:11: p_CastExpr (k= CASTABLE k= AS p_SingleType )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CastExpr_in_p_CastableExpr6036);
- p_CastExpr232=this.p_CastExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CastExpr232.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:22: (k= CASTABLE k= AS p_SingleType )?
- var alt107=2;
- var LA107_0 = this.input.LA(1);
-
- if ( (LA107_0==CASTABLE) ) {
- alt107=1;
- }
- switch (alt107) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:24: k= CASTABLE k= AS p_SingleType
- k=this.match(this.input,CASTABLE,XQueryParser.FOLLOW_CASTABLE_in_p_CastableExpr6042); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CastableExpr6048); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SingleType_in_p_CastableExpr6052);
- p_SingleType233=this.p_SingleType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SingleType233.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CastExpr_return: (function() {
- XQueryParser.p_CastExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CastExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:852:1: p_CastExpr : p_UnaryExpr (k= CAST k= AS p_SingleType )? ;
- // $ANTLR start "p_CastExpr"
- p_CastExpr: function() {
- var retval = new XQueryParser.p_CastExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_UnaryExpr234 = null;
- var p_SingleType235 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:9: ( p_UnaryExpr (k= CAST k= AS p_SingleType )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:11: p_UnaryExpr (k= CAST k= AS p_SingleType )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_UnaryExpr_in_p_CastExpr6089);
- p_UnaryExpr234=this.p_UnaryExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnaryExpr234.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:23: (k= CAST k= AS p_SingleType )?
- var alt108=2;
- var LA108_0 = this.input.LA(1);
-
- if ( (LA108_0==CAST) ) {
- alt108=1;
- }
- switch (alt108) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:25: k= CAST k= AS p_SingleType
- k=this.match(this.input,CAST,XQueryParser.FOLLOW_CAST_in_p_CastExpr6095); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CastExpr6101); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SingleType_in_p_CastExpr6105);
- p_SingleType235=this.p_SingleType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SingleType235.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_UnaryExpr_return: (function() {
- XQueryParser.p_UnaryExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_UnaryExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:857:1: p_UnaryExpr : (o= PLUS | o= MINUS )* p_ValueExpr -> ^( UnaryExpr ( PLUS )* p_ValueExpr ) ;
- // $ANTLR start "p_UnaryExpr"
- p_UnaryExpr: function() {
- var retval = new XQueryParser.p_UnaryExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var o = null;
- var p_ValueExpr236 = null;
-
- var o_tree=null;
- var stream_PLUS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token PLUS");
- var stream_MINUS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MINUS");
- var stream_p_ValueExpr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ValueExpr");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:9: ( (o= PLUS | o= MINUS )* p_ValueExpr -> ^( UnaryExpr ( PLUS )* p_ValueExpr ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:11: (o= PLUS | o= MINUS )* p_ValueExpr
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:11: (o= PLUS | o= MINUS )*
- loop109:
- do {
- var alt109=3;
- var LA109_0 = this.input.LA(1);
-
- if ( (LA109_0==PLUS) ) {
- alt109=1;
- }
- else if ( (LA109_0==MINUS) ) {
- alt109=2;
- }
-
-
- switch (alt109) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:12: o= PLUS
- o=this.match(this.input,PLUS,XQueryParser.FOLLOW_PLUS_in_p_UnaryExpr6137); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_PLUS.add(o);
-
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:36: o= MINUS
- o=this.match(this.input,MINUS,XQueryParser.FOLLOW_MINUS_in_p_UnaryExpr6145); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_MINUS.add(o);
-
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
- break;
-
- default :
- break loop109;
- }
- } while (true);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ValueExpr_in_p_UnaryExpr6150);
- p_ValueExpr236=this.p_ValueExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_ValueExpr.add(p_ValueExpr236.getTree());
-
-
- // AST REWRITE
- // elements: p_ValueExpr, PLUS
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 859:17: -> ^( UnaryExpr ( PLUS )* p_ValueExpr )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:859:20: ^( UnaryExpr ( PLUS )* p_ValueExpr )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(UnaryExpr, "UnaryExpr"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:859:32: ( PLUS )*
- while ( stream_PLUS.hasNext() ) {
- this.adaptor.addChild(root_1, stream_PLUS.nextNode());
-
- }
- stream_PLUS.reset();
- this.adaptor.addChild(root_1, stream_p_ValueExpr.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ValueExpr_return: (function() {
- XQueryParser.p_ValueExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ValueExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:863:1: p_ValueExpr : ( ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr | p_SimpleMapExpr | p_ExtensionExpr );
- // $ANTLR start "p_ValueExpr"
- p_ValueExpr: function() {
- var retval = new XQueryParser.p_ValueExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ValidateExpr237 = null;
- var p_SimpleMapExpr238 = null;
- var p_ExtensionExpr239 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:9: ( ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr | p_SimpleMapExpr | p_ExtensionExpr )
- var alt110=3;
- switch ( this.input.LA(1) ) {
- case VALIDATE:
- var LA110_1 = this.input.LA(2);
-
- if ( (LA110_1==LAX) && (this.synpred6_XQueryParser())) {
- alt110=1;
- }
- else if ( (LA110_1==STRICT) && (this.synpred6_XQueryParser())) {
- alt110=1;
- }
- else if ( (LA110_1==TYPE) && (this.synpred6_XQueryParser())) {
- alt110=1;
- }
- else if ( (LA110_1==LBRACKET) && (this.synpred6_XQueryParser())) {
- alt110=1;
- }
- else if ( (LA110_1==EOF||(LA110_1>=AND && LA110_1<=AT)||(LA110_1>=CASE && LA110_1<=CASTABLE)||LA110_1==COLLATION||LA110_1==DEFAULT||(LA110_1>=DESCENDING && LA110_1<=DIV)||LA110_1==EMPTY||LA110_1==EQ||LA110_1==EXCEPT||LA110_1==FOR||LA110_1==GE||(LA110_1>=GT && LA110_1<=IDIV)||(LA110_1>=INSTANCE && LA110_1<=IS)||LA110_1==LE||(LA110_1>=LET && LA110_1<=MOD)||LA110_1==NE||(LA110_1>=OR && LA110_1<=ORDER)||(LA110_1>=RETURN && LA110_1<=SATISFIES)||LA110_1==STABLE||(LA110_1>=TO && LA110_1<=TREAT)||LA110_1==UNION||LA110_1==WHERE||LA110_1==COUNT||(LA110_1>=END && LA110_1<=GROUP)||LA110_1==ONLY||LA110_1==START||(LA110_1>=AFTER && LA110_1<=BEFORE)||LA110_1==INTO||LA110_1==MODIFY||LA110_1==WITH||LA110_1==CONTAINS||LA110_1==PARAGRAPHS||LA110_1==SENTENCES||LA110_1==TIMES||LA110_1==WORDS||(LA110_1>=CONCAT && LA110_1<=RPAREN)||LA110_1==R_UNION_BRACKET||(LA110_1>=RBRACKET && LA110_1<=EQUAL)||LA110_1==NOTEQUAL||LA110_1==HASH||LA110_1==COMMA||(LA110_1>=STAR && LA110_1<=BANG)||LA110_1==COLON||(LA110_1>=SEMICOLON && LA110_1<=VBAR)) ) {
- alt110=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 110, 1, this.input);
-
- throw nvae;
- }
- break;
- case ANCESTOR:
- case ANCESTOR_OR_SELF:
- case AND:
- case AS:
- case ASCENDING:
- case AT:
- case ATTRIBUTE:
- case BASE_URI:
- case BOUNDARY_SPACE:
- case BY:
- case CASE:
- case CAST:
- case CASTABLE:
- case CHILD:
- case COLLATION:
- case COMMENT:
- case CONSTRUCTION:
- case COPY_NAMESPACES:
- case DECLARE:
- case DEFAULT:
- case DESCENDANT:
- case DESCENDANT_OR_SELF:
- case DESCENDING:
- case DIV:
- case DOCUMENT:
- case DOCUMENT_NODE:
- case ELEMENT:
- case ELSE:
- case EMPTY:
- case EMPTY_SEQUENCE:
- case ENCODING:
- case EQ:
- case EVERY:
- case EXCEPT:
- case EXTERNAL:
- case FOLLOWING:
- case FOLLOWING_SIBLING:
- case FOR:
- case FUNCTION:
- case GE:
- case GREATEST:
- case GT:
- case IDIV:
- case IF:
- case IMPORT:
- case IN:
- case INHERIT:
- case INSTANCE:
- case INTERSECT:
- case IS:
- case ITEM:
- case LAX:
- case LE:
- case LEAST:
- case LET:
- case LT:
- case MOD:
- case MODULE:
- case NAMESPACE:
- case NE:
- case NO_INHERIT:
- case NO_PRESERVE:
- case NODE:
- case JSON:
- case OF:
- case OPTION:
- case OR:
- case ORDER:
- case ORDERED:
- case ORDERING:
- case PARENT:
- case PRECEDING:
- case PRECEDING_SIBLING:
- case PRESERVE:
- case PROCESSING_INSTRUCTION:
- case STRUCTURED_ITEM:
- case JSON_ITEM:
- case OBJECT:
- case ARRAY:
- case RETURN:
- case SATISFIES:
- case SCHEMA:
- case SCHEMA_ATTRIBUTE:
- case SCHEMA_ELEMENT:
- case SELF:
- case SOME:
- case STABLE:
- case STRICT:
- case STRIP:
- case TEXT:
- case THEN:
- case TO:
- case TREAT:
- case TYPESWITCH:
- case UNION:
- case UNORDERED:
- case VARIABLE:
- case VERSION:
- case WHERE:
- case XQUERY:
- case ALLOWING:
- case CATCH:
- case CONTEXT:
- case COUNT:
- case DECIMAL_FORMAT:
- case DECIMAL_SEPARATOR:
- case DIGIT:
- case END:
- case GROUP:
- case GROUPING_SEPARATOR:
- case INFINITY:
- case MINUS_SIGN:
- case NAMESPACE_NODE:
- case NAN:
- case NEXT:
- case ONLY:
- case PATTERN_SEPARATOR:
- case PERCENT:
- case PER_MILLE:
- case PREVIOUS:
- case SLIDING:
- case START:
- case SWITCH:
- case TRY:
- case TUMBLING:
- case TYPE:
- case WHEN:
- case WINDOW:
- case ZERO_DIGIT:
- case AFTER:
- case BEFORE:
- case COPY:
- case DELETE:
- case FIRST:
- case INSERT:
- case INTO:
- case POSITION:
- case APPEND:
- case LAST:
- case MODIFY:
- case NODES:
- case RENAME:
- case REPLACE:
- case REVALIDATION:
- case SKIP:
- case UPDATING:
- case VALUE:
- case WITH:
- case ALL:
- case ANY:
- case CONTAINS:
- case CONTENT:
- case DIACRITICS:
- case DIFFERENT:
- case DISTANCE:
- case ENTIRE:
- case EXACTLY:
- case FROM:
- case FT_OPTION:
- case FTAND:
- case FTNOT:
- case FTOR:
- case INSENSITIVE:
- case LANGUAGE:
- case LEVELS:
- case LOWERCASE:
- case MOST:
- case NO:
- case NOT:
- case OCCURS:
- case PARAGRAPH:
- case PARAGRAPHS:
- case PHRASE:
- case RELATIONSHIP:
- case SAME:
- case SCORE:
- case SENSITIVE:
- case SENTENCE:
- case SENTENCES:
- case STEMMING:
- case STOP:
- case THESAURUS:
- case TIMES:
- case UPPERCASE:
- case USING:
- case WEIGHT:
- case WILDCARDS:
- case WITHOUT:
- case WORD:
- case WORDS:
- case BREAK:
- case CONTINUE:
- case EXIT:
- case LOOP:
- case RETURNING:
- case WHILE:
- case CHECK:
- case COLLECTION:
- case CONSTRAINT:
- case FOREACH:
- case FOREIGN:
- case INDEX:
- case INTEGRITY:
- case KEY:
- case ON:
- case UNIQUE:
- case AMP_ER:
- case APOS_ER:
- case QUOT_ER:
- case LPAREN:
- case DOLLAR:
- case L_UNION_BRACKET:
- case LBRACKET:
- case LSQUARE:
- case STAR:
- case SMALLER:
- case SLASH:
- case SLASH_SLASH:
- case DOT:
- case DOT_DOT:
- case ATTR_SIGN:
- case Q:
- case APOS:
- case QUOT:
- case L_NCName:
- case L_DirCommentConstructor:
- case L_DirPIConstructor:
- case L_IntegerLiteral:
- case L_DecimalLiteral:
- case L_DoubleLiteral:
- alt110=2;
- break;
- case L_Pragma:
- alt110=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 110, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt110) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:11: ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ValidateExpr_in_p_ValueExpr6220);
- p_ValidateExpr237=this.p_ValidateExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValidateExpr237.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:865:11: p_SimpleMapExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SimpleMapExpr_in_p_ValueExpr6232);
- p_SimpleMapExpr238=this.p_SimpleMapExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SimpleMapExpr238.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:866:11: p_ExtensionExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExtensionExpr_in_p_ValueExpr6244);
- p_ExtensionExpr239=this.p_ExtensionExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExtensionExpr239.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SimpleMapExpr_return: (function() {
- XQueryParser.p_SimpleMapExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SimpleMapExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:869:1: p_SimpleMapExpr : p_PathExpr ( BANG p_PathExpr )* ;
- // $ANTLR start "p_SimpleMapExpr"
- p_SimpleMapExpr: function() {
- var retval = new XQueryParser.p_SimpleMapExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var BANG241 = null;
- var p_PathExpr240 = null;
- var p_PathExpr242 = null;
-
- var BANG241_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:9: ( p_PathExpr ( BANG p_PathExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:11: p_PathExpr ( BANG p_PathExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_SimpleMapExpr6269);
- p_PathExpr240=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr240.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:22: ( BANG p_PathExpr )*
- loop111:
- do {
- var alt111=2;
- var LA111_0 = this.input.LA(1);
-
- if ( (LA111_0==BANG) ) {
- alt111=1;
- }
-
-
- switch (alt111) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:23: BANG p_PathExpr
- BANG241=this.match(this.input,BANG,XQueryParser.FOLLOW_BANG_in_p_SimpleMapExpr6272); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BANG241_tree = this.adaptor.create(BANG241);
- this.adaptor.addChild(root_0, BANG241_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_SimpleMapExpr6274);
- p_PathExpr242=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr242.getTree());
-
-
- break;
-
- default :
- break loop111;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_GeneralComp_return: (function() {
- XQueryParser.p_GeneralComp_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_GeneralComp_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:874:1: p_GeneralComp : (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ ) ;
- // $ANTLR start "p_GeneralComp"
- p_GeneralComp: function() {
- var retval = new XQueryParser.p_GeneralComp_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var o = null;
-
- var o_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:9: ( (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:11: (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:11: (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ )
- var alt112=6;
- switch ( this.input.LA(1) ) {
- case EQUAL:
- alt112=1;
- break;
- case NOTEQUAL:
- alt112=2;
- break;
- case SMALLER:
- alt112=3;
- break;
- case SMALLEREQ:
- alt112=4;
- break;
- case GREATER:
- alt112=5;
- break;
- case GREATEREQ:
- alt112=6;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 112, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt112) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:12: o= EQUAL
- o=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_GeneralComp6305); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:22: o= NOTEQUAL
- o=this.match(this.input,NOTEQUAL,XQueryParser.FOLLOW_NOTEQUAL_in_p_GeneralComp6311); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:35: o= SMALLER
- o=this.match(this.input,SMALLER,XQueryParser.FOLLOW_SMALLER_in_p_GeneralComp6317); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:47: o= SMALLEREQ
- o=this.match(this.input,SMALLEREQ,XQueryParser.FOLLOW_SMALLEREQ_in_p_GeneralComp6323); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:61: o= GREATER
- o=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_GeneralComp6329); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:73: o= GREATEREQ
- o=this.match(this.input,GREATEREQ,XQueryParser.FOLLOW_GREATEREQ_in_p_GeneralComp6335); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- o_tree = this.adaptor.create(o);
- this.adaptor.addChild(root_0, o_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ao(o);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ValueComp_return: (function() {
- XQueryParser.p_ValueComp_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ValueComp_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:879:1: p_ValueComp : (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE ) ;
- // $ANTLR start "p_ValueComp"
- p_ValueComp: function() {
- var retval = new XQueryParser.p_ValueComp_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:9: ( (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:11: (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:11: (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE )
- var alt113=6;
- switch ( this.input.LA(1) ) {
- case EQ:
- alt113=1;
- break;
- case NE:
- alt113=2;
- break;
- case LT:
- alt113=3;
- break;
- case LE:
- alt113=4;
- break;
- case GT:
- alt113=5;
- break;
- case GE:
- alt113=6;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 113, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt113) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:12: k= EQ
- k=this.match(this.input,EQ,XQueryParser.FOLLOW_EQ_in_p_ValueComp6367); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:19: k= NE
- k=this.match(this.input,NE,XQueryParser.FOLLOW_NE_in_p_ValueComp6373); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:26: k= LT
- k=this.match(this.input,LT,XQueryParser.FOLLOW_LT_in_p_ValueComp6379); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:33: k= LE
- k=this.match(this.input,LE,XQueryParser.FOLLOW_LE_in_p_ValueComp6385); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:40: k= GT
- k=this.match(this.input,GT,XQueryParser.FOLLOW_GT_in_p_ValueComp6391); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:47: k= GE
- k=this.match(this.input,GE,XQueryParser.FOLLOW_GE_in_p_ValueComp6397); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NodeComp_return: (function() {
- XQueryParser.p_NodeComp_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NodeComp_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:884:1: p_NodeComp : (k= IS | SMALLER_SMALLER | GREATER_GREATER );
- // $ANTLR start "p_NodeComp"
- p_NodeComp: function() {
- var retval = new XQueryParser.p_NodeComp_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SMALLER_SMALLER243 = null;
- var GREATER_GREATER244 = null;
-
- var k_tree=null;
- var SMALLER_SMALLER243_tree=null;
- var GREATER_GREATER244_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:9: (k= IS | SMALLER_SMALLER | GREATER_GREATER )
- var alt114=3;
- switch ( this.input.LA(1) ) {
- case IS:
- alt114=1;
- break;
- case SMALLER_SMALLER:
- alt114=2;
- break;
- case GREATER_GREATER:
- alt114=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 114, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt114) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:11: k= IS
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,IS,XQueryParser.FOLLOW_IS_in_p_NodeComp6428); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:33: SMALLER_SMALLER
- root_0 = this.adaptor.nil();
-
- SMALLER_SMALLER243=this.match(this.input,SMALLER_SMALLER,XQueryParser.FOLLOW_SMALLER_SMALLER_in_p_NodeComp6434); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SMALLER_SMALLER243_tree = this.adaptor.create(SMALLER_SMALLER243);
- this.adaptor.addChild(root_0, SMALLER_SMALLER243_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:51: GREATER_GREATER
- root_0 = this.adaptor.nil();
-
- GREATER_GREATER244=this.match(this.input,GREATER_GREATER,XQueryParser.FOLLOW_GREATER_GREATER_in_p_NodeComp6438); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- GREATER_GREATER244_tree = this.adaptor.create(GREATER_GREATER244);
- this.adaptor.addChild(root_0, GREATER_GREATER244_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ValidateExpr_return: (function() {
- XQueryParser.p_ValidateExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ValidateExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:889:1: p_ValidateExpr : k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET ;
- // $ANTLR start "p_ValidateExpr"
- p_ValidateExpr: function() {
- var retval = new XQueryParser.p_ValidateExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET247 = null;
- var RBRACKET249 = null;
- var p_ValidationMode245 = null;
- var p_TypeName246 = null;
- var p_Expr248 = null;
-
- var k_tree=null;
- var LBRACKET247_tree=null;
- var RBRACKET249_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:9: (k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:11: k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,VALIDATE,XQueryParser.FOLLOW_VALIDATE_in_p_ValidateExpr6466); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:37: ( p_ValidationMode | k= TYPE p_TypeName )?
- var alt115=3;
- var LA115_0 = this.input.LA(1);
-
- if ( (LA115_0==LAX||LA115_0==STRICT) ) {
- alt115=1;
- }
- else if ( (LA115_0==TYPE) ) {
- alt115=2;
- }
- switch (alt115) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:39: p_ValidationMode
- this.pushFollow(XQueryParser.FOLLOW_p_ValidationMode_in_p_ValidateExpr6472);
- p_ValidationMode245=this.p_ValidationMode();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValidationMode245.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:58: k= TYPE p_TypeName
- k=this.match(this.input,TYPE,XQueryParser.FOLLOW_TYPE_in_p_ValidateExpr6478); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_ValidateExpr6482);
- p_TypeName246=this.p_TypeName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName246.getTree());
-
-
- break;
-
- }
-
- LBRACKET247=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_ValidateExpr6487); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET247_tree = this.adaptor.create(LBRACKET247);
- this.adaptor.addChild(root_0, LBRACKET247_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ValidateExpr6489);
- p_Expr248=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr248.getTree());
- RBRACKET249=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_ValidateExpr6492); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET249_tree = this.adaptor.create(RBRACKET249);
- this.adaptor.addChild(root_0, RBRACKET249_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ValidationMode_return: (function() {
- XQueryParser.p_ValidationMode_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ValidationMode_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:894:1: p_ValidationMode : (k= LAX | k= STRICT ) ;
- // $ANTLR start "p_ValidationMode"
- p_ValidationMode: function() {
- var retval = new XQueryParser.p_ValidationMode_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:9: ( (k= LAX | k= STRICT ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:11: (k= LAX | k= STRICT )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:11: (k= LAX | k= STRICT )
- var alt116=2;
- var LA116_0 = this.input.LA(1);
-
- if ( (LA116_0==LAX) ) {
- alt116=1;
- }
- else if ( (LA116_0==STRICT) ) {
- alt116=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 116, 0, this.input);
-
- throw nvae;
- }
- switch (alt116) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:12: k= LAX
- k=this.match(this.input,LAX,XQueryParser.FOLLOW_LAX_in_p_ValidationMode6521); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:20: k= STRICT
- k=this.match(this.input,STRICT,XQueryParser.FOLLOW_STRICT_in_p_ValidationMode6527); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ExtensionExpr_return: (function() {
- XQueryParser.p_ExtensionExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ExtensionExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:899:1: p_ExtensionExpr : ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET ;
- // $ANTLR start "p_ExtensionExpr"
- p_ExtensionExpr: function() {
- var retval = new XQueryParser.p_ExtensionExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_Pragma250 = null;
- var LBRACKET251 = null;
- var RBRACKET253 = null;
- var p_Expr252 = null;
-
- var L_Pragma250_tree=null;
- var LBRACKET251_tree=null;
- var RBRACKET253_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:9: ( ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: ( L_Pragma )+
- var cnt117=0;
- loop117:
- do {
- var alt117=2;
- var LA117_0 = this.input.LA(1);
-
- if ( (LA117_0==L_Pragma) ) {
- alt117=1;
- }
-
-
- switch (alt117) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: L_Pragma
- L_Pragma250=this.match(this.input,L_Pragma,XQueryParser.FOLLOW_L_Pragma_in_p_ExtensionExpr6556); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_Pragma250_tree = this.adaptor.create(L_Pragma250);
- this.adaptor.addChild(root_0, L_Pragma250_tree);
- }
-
-
- break;
-
- default :
- if ( cnt117 >= 1 ) {
- break loop117;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(117, this.input);
- throw eee;
- }
- cnt117++;
- } while (true);
-
- LBRACKET251=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_ExtensionExpr6559); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET251_tree = this.adaptor.create(LBRACKET251);
- this.adaptor.addChild(root_0, LBRACKET251_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:30: ( p_Expr[true,true] )?
- var alt118=2;
- var LA118_0 = this.input.LA(1);
-
- if ( ((LA118_0>=ANCESTOR && LA118_0<=QUOT_ER)||LA118_0==LPAREN||(LA118_0>=DOLLAR && LA118_0<=L_UNION_BRACKET)||LA118_0==LBRACKET||LA118_0==LSQUARE||(LA118_0>=STAR && LA118_0<=SMALLER)||(LA118_0>=SLASH && LA118_0<=SLASH_SLASH)||(LA118_0>=DOT && LA118_0<=DOT_DOT)||(LA118_0>=ATTR_SIGN && LA118_0<=Q)||(LA118_0>=APOS && LA118_0<=QUOT)||LA118_0==L_NCName||(LA118_0>=L_Pragma && LA118_0<=L_DoubleLiteral)) ) {
- alt118=1;
- }
- switch (alt118) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:30: p_Expr[true,true]
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ExtensionExpr6561);
- p_Expr252=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr252.getTree());
-
-
- break;
-
- }
-
- RBRACKET253=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_ExtensionExpr6565); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET253_tree = this.adaptor.create(RBRACKET253);
- this.adaptor.addChild(root_0, RBRACKET253_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PathExpr_return: (function() {
- XQueryParser.p_PathExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PathExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:912:1: p_PathExpr : ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr );
- // $ANTLR start "p_PathExpr"
- p_PathExpr: function() {
- var retval = new XQueryParser.p_PathExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SLASH254 = null;
- var SLASH256 = null;
- var SLASH_SLASH257 = null;
- var p_RelativePathExpr255 = null;
- var p_RelativePathExpr258 = null;
- var p_RelativePathExpr259 = null;
-
- var SLASH254_tree=null;
- var SLASH256_tree=null;
- var SLASH_SLASH257_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:9: ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr )
- var alt119=4;
- alt119 = this.dfa119.predict(this.input);
- switch (alt119) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:11: ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:41: ( SLASH p_RelativePathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:42: SLASH p_RelativePathExpr
- SLASH254=this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_p_PathExpr6608); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SLASH254_tree = this.adaptor.create(SLASH254);
- this.adaptor.addChild(root_0, SLASH254_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6610);
- p_RelativePathExpr255=this.p_RelativePathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr255.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:914:11: SLASH
- root_0 = this.adaptor.nil();
-
- SLASH256=this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_p_PathExpr6623); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SLASH256_tree = this.adaptor.create(SLASH256);
- this.adaptor.addChild(root_0, SLASH256_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:915:11: SLASH_SLASH p_RelativePathExpr
- root_0 = this.adaptor.nil();
-
- SLASH_SLASH257=this.match(this.input,SLASH_SLASH,XQueryParser.FOLLOW_SLASH_SLASH_in_p_PathExpr6635); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SLASH_SLASH257_tree = this.adaptor.create(SLASH_SLASH257);
- this.adaptor.addChild(root_0, SLASH_SLASH257_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6637);
- p_RelativePathExpr258=this.p_RelativePathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr258.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:916:11: p_RelativePathExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6649);
- p_RelativePathExpr259=this.p_RelativePathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr259.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_RelativePathExpr_return: (function() {
- XQueryParser.p_RelativePathExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_RelativePathExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:920:1: p_RelativePathExpr : p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )* ;
- // $ANTLR start "p_RelativePathExpr"
- p_RelativePathExpr: function() {
- var retval = new XQueryParser.p_RelativePathExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set261 = null;
- var p_StepExpr260 = null;
- var p_StepExpr262 = null;
-
- var set261_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:9: ( p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:11: p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StepExpr_in_p_RelativePathExpr6677);
- p_StepExpr260=this.p_StepExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StepExpr260.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:22: ( ( SLASH | SLASH_SLASH ) p_StepExpr )*
- loop120:
- do {
- var alt120=2;
- var LA120_0 = this.input.LA(1);
-
- if ( ((LA120_0>=SLASH && LA120_0<=SLASH_SLASH)) ) {
- alt120=1;
- }
-
-
- switch (alt120) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:23: ( SLASH | SLASH_SLASH ) p_StepExpr
- set261=this.input.LT(1);
- if ( (this.input.LA(1)>=SLASH && this.input.LA(1)<=SLASH_SLASH) ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set261));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_StepExpr_in_p_RelativePathExpr6688);
- p_StepExpr262=this.p_StepExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StepExpr262.getTree());
-
-
- break;
-
- default :
- break loop120;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StepExpr_return: (function() {
- XQueryParser.p_StepExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StepExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:925:1: p_StepExpr : ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep );
- // $ANTLR start "p_StepExpr"
- p_StepExpr: function() {
- var retval = new XQueryParser.p_StepExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_PostfixExpr263 = null;
- var p_PostfixExpr264 = null;
- var p_AxisStep265 = null;
- var p_PostfixExpr266 = null;
- var p_PostfixExpr267 = null;
- var p_AxisStep268 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:9: ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep )
- var alt121=6;
- alt121 = this.dfa121.predict(this.input);
- switch (alt121) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:11: ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6742);
- p_PostfixExpr263=this.p_PostfixExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr263.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:927:11: ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6856);
- p_PostfixExpr264=this.p_PostfixExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr264.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:11: ( p_KindTest )=> p_AxisStep
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AxisStep_in_p_StepExpr6874);
- p_AxisStep265=this.p_AxisStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AxisStep265.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:11: ( p_EQName LPAREN )=> p_PostfixExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6895);
- p_PostfixExpr266=this.p_PostfixExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr266.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:11: ( p_PrimaryExpr )=> p_PostfixExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6913);
- p_PostfixExpr267=this.p_PostfixExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr267.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:935:11: p_AxisStep
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AxisStep_in_p_StepExpr6925);
- p_AxisStep268=this.p_AxisStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AxisStep268.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AxisStep_return: (function() {
- XQueryParser.p_AxisStep_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AxisStep_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:939:1: p_AxisStep : ( p_ReverseStep | p_ForwardStep ) p_PredicateList ;
- // $ANTLR start "p_AxisStep"
- p_AxisStep: function() {
- var retval = new XQueryParser.p_AxisStep_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ReverseStep269 = null;
- var p_ForwardStep270 = null;
- var p_PredicateList271 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:9: ( ( p_ReverseStep | p_ForwardStep ) p_PredicateList )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:11: ( p_ReverseStep | p_ForwardStep ) p_PredicateList
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:11: ( p_ReverseStep | p_ForwardStep )
- var alt122=2;
- switch ( this.input.LA(1) ) {
- case PARENT:
- var LA122_1 = this.input.LA(2);
-
- if ( (LA122_1==COLON_COLON) ) {
- alt122=1;
- }
- else if ( (LA122_1==EOF||(LA122_1>=AND && LA122_1<=AT)||(LA122_1>=BY && LA122_1<=CASTABLE)||LA122_1==COLLATION||LA122_1==DEFAULT||(LA122_1>=DESCENDING && LA122_1<=DIV)||LA122_1==EMPTY||LA122_1==EQ||LA122_1==EXCEPT||LA122_1==FOR||LA122_1==GE||(LA122_1>=GT && LA122_1<=IDIV)||(LA122_1>=INSTANCE && LA122_1<=IS)||LA122_1==LE||(LA122_1>=LET && LA122_1<=MOD)||LA122_1==NE||(LA122_1>=OR && LA122_1<=ORDER)||(LA122_1>=RETURN && LA122_1<=SATISFIES)||LA122_1==STABLE||(LA122_1>=TO && LA122_1<=TREAT)||LA122_1==UNION||LA122_1==WHERE||LA122_1==COUNT||(LA122_1>=END && LA122_1<=GROUP)||LA122_1==ONLY||LA122_1==START||(LA122_1>=AFTER && LA122_1<=BEFORE)||LA122_1==INTO||LA122_1==MODIFY||LA122_1==WITH||LA122_1==CONTAINS||LA122_1==PARAGRAPHS||LA122_1==SENTENCES||LA122_1==TIMES||LA122_1==WORDS||LA122_1==CONCAT||LA122_1==RPAREN||LA122_1==R_UNION_BRACKET||(LA122_1>=RBRACKET && LA122_1<=EQUAL)||LA122_1==NOTEQUAL||LA122_1==COMMA||(LA122_1>=STAR && LA122_1<=BANG)||LA122_1==COLON||(LA122_1>=SEMICOLON && LA122_1<=VBAR)) ) {
- alt122=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 1, this.input);
-
- throw nvae;
- }
- break;
- case ANCESTOR:
- var LA122_2 = this.input.LA(2);
-
- if ( (LA122_2==COLON_COLON) ) {
- alt122=1;
- }
- else if ( (LA122_2==EOF||(LA122_2>=AND && LA122_2<=AT)||(LA122_2>=BY && LA122_2<=CASTABLE)||LA122_2==COLLATION||LA122_2==DEFAULT||(LA122_2>=DESCENDING && LA122_2<=DIV)||LA122_2==EMPTY||LA122_2==EQ||LA122_2==EXCEPT||LA122_2==FOR||LA122_2==GE||(LA122_2>=GT && LA122_2<=IDIV)||(LA122_2>=INSTANCE && LA122_2<=IS)||LA122_2==LE||(LA122_2>=LET && LA122_2<=MOD)||LA122_2==NE||(LA122_2>=OR && LA122_2<=ORDER)||(LA122_2>=RETURN && LA122_2<=SATISFIES)||LA122_2==STABLE||(LA122_2>=TO && LA122_2<=TREAT)||LA122_2==UNION||LA122_2==WHERE||LA122_2==COUNT||(LA122_2>=END && LA122_2<=GROUP)||LA122_2==ONLY||LA122_2==START||(LA122_2>=AFTER && LA122_2<=BEFORE)||LA122_2==INTO||LA122_2==MODIFY||LA122_2==WITH||LA122_2==CONTAINS||LA122_2==PARAGRAPHS||LA122_2==SENTENCES||LA122_2==TIMES||LA122_2==WORDS||LA122_2==CONCAT||LA122_2==RPAREN||LA122_2==R_UNION_BRACKET||(LA122_2>=RBRACKET && LA122_2<=EQUAL)||LA122_2==NOTEQUAL||LA122_2==COMMA||(LA122_2>=STAR && LA122_2<=BANG)||LA122_2==COLON||(LA122_2>=SEMICOLON && LA122_2<=VBAR)) ) {
- alt122=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 2, this.input);
-
- throw nvae;
- }
- break;
- case PRECEDING_SIBLING:
- var LA122_3 = this.input.LA(2);
-
- if ( (LA122_3==COLON_COLON) ) {
- alt122=1;
- }
- else if ( (LA122_3==EOF||(LA122_3>=AND && LA122_3<=AT)||(LA122_3>=BY && LA122_3<=CASTABLE)||LA122_3==COLLATION||LA122_3==DEFAULT||(LA122_3>=DESCENDING && LA122_3<=DIV)||LA122_3==EMPTY||LA122_3==EQ||LA122_3==EXCEPT||LA122_3==FOR||LA122_3==GE||(LA122_3>=GT && LA122_3<=IDIV)||(LA122_3>=INSTANCE && LA122_3<=IS)||LA122_3==LE||(LA122_3>=LET && LA122_3<=MOD)||LA122_3==NE||(LA122_3>=OR && LA122_3<=ORDER)||(LA122_3>=RETURN && LA122_3<=SATISFIES)||LA122_3==STABLE||(LA122_3>=TO && LA122_3<=TREAT)||LA122_3==UNION||LA122_3==WHERE||LA122_3==COUNT||(LA122_3>=END && LA122_3<=GROUP)||LA122_3==ONLY||LA122_3==START||(LA122_3>=AFTER && LA122_3<=BEFORE)||LA122_3==INTO||LA122_3==MODIFY||LA122_3==WITH||LA122_3==CONTAINS||LA122_3==PARAGRAPHS||LA122_3==SENTENCES||LA122_3==TIMES||LA122_3==WORDS||LA122_3==CONCAT||LA122_3==RPAREN||LA122_3==R_UNION_BRACKET||(LA122_3>=RBRACKET && LA122_3<=EQUAL)||LA122_3==NOTEQUAL||LA122_3==COMMA||(LA122_3>=STAR && LA122_3<=BANG)||LA122_3==COLON||(LA122_3>=SEMICOLON && LA122_3<=VBAR)) ) {
- alt122=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 3, this.input);
-
- throw nvae;
- }
- break;
- case PRECEDING:
- var LA122_4 = this.input.LA(2);
-
- if ( (LA122_4==COLON_COLON) ) {
- alt122=1;
- }
- else if ( (LA122_4==EOF||(LA122_4>=AND && LA122_4<=AT)||(LA122_4>=BY && LA122_4<=CASTABLE)||LA122_4==COLLATION||LA122_4==DEFAULT||(LA122_4>=DESCENDING && LA122_4<=DIV)||LA122_4==EMPTY||LA122_4==EQ||LA122_4==EXCEPT||LA122_4==FOR||LA122_4==GE||(LA122_4>=GT && LA122_4<=IDIV)||(LA122_4>=INSTANCE && LA122_4<=IS)||LA122_4==LE||(LA122_4>=LET && LA122_4<=MOD)||LA122_4==NE||(LA122_4>=OR && LA122_4<=ORDER)||(LA122_4>=RETURN && LA122_4<=SATISFIES)||LA122_4==STABLE||(LA122_4>=TO && LA122_4<=TREAT)||LA122_4==UNION||LA122_4==WHERE||LA122_4==COUNT||(LA122_4>=END && LA122_4<=GROUP)||LA122_4==ONLY||LA122_4==START||(LA122_4>=AFTER && LA122_4<=BEFORE)||LA122_4==INTO||LA122_4==MODIFY||LA122_4==WITH||LA122_4==CONTAINS||LA122_4==PARAGRAPHS||LA122_4==SENTENCES||LA122_4==TIMES||LA122_4==WORDS||LA122_4==CONCAT||LA122_4==RPAREN||LA122_4==R_UNION_BRACKET||(LA122_4>=RBRACKET && LA122_4<=EQUAL)||LA122_4==NOTEQUAL||LA122_4==COMMA||(LA122_4>=STAR && LA122_4<=BANG)||LA122_4==COLON||(LA122_4>=SEMICOLON && LA122_4<=VBAR)) ) {
- alt122=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 4, this.input);
-
- throw nvae;
- }
- break;
- case ANCESTOR_OR_SELF:
- var LA122_5 = this.input.LA(2);
-
- if ( (LA122_5==COLON_COLON) ) {
- alt122=1;
- }
- else if ( (LA122_5==EOF||(LA122_5>=AND && LA122_5<=AT)||(LA122_5>=BY && LA122_5<=CASTABLE)||LA122_5==COLLATION||LA122_5==DEFAULT||(LA122_5>=DESCENDING && LA122_5<=DIV)||LA122_5==EMPTY||LA122_5==EQ||LA122_5==EXCEPT||LA122_5==FOR||LA122_5==GE||(LA122_5>=GT && LA122_5<=IDIV)||(LA122_5>=INSTANCE && LA122_5<=IS)||LA122_5==LE||(LA122_5>=LET && LA122_5<=MOD)||LA122_5==NE||(LA122_5>=OR && LA122_5<=ORDER)||(LA122_5>=RETURN && LA122_5<=SATISFIES)||LA122_5==STABLE||(LA122_5>=TO && LA122_5<=TREAT)||LA122_5==UNION||LA122_5==WHERE||LA122_5==COUNT||(LA122_5>=END && LA122_5<=GROUP)||LA122_5==ONLY||LA122_5==START||(LA122_5>=AFTER && LA122_5<=BEFORE)||LA122_5==INTO||LA122_5==MODIFY||LA122_5==WITH||LA122_5==CONTAINS||LA122_5==PARAGRAPHS||LA122_5==SENTENCES||LA122_5==TIMES||LA122_5==WORDS||LA122_5==CONCAT||LA122_5==RPAREN||LA122_5==R_UNION_BRACKET||(LA122_5>=RBRACKET && LA122_5<=EQUAL)||LA122_5==NOTEQUAL||LA122_5==COMMA||(LA122_5>=STAR && LA122_5<=BANG)||LA122_5==COLON||(LA122_5>=SEMICOLON && LA122_5<=VBAR)) ) {
- alt122=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 5, this.input);
-
- throw nvae;
- }
- break;
- case DOT_DOT:
- alt122=1;
- break;
- case AND:
- case AS:
- case ASCENDING:
- case AT:
- case ATTRIBUTE:
- case BASE_URI:
- case BOUNDARY_SPACE:
- case BY:
- case CASE:
- case CAST:
- case CASTABLE:
- case CHILD:
- case COLLATION:
- case COMMENT:
- case CONSTRUCTION:
- case COPY_NAMESPACES:
- case DECLARE:
- case DEFAULT:
- case DESCENDANT:
- case DESCENDANT_OR_SELF:
- case DESCENDING:
- case DIV:
- case DOCUMENT:
- case DOCUMENT_NODE:
- case ELEMENT:
- case ELSE:
- case EMPTY:
- case EMPTY_SEQUENCE:
- case ENCODING:
- case EQ:
- case EVERY:
- case EXCEPT:
- case EXTERNAL:
- case FOLLOWING:
- case FOLLOWING_SIBLING:
- case FOR:
- case FUNCTION:
- case GE:
- case GREATEST:
- case GT:
- case IDIV:
- case IF:
- case IMPORT:
- case IN:
- case INHERIT:
- case INSTANCE:
- case INTERSECT:
- case IS:
- case ITEM:
- case LAX:
- case LE:
- case LEAST:
- case LET:
- case LT:
- case MOD:
- case MODULE:
- case NAMESPACE:
- case NE:
- case NO_INHERIT:
- case NO_PRESERVE:
- case NODE:
- case JSON:
- case OF:
- case OPTION:
- case OR:
- case ORDER:
- case ORDERED:
- case ORDERING:
- case PRESERVE:
- case PROCESSING_INSTRUCTION:
- case STRUCTURED_ITEM:
- case JSON_ITEM:
- case OBJECT:
- case ARRAY:
- case RETURN:
- case SATISFIES:
- case SCHEMA:
- case SCHEMA_ATTRIBUTE:
- case SCHEMA_ELEMENT:
- case SELF:
- case SOME:
- case STABLE:
- case STRICT:
- case STRIP:
- case TEXT:
- case THEN:
- case TO:
- case TREAT:
- case TYPESWITCH:
- case UNION:
- case UNORDERED:
- case VALIDATE:
- case VARIABLE:
- case VERSION:
- case WHERE:
- case XQUERY:
- case ALLOWING:
- case CATCH:
- case CONTEXT:
- case COUNT:
- case DECIMAL_FORMAT:
- case DECIMAL_SEPARATOR:
- case DIGIT:
- case END:
- case GROUP:
- case GROUPING_SEPARATOR:
- case INFINITY:
- case MINUS_SIGN:
- case NAMESPACE_NODE:
- case NAN:
- case NEXT:
- case ONLY:
- case PATTERN_SEPARATOR:
- case PERCENT:
- case PER_MILLE:
- case PREVIOUS:
- case SLIDING:
- case START:
- case SWITCH:
- case TRY:
- case TUMBLING:
- case TYPE:
- case WHEN:
- case WINDOW:
- case ZERO_DIGIT:
- case AFTER:
- case BEFORE:
- case COPY:
- case DELETE:
- case FIRST:
- case INSERT:
- case INTO:
- case POSITION:
- case APPEND:
- case LAST:
- case MODIFY:
- case NODES:
- case RENAME:
- case REPLACE:
- case REVALIDATION:
- case SKIP:
- case VALUE:
- case WITH:
- case ALL:
- case ANY:
- case CONTAINS:
- case CONTENT:
- case DIACRITICS:
- case DIFFERENT:
- case DISTANCE:
- case ENTIRE:
- case EXACTLY:
- case FROM:
- case FT_OPTION:
- case FTAND:
- case FTNOT:
- case FTOR:
- case INSENSITIVE:
- case LANGUAGE:
- case LEVELS:
- case LOWERCASE:
- case MOST:
- case NO:
- case NOT:
- case OCCURS:
- case PARAGRAPH:
- case PARAGRAPHS:
- case PHRASE:
- case RELATIONSHIP:
- case SAME:
- case SCORE:
- case SENSITIVE:
- case SENTENCE:
- case SENTENCES:
- case STEMMING:
- case STOP:
- case THESAURUS:
- case TIMES:
- case UPPERCASE:
- case USING:
- case WEIGHT:
- case WILDCARDS:
- case WITHOUT:
- case WORD:
- case WORDS:
- case BREAK:
- case CONTINUE:
- case EXIT:
- case LOOP:
- case RETURNING:
- case WHILE:
- case CHECK:
- case COLLECTION:
- case CONSTRAINT:
- case FOREACH:
- case FOREIGN:
- case INDEX:
- case INTEGRITY:
- case KEY:
- case ON:
- case UNIQUE:
- case AMP_ER:
- case APOS_ER:
- case QUOT_ER:
- case STAR:
- case ATTR_SIGN:
- case Q:
- case L_NCName:
- alt122=2;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 122, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt122) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:12: p_ReverseStep
- this.pushFollow(XQueryParser.FOLLOW_p_ReverseStep_in_p_AxisStep6952);
- p_ReverseStep269=this.p_ReverseStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReverseStep269.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:28: p_ForwardStep
- this.pushFollow(XQueryParser.FOLLOW_p_ForwardStep_in_p_AxisStep6956);
- p_ForwardStep270=this.p_ForwardStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForwardStep270.getTree());
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_PredicateList_in_p_AxisStep6959);
- p_PredicateList271=this.p_PredicateList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PredicateList271.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ForwardStep_return: (function() {
- XQueryParser.p_ForwardStep_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ForwardStep_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:944:1: p_ForwardStep : ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep );
- // $ANTLR start "p_ForwardStep"
- p_ForwardStep: function() {
- var retval = new XQueryParser.p_ForwardStep_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ForwardAxis272 = null;
- var p_NodeTest273 = null;
- var p_AbbrevForwardStep274 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:945:9: ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep )
- var alt123=2;
- alt123 = this.dfa123.predict(this.input);
- switch (alt123) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:945:11: p_ForwardAxis p_NodeTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ForwardAxis_in_p_ForwardStep6985);
- p_ForwardAxis272=this.p_ForwardAxis();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForwardAxis272.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_ForwardStep6987);
- p_NodeTest273=this.p_NodeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest273.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:946:11: p_AbbrevForwardStep
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AbbrevForwardStep_in_p_ForwardStep6999);
- p_AbbrevForwardStep274=this.p_AbbrevForwardStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AbbrevForwardStep274.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ForwardAxis_return: (function() {
- XQueryParser.p_ForwardAxis_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ForwardAxis_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:950:1: p_ForwardAxis : ( CHILD COLON_COLON | DESCENDANT COLON_COLON | ATTRIBUTE COLON_COLON | SELF COLON_COLON | DESCENDANT_OR_SELF COLON_COLON | FOLLOWING_SIBLING COLON_COLON | FOLLOWING COLON_COLON );
- // $ANTLR start "p_ForwardAxis"
- p_ForwardAxis: function() {
- var retval = new XQueryParser.p_ForwardAxis_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var CHILD275 = null;
- var COLON_COLON276 = null;
- var DESCENDANT277 = null;
- var COLON_COLON278 = null;
- var ATTRIBUTE279 = null;
- var COLON_COLON280 = null;
- var SELF281 = null;
- var COLON_COLON282 = null;
- var DESCENDANT_OR_SELF283 = null;
- var COLON_COLON284 = null;
- var FOLLOWING_SIBLING285 = null;
- var COLON_COLON286 = null;
- var FOLLOWING287 = null;
- var COLON_COLON288 = null;
-
- var CHILD275_tree=null;
- var COLON_COLON276_tree=null;
- var DESCENDANT277_tree=null;
- var COLON_COLON278_tree=null;
- var ATTRIBUTE279_tree=null;
- var COLON_COLON280_tree=null;
- var SELF281_tree=null;
- var COLON_COLON282_tree=null;
- var DESCENDANT_OR_SELF283_tree=null;
- var COLON_COLON284_tree=null;
- var FOLLOWING_SIBLING285_tree=null;
- var COLON_COLON286_tree=null;
- var FOLLOWING287_tree=null;
- var COLON_COLON288_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:951:9: ( CHILD COLON_COLON | DESCENDANT COLON_COLON | ATTRIBUTE COLON_COLON | SELF COLON_COLON | DESCENDANT_OR_SELF COLON_COLON | FOLLOWING_SIBLING COLON_COLON | FOLLOWING COLON_COLON )
- var alt124=7;
- switch ( this.input.LA(1) ) {
- case CHILD:
- alt124=1;
- break;
- case DESCENDANT:
- alt124=2;
- break;
- case ATTRIBUTE:
- alt124=3;
- break;
- case SELF:
- alt124=4;
- break;
- case DESCENDANT_OR_SELF:
- alt124=5;
- break;
- case FOLLOWING_SIBLING:
- alt124=6;
- break;
- case FOLLOWING:
- alt124=7;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 124, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt124) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:951:11: CHILD COLON_COLON
- root_0 = this.adaptor.nil();
-
- CHILD275=this.match(this.input,CHILD,XQueryParser.FOLLOW_CHILD_in_p_ForwardAxis7025); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- CHILD275_tree = this.adaptor.create(CHILD275);
- this.adaptor.addChild(root_0, CHILD275_tree);
- }
- COLON_COLON276=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7027); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON276_tree = this.adaptor.create(COLON_COLON276);
- this.adaptor.addChild(root_0, COLON_COLON276_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:952:11: DESCENDANT COLON_COLON
- root_0 = this.adaptor.nil();
-
- DESCENDANT277=this.match(this.input,DESCENDANT,XQueryParser.FOLLOW_DESCENDANT_in_p_ForwardAxis7039); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DESCENDANT277_tree = this.adaptor.create(DESCENDANT277);
- this.adaptor.addChild(root_0, DESCENDANT277_tree);
- }
- COLON_COLON278=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7041); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON278_tree = this.adaptor.create(COLON_COLON278);
- this.adaptor.addChild(root_0, COLON_COLON278_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:953:11: ATTRIBUTE COLON_COLON
- root_0 = this.adaptor.nil();
-
- ATTRIBUTE279=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_p_ForwardAxis7053); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ATTRIBUTE279_tree = this.adaptor.create(ATTRIBUTE279);
- this.adaptor.addChild(root_0, ATTRIBUTE279_tree);
- }
- COLON_COLON280=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7055); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON280_tree = this.adaptor.create(COLON_COLON280);
- this.adaptor.addChild(root_0, COLON_COLON280_tree);
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:954:11: SELF COLON_COLON
- root_0 = this.adaptor.nil();
-
- SELF281=this.match(this.input,SELF,XQueryParser.FOLLOW_SELF_in_p_ForwardAxis7067); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SELF281_tree = this.adaptor.create(SELF281);
- this.adaptor.addChild(root_0, SELF281_tree);
- }
- COLON_COLON282=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7069); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON282_tree = this.adaptor.create(COLON_COLON282);
- this.adaptor.addChild(root_0, COLON_COLON282_tree);
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:955:11: DESCENDANT_OR_SELF COLON_COLON
- root_0 = this.adaptor.nil();
-
- DESCENDANT_OR_SELF283=this.match(this.input,DESCENDANT_OR_SELF,XQueryParser.FOLLOW_DESCENDANT_OR_SELF_in_p_ForwardAxis7081); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DESCENDANT_OR_SELF283_tree = this.adaptor.create(DESCENDANT_OR_SELF283);
- this.adaptor.addChild(root_0, DESCENDANT_OR_SELF283_tree);
- }
- COLON_COLON284=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7083); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON284_tree = this.adaptor.create(COLON_COLON284);
- this.adaptor.addChild(root_0, COLON_COLON284_tree);
- }
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:956:11: FOLLOWING_SIBLING COLON_COLON
- root_0 = this.adaptor.nil();
-
- FOLLOWING_SIBLING285=this.match(this.input,FOLLOWING_SIBLING,XQueryParser.FOLLOW_FOLLOWING_SIBLING_in_p_ForwardAxis7095); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- FOLLOWING_SIBLING285_tree = this.adaptor.create(FOLLOWING_SIBLING285);
- this.adaptor.addChild(root_0, FOLLOWING_SIBLING285_tree);
- }
- COLON_COLON286=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7097); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON286_tree = this.adaptor.create(COLON_COLON286);
- this.adaptor.addChild(root_0, COLON_COLON286_tree);
- }
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:957:11: FOLLOWING COLON_COLON
- root_0 = this.adaptor.nil();
-
- FOLLOWING287=this.match(this.input,FOLLOWING,XQueryParser.FOLLOW_FOLLOWING_in_p_ForwardAxis7109); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- FOLLOWING287_tree = this.adaptor.create(FOLLOWING287);
- this.adaptor.addChild(root_0, FOLLOWING287_tree);
- }
- COLON_COLON288=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7111); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON288_tree = this.adaptor.create(COLON_COLON288);
- this.adaptor.addChild(root_0, COLON_COLON288_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AbbrevForwardStep_return: (function() {
- XQueryParser.p_AbbrevForwardStep_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AbbrevForwardStep_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:961:1: p_AbbrevForwardStep : ( ATTR_SIGN )? p_NodeTest ;
- // $ANTLR start "p_AbbrevForwardStep"
- p_AbbrevForwardStep: function() {
- var retval = new XQueryParser.p_AbbrevForwardStep_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ATTR_SIGN289 = null;
- var p_NodeTest290 = null;
-
- var ATTR_SIGN289_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:9: ( ( ATTR_SIGN )? p_NodeTest )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ( ATTR_SIGN )? p_NodeTest
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ( ATTR_SIGN )?
- var alt125=2;
- var LA125_0 = this.input.LA(1);
-
- if ( (LA125_0==ATTR_SIGN) ) {
- alt125=1;
- }
- switch (alt125) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ATTR_SIGN
- ATTR_SIGN289=this.match(this.input,ATTR_SIGN,XQueryParser.FOLLOW_ATTR_SIGN_in_p_AbbrevForwardStep7137); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ATTR_SIGN289_tree = this.adaptor.create(ATTR_SIGN289);
- this.adaptor.addChild(root_0, ATTR_SIGN289_tree);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_AbbrevForwardStep7140);
- p_NodeTest290=this.p_NodeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest290.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ReverseStep_return: (function() {
- XQueryParser.p_ReverseStep_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ReverseStep_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:966:1: p_ReverseStep : ( p_ReverseAxis p_NodeTest | p_AbbrevReverseStep );
- // $ANTLR start "p_ReverseStep"
- p_ReverseStep: function() {
- var retval = new XQueryParser.p_ReverseStep_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ReverseAxis291 = null;
- var p_NodeTest292 = null;
- var p_AbbrevReverseStep293 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:967:9: ( p_ReverseAxis p_NodeTest | p_AbbrevReverseStep )
- var alt126=2;
- var LA126_0 = this.input.LA(1);
-
- if ( ((LA126_0>=ANCESTOR && LA126_0<=ANCESTOR_OR_SELF)||(LA126_0>=PARENT && LA126_0<=PRECEDING_SIBLING)) ) {
- alt126=1;
- }
- else if ( (LA126_0==DOT_DOT) ) {
- alt126=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 126, 0, this.input);
-
- throw nvae;
- }
- switch (alt126) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:967:11: p_ReverseAxis p_NodeTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ReverseAxis_in_p_ReverseStep7166);
- p_ReverseAxis291=this.p_ReverseAxis();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReverseAxis291.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_ReverseStep7168);
- p_NodeTest292=this.p_NodeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest292.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:968:11: p_AbbrevReverseStep
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AbbrevReverseStep_in_p_ReverseStep7180);
- p_AbbrevReverseStep293=this.p_AbbrevReverseStep();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AbbrevReverseStep293.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ReverseAxis_return: (function() {
- XQueryParser.p_ReverseAxis_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ReverseAxis_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:972:1: p_ReverseAxis : ( PARENT COLON_COLON | ANCESTOR COLON_COLON | PRECEDING_SIBLING COLON_COLON | PRECEDING COLON_COLON | ANCESTOR_OR_SELF COLON_COLON );
- // $ANTLR start "p_ReverseAxis"
- p_ReverseAxis: function() {
- var retval = new XQueryParser.p_ReverseAxis_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var PARENT294 = null;
- var COLON_COLON295 = null;
- var ANCESTOR296 = null;
- var COLON_COLON297 = null;
- var PRECEDING_SIBLING298 = null;
- var COLON_COLON299 = null;
- var PRECEDING300 = null;
- var COLON_COLON301 = null;
- var ANCESTOR_OR_SELF302 = null;
- var COLON_COLON303 = null;
-
- var PARENT294_tree=null;
- var COLON_COLON295_tree=null;
- var ANCESTOR296_tree=null;
- var COLON_COLON297_tree=null;
- var PRECEDING_SIBLING298_tree=null;
- var COLON_COLON299_tree=null;
- var PRECEDING300_tree=null;
- var COLON_COLON301_tree=null;
- var ANCESTOR_OR_SELF302_tree=null;
- var COLON_COLON303_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:973:9: ( PARENT COLON_COLON | ANCESTOR COLON_COLON | PRECEDING_SIBLING COLON_COLON | PRECEDING COLON_COLON | ANCESTOR_OR_SELF COLON_COLON )
- var alt127=5;
- switch ( this.input.LA(1) ) {
- case PARENT:
- alt127=1;
- break;
- case ANCESTOR:
- alt127=2;
- break;
- case PRECEDING_SIBLING:
- alt127=3;
- break;
- case PRECEDING:
- alt127=4;
- break;
- case ANCESTOR_OR_SELF:
- alt127=5;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 127, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt127) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:973:11: PARENT COLON_COLON
- root_0 = this.adaptor.nil();
-
- PARENT294=this.match(this.input,PARENT,XQueryParser.FOLLOW_PARENT_in_p_ReverseAxis7206); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- PARENT294_tree = this.adaptor.create(PARENT294);
- this.adaptor.addChild(root_0, PARENT294_tree);
- }
- COLON_COLON295=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7208); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON295_tree = this.adaptor.create(COLON_COLON295);
- this.adaptor.addChild(root_0, COLON_COLON295_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:974:11: ANCESTOR COLON_COLON
- root_0 = this.adaptor.nil();
-
- ANCESTOR296=this.match(this.input,ANCESTOR,XQueryParser.FOLLOW_ANCESTOR_in_p_ReverseAxis7220); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ANCESTOR296_tree = this.adaptor.create(ANCESTOR296);
- this.adaptor.addChild(root_0, ANCESTOR296_tree);
- }
- COLON_COLON297=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7222); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON297_tree = this.adaptor.create(COLON_COLON297);
- this.adaptor.addChild(root_0, COLON_COLON297_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:975:11: PRECEDING_SIBLING COLON_COLON
- root_0 = this.adaptor.nil();
-
- PRECEDING_SIBLING298=this.match(this.input,PRECEDING_SIBLING,XQueryParser.FOLLOW_PRECEDING_SIBLING_in_p_ReverseAxis7234); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- PRECEDING_SIBLING298_tree = this.adaptor.create(PRECEDING_SIBLING298);
- this.adaptor.addChild(root_0, PRECEDING_SIBLING298_tree);
- }
- COLON_COLON299=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7236); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON299_tree = this.adaptor.create(COLON_COLON299);
- this.adaptor.addChild(root_0, COLON_COLON299_tree);
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:976:11: PRECEDING COLON_COLON
- root_0 = this.adaptor.nil();
-
- PRECEDING300=this.match(this.input,PRECEDING,XQueryParser.FOLLOW_PRECEDING_in_p_ReverseAxis7248); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- PRECEDING300_tree = this.adaptor.create(PRECEDING300);
- this.adaptor.addChild(root_0, PRECEDING300_tree);
- }
- COLON_COLON301=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7250); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON301_tree = this.adaptor.create(COLON_COLON301);
- this.adaptor.addChild(root_0, COLON_COLON301_tree);
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:977:11: ANCESTOR_OR_SELF COLON_COLON
- root_0 = this.adaptor.nil();
-
- ANCESTOR_OR_SELF302=this.match(this.input,ANCESTOR_OR_SELF,XQueryParser.FOLLOW_ANCESTOR_OR_SELF_in_p_ReverseAxis7262); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ANCESTOR_OR_SELF302_tree = this.adaptor.create(ANCESTOR_OR_SELF302);
- this.adaptor.addChild(root_0, ANCESTOR_OR_SELF302_tree);
- }
- COLON_COLON303=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7264); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON_COLON303_tree = this.adaptor.create(COLON_COLON303);
- this.adaptor.addChild(root_0, COLON_COLON303_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AbbrevReverseStep_return: (function() {
- XQueryParser.p_AbbrevReverseStep_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AbbrevReverseStep_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:981:1: p_AbbrevReverseStep : DOT_DOT ;
- // $ANTLR start "p_AbbrevReverseStep"
- p_AbbrevReverseStep: function() {
- var retval = new XQueryParser.p_AbbrevReverseStep_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var DOT_DOT304 = null;
-
- var DOT_DOT304_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:982:9: ( DOT_DOT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:982:11: DOT_DOT
- root_0 = this.adaptor.nil();
-
- DOT_DOT304=this.match(this.input,DOT_DOT,XQueryParser.FOLLOW_DOT_DOT_in_p_AbbrevReverseStep7290); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DOT_DOT304_tree = this.adaptor.create(DOT_DOT304);
- this.adaptor.addChild(root_0, DOT_DOT304_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NodeTest_return: (function() {
- XQueryParser.p_NodeTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NodeTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:986:1: p_NodeTest : ( p_KindTest | p_NameTest );
- // $ANTLR start "p_NodeTest"
- p_NodeTest: function() {
- var retval = new XQueryParser.p_NodeTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_KindTest305 = null;
- var p_NameTest306 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:9: ( p_KindTest | p_NameTest )
- var alt128=2;
- alt128 = this.dfa128.predict(this.input);
- switch (alt128) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:11: p_KindTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_NodeTest7316);
- p_KindTest305=this.p_KindTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_KindTest305.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:24: p_NameTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_NodeTest7320);
- p_NameTest306=this.p_NameTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest306.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NameTest_return: (function() {
- XQueryParser.p_NameTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NameTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:991:1: p_NameTest : ( p_EQName | p_Wildcard );
- // $ANTLR start "p_NameTest"
- p_NameTest: function() {
- var retval = new XQueryParser.p_NameTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName307 = null;
- var p_Wildcard308 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:9: ( p_EQName | p_Wildcard )
- var alt129=2;
- alt129 = this.dfa129.predict(this.input);
- switch (alt129) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_NameTest7346);
- p_EQName307=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName307.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:22: p_Wildcard
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Wildcard_in_p_NameTest7350);
- p_Wildcard308=this.p_Wildcard();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Wildcard308.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Wildcard_return: (function() {
- XQueryParser.p_Wildcard_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Wildcard_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:999:1: p_Wildcard : ( STAR ( COLON p_NCName )? | p_NCName COLON STAR | p_BracedURILiteral STAR );
- // $ANTLR start "p_Wildcard"
- p_Wildcard: function() {
- var retval = new XQueryParser.p_Wildcard_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var STAR309 = null;
- var COLON310 = null;
- var COLON313 = null;
- var STAR314 = null;
- var STAR316 = null;
- var p_NCName311 = null;
- var p_NCName312 = null;
- var p_BracedURILiteral315 = null;
-
- var STAR309_tree=null;
- var COLON310_tree=null;
- var COLON313_tree=null;
- var STAR314_tree=null;
- var STAR316_tree=null;
-
- this.setWsExplicit(true);
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:9: ( STAR ( COLON p_NCName )? | p_NCName COLON STAR | p_BracedURILiteral STAR )
- var alt131=3;
- switch ( this.input.LA(1) ) {
- case STAR:
- alt131=1;
- break;
- case ANCESTOR:
- case ANCESTOR_OR_SELF:
- case AND:
- case AS:
- case ASCENDING:
- case AT:
- case ATTRIBUTE:
- case BASE_URI:
- case BOUNDARY_SPACE:
- case BY:
- case CASE:
- case CAST:
- case CASTABLE:
- case CHILD:
- case COLLATION:
- case COMMENT:
- case CONSTRUCTION:
- case COPY_NAMESPACES:
- case DECLARE:
- case DEFAULT:
- case DESCENDANT:
- case DESCENDANT_OR_SELF:
- case DESCENDING:
- case DIV:
- case DOCUMENT:
- case DOCUMENT_NODE:
- case ELEMENT:
- case ELSE:
- case EMPTY:
- case EMPTY_SEQUENCE:
- case ENCODING:
- case EQ:
- case EVERY:
- case EXCEPT:
- case EXTERNAL:
- case FOLLOWING:
- case FOLLOWING_SIBLING:
- case FOR:
- case FUNCTION:
- case GE:
- case GREATEST:
- case GT:
- case IDIV:
- case IF:
- case IMPORT:
- case IN:
- case INHERIT:
- case INSTANCE:
- case INTERSECT:
- case IS:
- case ITEM:
- case LAX:
- case LE:
- case LEAST:
- case LET:
- case LT:
- case MOD:
- case MODULE:
- case NAMESPACE:
- case NE:
- case NO_INHERIT:
- case NO_PRESERVE:
- case NODE:
- case JSON:
- case OF:
- case OPTION:
- case OR:
- case ORDER:
- case ORDERED:
- case ORDERING:
- case PARENT:
- case PRECEDING:
- case PRECEDING_SIBLING:
- case PRESERVE:
- case PROCESSING_INSTRUCTION:
- case STRUCTURED_ITEM:
- case JSON_ITEM:
- case OBJECT:
- case ARRAY:
- case RETURN:
- case SATISFIES:
- case SCHEMA:
- case SCHEMA_ATTRIBUTE:
- case SCHEMA_ELEMENT:
- case SELF:
- case SOME:
- case STABLE:
- case STRICT:
- case STRIP:
- case TEXT:
- case THEN:
- case TO:
- case TREAT:
- case TYPESWITCH:
- case UNION:
- case UNORDERED:
- case VALIDATE:
- case VARIABLE:
- case VERSION:
- case WHERE:
- case XQUERY:
- case ALLOWING:
- case CATCH:
- case CONTEXT:
- case COUNT:
- case DECIMAL_FORMAT:
- case DECIMAL_SEPARATOR:
- case DIGIT:
- case END:
- case GROUP:
- case GROUPING_SEPARATOR:
- case INFINITY:
- case MINUS_SIGN:
- case NAMESPACE_NODE:
- case NAN:
- case NEXT:
- case ONLY:
- case PATTERN_SEPARATOR:
- case PERCENT:
- case PER_MILLE:
- case PREVIOUS:
- case SLIDING:
- case START:
- case SWITCH:
- case TRY:
- case TUMBLING:
- case TYPE:
- case WHEN:
- case WINDOW:
- case ZERO_DIGIT:
- case AFTER:
- case BEFORE:
- case COPY:
- case DELETE:
- case FIRST:
- case INSERT:
- case INTO:
- case POSITION:
- case APPEND:
- case LAST:
- case MODIFY:
- case NODES:
- case RENAME:
- case REPLACE:
- case REVALIDATION:
- case SKIP:
- case VALUE:
- case WITH:
- case ALL:
- case ANY:
- case CONTAINS:
- case CONTENT:
- case DIACRITICS:
- case DIFFERENT:
- case DISTANCE:
- case ENTIRE:
- case EXACTLY:
- case FROM:
- case FT_OPTION:
- case FTAND:
- case FTNOT:
- case FTOR:
- case INSENSITIVE:
- case LANGUAGE:
- case LEVELS:
- case LOWERCASE:
- case MOST:
- case NO:
- case NOT:
- case OCCURS:
- case PARAGRAPH:
- case PARAGRAPHS:
- case PHRASE:
- case RELATIONSHIP:
- case SAME:
- case SCORE:
- case SENSITIVE:
- case SENTENCE:
- case SENTENCES:
- case STEMMING:
- case STOP:
- case THESAURUS:
- case TIMES:
- case UPPERCASE:
- case USING:
- case WEIGHT:
- case WILDCARDS:
- case WITHOUT:
- case WORD:
- case WORDS:
- case BREAK:
- case CONTINUE:
- case EXIT:
- case LOOP:
- case RETURNING:
- case WHILE:
- case CHECK:
- case COLLECTION:
- case CONSTRAINT:
- case FOREACH:
- case FOREIGN:
- case INDEX:
- case INTEGRITY:
- case KEY:
- case ON:
- case UNIQUE:
- case AMP_ER:
- case APOS_ER:
- case QUOT_ER:
- case L_NCName:
- alt131=2;
- break;
- case Q:
- alt131=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 131, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt131) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:11: STAR ( COLON p_NCName )?
- root_0 = this.adaptor.nil();
-
- STAR309=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7383); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR309_tree = this.adaptor.create(STAR309);
- this.adaptor.addChild(root_0, STAR309_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:16: ( COLON p_NCName )?
- var alt130=2;
- var LA130_0 = this.input.LA(1);
-
- if ( (LA130_0==COLON) ) {
- alt130=1;
- }
- switch (alt130) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:17: COLON p_NCName
- COLON310=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_Wildcard7386); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON310_tree = this.adaptor.create(COLON310);
- this.adaptor.addChild(root_0, COLON310_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Wildcard7388);
- p_NCName311=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName311.getTree());
-
-
- break;
-
- }
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1001:11: p_NCName COLON STAR
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Wildcard7402);
- p_NCName312=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName312.getTree());
- COLON313=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_Wildcard7404); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON313_tree = this.adaptor.create(COLON313);
- this.adaptor.addChild(root_0, COLON313_tree);
- }
- STAR314=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7406); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR314_tree = this.adaptor.create(STAR314);
- this.adaptor.addChild(root_0, STAR314_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1002:11: p_BracedURILiteral STAR
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_BracedURILiteral_in_p_Wildcard7418);
- p_BracedURILiteral315=this.p_BracedURILiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BracedURILiteral315.getTree());
- STAR316=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7420); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR316_tree = this.adaptor.create(STAR316);
- this.adaptor.addChild(root_0, STAR316_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- this.setWsExplicit(false);
- }
- return retval;
- },
-
- // inline static return class
- p_PostfixExpr_return: (function() {
- XQueryParser.p_PostfixExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PostfixExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1007:1: p_PostfixExpr : p_PrimaryExpr ( p_Predicate | p_ArgumentList )* ;
- // $ANTLR start "p_PostfixExpr"
- p_PostfixExpr: function() {
- var retval = new XQueryParser.p_PostfixExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_PrimaryExpr317 = null;
- var p_Predicate318 = null;
- var p_ArgumentList319 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:9: ( p_PrimaryExpr ( p_Predicate | p_ArgumentList )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:11: p_PrimaryExpr ( p_Predicate | p_ArgumentList )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PrimaryExpr_in_p_PostfixExpr7458);
- p_PrimaryExpr317=this.p_PrimaryExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PrimaryExpr317.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:25: ( p_Predicate | p_ArgumentList )*
- loop132:
- do {
- var alt132=3;
- var LA132_0 = this.input.LA(1);
-
- if ( (LA132_0==LSQUARE) ) {
- alt132=1;
- }
- else if ( (LA132_0==LPAREN) ) {
- alt132=2;
- }
-
-
- switch (alt132) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:26: p_Predicate
- this.pushFollow(XQueryParser.FOLLOW_p_Predicate_in_p_PostfixExpr7461);
- p_Predicate318=this.p_Predicate();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Predicate318.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:40: p_ArgumentList
- this.pushFollow(XQueryParser.FOLLOW_p_ArgumentList_in_p_PostfixExpr7465);
- p_ArgumentList319=this.p_ArgumentList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentList319.getTree());
-
-
- break;
-
- default :
- break loop132;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ArgumentList_return: (function() {
- XQueryParser.p_ArgumentList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ArgumentList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1012:1: p_ArgumentList : LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN ;
- // $ANTLR start "p_ArgumentList"
- p_ArgumentList: function() {
- var retval = new XQueryParser.p_ArgumentList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LPAREN320 = null;
- var COMMA322 = null;
- var RPAREN324 = null;
- var p_Argument321 = null;
- var p_Argument323 = null;
-
- var LPAREN320_tree=null;
- var COMMA322_tree=null;
- var RPAREN324_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:9: ( LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:11: LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN
- root_0 = this.adaptor.nil();
-
- LPAREN320=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ArgumentList7493); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN320_tree = this.adaptor.create(LPAREN320);
- this.adaptor.addChild(root_0, LPAREN320_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:18: ( p_Argument ( COMMA p_Argument )* )?
- var alt134=2;
- var LA134_0 = this.input.LA(1);
-
- if ( ((LA134_0>=ANCESTOR && LA134_0<=QUOT_ER)||LA134_0==LPAREN||(LA134_0>=DOLLAR && LA134_0<=L_UNION_BRACKET)||LA134_0==LBRACKET||LA134_0==LSQUARE||(LA134_0>=QUESTION && LA134_0<=SMALLER)||(LA134_0>=SLASH && LA134_0<=SLASH_SLASH)||(LA134_0>=DOT && LA134_0<=DOT_DOT)||(LA134_0>=ATTR_SIGN && LA134_0<=Q)||(LA134_0>=APOS && LA134_0<=QUOT)||LA134_0==L_NCName||(LA134_0>=L_Pragma && LA134_0<=L_DoubleLiteral)) ) {
- alt134=1;
- }
- switch (alt134) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:19: p_Argument ( COMMA p_Argument )*
- this.pushFollow(XQueryParser.FOLLOW_p_Argument_in_p_ArgumentList7496);
- p_Argument321=this.p_Argument();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Argument321.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:30: ( COMMA p_Argument )*
- loop133:
- do {
- var alt133=2;
- var LA133_0 = this.input.LA(1);
-
- if ( (LA133_0==COMMA) ) {
- alt133=1;
- }
-
-
- switch (alt133) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:31: COMMA p_Argument
- COMMA322=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ArgumentList7499); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA322_tree = this.adaptor.create(COMMA322);
- this.adaptor.addChild(root_0, COMMA322_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Argument_in_p_ArgumentList7501);
- p_Argument323=this.p_Argument();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Argument323.getTree());
-
-
- break;
-
- default :
- break loop133;
- }
- } while (true);
-
-
-
- break;
-
- }
-
- RPAREN324=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ArgumentList7507); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN324_tree = this.adaptor.create(RPAREN324);
- this.adaptor.addChild(root_0, RPAREN324_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PredicateList_return: (function() {
- XQueryParser.p_PredicateList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PredicateList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1017:1: p_PredicateList : ( p_Predicate )* ;
- // $ANTLR start "p_PredicateList"
- p_PredicateList: function() {
- var retval = new XQueryParser.p_PredicateList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Predicate325 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:9: ( ( p_Predicate )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: ( p_Predicate )*
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: ( p_Predicate )*
- loop135:
- do {
- var alt135=2;
- var LA135_0 = this.input.LA(1);
-
- if ( (LA135_0==LSQUARE) ) {
- alt135=1;
- }
-
-
- switch (alt135) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: p_Predicate
- this.pushFollow(XQueryParser.FOLLOW_p_Predicate_in_p_PredicateList7533);
- p_Predicate325=this.p_Predicate();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Predicate325.getTree());
-
-
- break;
-
- default :
- break loop135;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Predicate_return: (function() {
- XQueryParser.p_Predicate_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Predicate_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1022:1: p_Predicate : LSQUARE p_Expr[true,true] RSQUARE ;
- // $ANTLR start "p_Predicate"
- p_Predicate: function() {
- var retval = new XQueryParser.p_Predicate_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LSQUARE326 = null;
- var RSQUARE328 = null;
- var p_Expr327 = null;
-
- var LSQUARE326_tree=null;
- var RSQUARE328_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1023:9: ( LSQUARE p_Expr[true,true] RSQUARE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1023:11: LSQUARE p_Expr[true,true] RSQUARE
- root_0 = this.adaptor.nil();
-
- LSQUARE326=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_Predicate7560); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LSQUARE326_tree = this.adaptor.create(LSQUARE326);
- this.adaptor.addChild(root_0, LSQUARE326_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_Predicate7562);
- p_Expr327=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr327.getTree());
- RSQUARE328=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_Predicate7565); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RSQUARE328_tree = this.adaptor.create(RSQUARE328);
- this.adaptor.addChild(root_0, RSQUARE328_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PrimaryExpr_return: (function() {
- XQueryParser.p_PrimaryExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PrimaryExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1028:1: p_PrimaryExpr : ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion );
- // $ANTLR start "p_PrimaryExpr"
- p_PrimaryExpr: function() {
- var retval = new XQueryParser.p_PrimaryExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ParenthesizedExpr329 = null;
- var p_Literal330 = null;
- var p_VarRef331 = null;
- var p_ContextItemExpr332 = null;
- var p_FunctionCall333 = null;
- var p_OrderedExpr334 = null;
- var p_UnorderedExpr335 = null;
- var p_Constructor336 = null;
- var p_BlockExpr337 = null;
- var p_FunctionItemExpr338 = null;
- var p_ArrayConstructor339 = null;
- var p_SimpleObjectUnion340 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:9: ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion )
- var alt136=12;
- alt136 = this.dfa136.predict(this.input);
- switch (alt136) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:11: ( LPAREN )=> p_ParenthesizedExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ParenthesizedExpr_in_p_PrimaryExpr7598);
- p_ParenthesizedExpr329=this.p_ParenthesizedExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParenthesizedExpr329.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1030:11: p_Literal
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_PrimaryExpr7610);
- p_Literal330=this.p_Literal();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal330.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1031:11: p_VarRef
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_VarRef_in_p_PrimaryExpr7622);
- p_VarRef331=this.p_VarRef();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarRef331.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1032:11: p_ContextItemExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ContextItemExpr_in_p_PrimaryExpr7634);
- p_ContextItemExpr332=this.p_ContextItemExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ContextItemExpr332.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1033:11: p_FunctionCall
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FunctionCall_in_p_PrimaryExpr7646);
- p_FunctionCall333=this.p_FunctionCall();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FunctionCall333.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1034:11: p_OrderedExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_OrderedExpr_in_p_PrimaryExpr7659);
- p_OrderedExpr334=this.p_OrderedExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderedExpr334.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1035:11: p_UnorderedExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_UnorderedExpr_in_p_PrimaryExpr7671);
- p_UnorderedExpr335=this.p_UnorderedExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnorderedExpr335.getTree());
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1036:11: p_Constructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Constructor_in_p_PrimaryExpr7683);
- p_Constructor336=this.p_Constructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Constructor336.getTree());
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1037:11: p_BlockExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_BlockExpr_in_p_PrimaryExpr7696);
- p_BlockExpr337=this.p_BlockExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockExpr337.getTree());
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1038:11: p_FunctionItemExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FunctionItemExpr_in_p_PrimaryExpr7708);
- p_FunctionItemExpr338=this.p_FunctionItemExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FunctionItemExpr338.getTree());
-
-
- break;
- case 11 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1039:11: p_ArrayConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ArrayConstructor_in_p_PrimaryExpr7721);
- p_ArrayConstructor339=this.p_ArrayConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArrayConstructor339.getTree());
-
-
- break;
- case 12 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1040:11: p_SimpleObjectUnion
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SimpleObjectUnion_in_p_PrimaryExpr7733);
- p_SimpleObjectUnion340=this.p_SimpleObjectUnion();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SimpleObjectUnion340.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SimpleObjectUnion_return: (function() {
- XQueryParser.p_SimpleObjectUnion_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SimpleObjectUnion_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1044:1: p_SimpleObjectUnion : L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET ;
- // $ANTLR start "p_SimpleObjectUnion"
- p_SimpleObjectUnion: function() {
- var retval = new XQueryParser.p_SimpleObjectUnion_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_UNION_BRACKET341 = null;
- var R_UNION_BRACKET343 = null;
- var p_Expr342 = null;
-
- var L_UNION_BRACKET341_tree=null;
- var R_UNION_BRACKET343_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:11: ( L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:13: L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET
- root_0 = this.adaptor.nil();
-
- L_UNION_BRACKET341=this.match(this.input,L_UNION_BRACKET,XQueryParser.FOLLOW_L_UNION_BRACKET_in_p_SimpleObjectUnion7769); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_UNION_BRACKET341_tree = this.adaptor.create(L_UNION_BRACKET341);
- this.adaptor.addChild(root_0, L_UNION_BRACKET341_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:29: ( p_Expr[true, true] )?
- var alt137=2;
- var LA137_0 = this.input.LA(1);
-
- if ( ((LA137_0>=ANCESTOR && LA137_0<=QUOT_ER)||LA137_0==LPAREN||(LA137_0>=DOLLAR && LA137_0<=L_UNION_BRACKET)||LA137_0==LBRACKET||LA137_0==LSQUARE||(LA137_0>=STAR && LA137_0<=SMALLER)||(LA137_0>=SLASH && LA137_0<=SLASH_SLASH)||(LA137_0>=DOT && LA137_0<=DOT_DOT)||(LA137_0>=ATTR_SIGN && LA137_0<=Q)||(LA137_0>=APOS && LA137_0<=QUOT)||LA137_0==L_NCName||(LA137_0>=L_Pragma && LA137_0<=L_DoubleLiteral)) ) {
- alt137=1;
- }
- switch (alt137) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:29: p_Expr[true, true]
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SimpleObjectUnion7771);
- p_Expr342=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr342.getTree());
-
-
- break;
-
- }
-
- R_UNION_BRACKET343=this.match(this.input,R_UNION_BRACKET,XQueryParser.FOLLOW_R_UNION_BRACKET_in_p_SimpleObjectUnion7775); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- R_UNION_BRACKET343_tree = this.adaptor.create(R_UNION_BRACKET343);
- this.adaptor.addChild(root_0, R_UNION_BRACKET343_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PairConstructor_return: (function() {
- XQueryParser.p_PairConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PairConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1060:1: p_PairConstructor : COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )* ;
- // $ANTLR start "p_PairConstructor"
- p_PairConstructor: function() {
- var retval = new XQueryParser.p_PairConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COLON344 = null;
- var COMMA346 = null;
- var p_ExprSingle345 = null;
- var p_Hybrid347 = null;
-
- var COLON344_tree=null;
- var COMMA346_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:11: ( COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:13: COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )*
- root_0 = this.adaptor.nil();
-
- COLON344=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_PairConstructor7817); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COLON344_tree = this.adaptor.create(COLON344);
- this.adaptor.addChild(root_0, COLON344_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_PairConstructor7819);
- p_ExprSingle345=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle345.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:38: ( COMMA p_Hybrid[true, false] )*
- loop138:
- do {
- var alt138=2;
- var LA138_0 = this.input.LA(1);
-
- if ( (LA138_0==COMMA) ) {
- alt138=1;
- }
-
-
- switch (alt138) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:39: COMMA p_Hybrid[true, false]
- COMMA346=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_PairConstructor7823); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA346_tree = this.adaptor.create(COMMA346);
- this.adaptor.addChild(root_0, COMMA346_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_PairConstructor7825);
- p_Hybrid347=this.p_Hybrid(true, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid347.getTree());
-
-
- break;
-
- default :
- break loop138;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ArrayConstructor_return: (function() {
- XQueryParser.p_ArrayConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ArrayConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1064:1: p_ArrayConstructor : LSQUARE ( p_Expr[true, true] )? RSQUARE ;
- // $ANTLR start "p_ArrayConstructor"
- p_ArrayConstructor: function() {
- var retval = new XQueryParser.p_ArrayConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LSQUARE348 = null;
- var RSQUARE350 = null;
- var p_Expr349 = null;
-
- var LSQUARE348_tree=null;
- var RSQUARE350_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:9: ( LSQUARE ( p_Expr[true, true] )? RSQUARE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:12: LSQUARE ( p_Expr[true, true] )? RSQUARE
- root_0 = this.adaptor.nil();
-
- LSQUARE348=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_ArrayConstructor7856); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LSQUARE348_tree = this.adaptor.create(LSQUARE348);
- this.adaptor.addChild(root_0, LSQUARE348_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:20: ( p_Expr[true, true] )?
- var alt139=2;
- var LA139_0 = this.input.LA(1);
-
- if ( ((LA139_0>=ANCESTOR && LA139_0<=QUOT_ER)||LA139_0==LPAREN||(LA139_0>=DOLLAR && LA139_0<=L_UNION_BRACKET)||LA139_0==LBRACKET||LA139_0==LSQUARE||(LA139_0>=STAR && LA139_0<=SMALLER)||(LA139_0>=SLASH && LA139_0<=SLASH_SLASH)||(LA139_0>=DOT && LA139_0<=DOT_DOT)||(LA139_0>=ATTR_SIGN && LA139_0<=Q)||(LA139_0>=APOS && LA139_0<=QUOT)||LA139_0==L_NCName||(LA139_0>=L_Pragma && LA139_0<=L_DoubleLiteral)) ) {
- alt139=1;
- }
- switch (alt139) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:20: p_Expr[true, true]
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ArrayConstructor7858);
- p_Expr349=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr349.getTree());
-
-
- break;
-
- }
-
- RSQUARE350=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_ArrayConstructor7862); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RSQUARE350_tree = this.adaptor.create(RSQUARE350);
- this.adaptor.addChild(root_0, RSQUARE350_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Literal_return: (function() {
- XQueryParser.p_Literal_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Literal_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1069:1: p_Literal : ( p_NumericLiteral | p_StringLiteral );
- // $ANTLR start "p_Literal"
- p_Literal: function() {
- var retval = new XQueryParser.p_Literal_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_NumericLiteral351 = null;
- var p_StringLiteral352 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:9: ( p_NumericLiteral | p_StringLiteral )
- var alt140=2;
- var LA140_0 = this.input.LA(1);
-
- if ( ((LA140_0>=L_IntegerLiteral && LA140_0<=L_DoubleLiteral)) ) {
- alt140=1;
- }
- else if ( ((LA140_0>=APOS && LA140_0<=QUOT)) ) {
- alt140=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 140, 0, this.input);
-
- throw nvae;
- }
- switch (alt140) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:11: p_NumericLiteral
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NumericLiteral_in_p_Literal7888);
- p_NumericLiteral351=this.p_NumericLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NumericLiteral351.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:30: p_StringLiteral
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_Literal7892);
- p_StringLiteral352=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral352.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NumericLiteral_return: (function() {
- XQueryParser.p_NumericLiteral_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NumericLiteral_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1074:1: p_NumericLiteral : (d+= L_IntegerLiteral | d+= L_DecimalLiteral | d+= L_DoubleLiteral );
- // $ANTLR start "p_NumericLiteral"
- p_NumericLiteral: function() {
- var retval = new XQueryParser.p_NumericLiteral_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var list_d=null;
-
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:9: (d+= L_IntegerLiteral | d+= L_DecimalLiteral | d+= L_DoubleLiteral )
- var alt141=3;
- switch ( this.input.LA(1) ) {
- case L_IntegerLiteral:
- alt141=1;
- break;
- case L_DecimalLiteral:
- alt141=2;
- break;
- case L_DoubleLiteral:
- alt141=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 141, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt141) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:11: d+= L_IntegerLiteral
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_NumericLiteral7920); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- if (org.antlr.lang.isNull(list_d)) list_d = [];
- list_d.push(d);
-
- if ( this.state.backtracking===0 ) {
- this.ad(list_d);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:48: d+= L_DecimalLiteral
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,L_DecimalLiteral,XQueryParser.FOLLOW_L_DecimalLiteral_in_p_NumericLiteral7928); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- if (org.antlr.lang.isNull(list_d)) list_d = [];
- list_d.push(d);
-
- if ( this.state.backtracking===0 ) {
- this.ad(list_d);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:85: d+= L_DoubleLiteral
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,L_DoubleLiteral,XQueryParser.FOLLOW_L_DoubleLiteral_in_p_NumericLiteral7936); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- if (org.antlr.lang.isNull(list_d)) list_d = [];
- list_d.push(d);
-
- if ( this.state.backtracking===0 ) {
- this.ad(list_d);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarRef_return: (function() {
- XQueryParser.p_VarRef_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarRef_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1079:1: p_VarRef : d= DOLLAR v= p_VarName ;
- // $ANTLR start "p_VarRef"
- p_VarRef: function() {
- var retval = new XQueryParser.p_VarRef_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var v = null;
-
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1080:9: (d= DOLLAR v= p_VarName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1080:11: d= DOLLAR v= p_VarName
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarRef7974); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarRef7978);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarName_return: (function() {
- XQueryParser.p_VarName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1084:1: p_VarName : p_EQName ;
- // $ANTLR start "p_VarName"
- p_VarName: function() {
- var retval = new XQueryParser.p_VarName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName353 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1085:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1085:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_VarName8006);
- p_EQName353=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName353.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ParenthesizedExpr_return: (function() {
- XQueryParser.p_ParenthesizedExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ParenthesizedExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1089:1: p_ParenthesizedExpr : LPAREN ( p_Expr[true,true] )? RPAREN ;
- // $ANTLR start "p_ParenthesizedExpr"
- p_ParenthesizedExpr: function() {
- var retval = new XQueryParser.p_ParenthesizedExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LPAREN354 = null;
- var RPAREN356 = null;
- var p_Expr355 = null;
-
- var LPAREN354_tree=null;
- var RPAREN356_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:9: ( LPAREN ( p_Expr[true,true] )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:11: LPAREN ( p_Expr[true,true] )? RPAREN
- root_0 = this.adaptor.nil();
-
- LPAREN354=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ParenthesizedExpr8032); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN354_tree = this.adaptor.create(LPAREN354);
- this.adaptor.addChild(root_0, LPAREN354_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:18: ( p_Expr[true,true] )?
- var alt142=2;
- var LA142_0 = this.input.LA(1);
-
- if ( ((LA142_0>=ANCESTOR && LA142_0<=QUOT_ER)||LA142_0==LPAREN||(LA142_0>=DOLLAR && LA142_0<=L_UNION_BRACKET)||LA142_0==LBRACKET||LA142_0==LSQUARE||(LA142_0>=STAR && LA142_0<=SMALLER)||(LA142_0>=SLASH && LA142_0<=SLASH_SLASH)||(LA142_0>=DOT && LA142_0<=DOT_DOT)||(LA142_0>=ATTR_SIGN && LA142_0<=Q)||(LA142_0>=APOS && LA142_0<=QUOT)||LA142_0==L_NCName||(LA142_0>=L_Pragma && LA142_0<=L_DoubleLiteral)) ) {
- alt142=1;
- }
- switch (alt142) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:18: p_Expr[true,true]
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ParenthesizedExpr8034);
- p_Expr355=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr355.getTree());
-
-
- break;
-
- }
-
- RPAREN356=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ParenthesizedExpr8038); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN356_tree = this.adaptor.create(RPAREN356);
- this.adaptor.addChild(root_0, RPAREN356_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ContextItemExpr_return: (function() {
- XQueryParser.p_ContextItemExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ContextItemExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1094:1: p_ContextItemExpr : DOT ;
- // $ANTLR start "p_ContextItemExpr"
- p_ContextItemExpr: function() {
- var retval = new XQueryParser.p_ContextItemExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var DOT357 = null;
-
- var DOT357_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1095:9: ( DOT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1095:11: DOT
- root_0 = this.adaptor.nil();
-
- DOT357=this.match(this.input,DOT,XQueryParser.FOLLOW_DOT_in_p_ContextItemExpr8064); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DOT357_tree = this.adaptor.create(DOT357);
- this.adaptor.addChild(root_0, DOT357_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OrderedExpr_return: (function() {
- XQueryParser.p_OrderedExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OrderedExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1099:1: p_OrderedExpr : k= ORDERED LBRACKET p_Expr[true,true] RBRACKET ;
- // $ANTLR start "p_OrderedExpr"
- p_OrderedExpr: function() {
- var retval = new XQueryParser.p_OrderedExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET358 = null;
- var RBRACKET360 = null;
- var p_Expr359 = null;
-
- var k_tree=null;
- var LBRACKET358_tree=null;
- var RBRACKET360_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1100:9: (k= ORDERED LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1100:11: k= ORDERED LBRACKET p_Expr[true,true] RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_p_OrderedExpr8092); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET358=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_OrderedExpr8096); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET358_tree = this.adaptor.create(LBRACKET358);
- this.adaptor.addChild(root_0, LBRACKET358_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_OrderedExpr8098);
- p_Expr359=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr359.getTree());
- RBRACKET360=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_OrderedExpr8101); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET360_tree = this.adaptor.create(RBRACKET360);
- this.adaptor.addChild(root_0, RBRACKET360_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_UnorderedExpr_return: (function() {
- XQueryParser.p_UnorderedExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_UnorderedExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1104:1: p_UnorderedExpr : k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET ;
- // $ANTLR start "p_UnorderedExpr"
- p_UnorderedExpr: function() {
- var retval = new XQueryParser.p_UnorderedExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET361 = null;
- var RBRACKET363 = null;
- var p_Expr362 = null;
-
- var k_tree=null;
- var LBRACKET361_tree=null;
- var RBRACKET363_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1105:9: (k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1105:11: k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,UNORDERED,XQueryParser.FOLLOW_UNORDERED_in_p_UnorderedExpr8129); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET361=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_UnorderedExpr8133); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET361_tree = this.adaptor.create(LBRACKET361);
- this.adaptor.addChild(root_0, LBRACKET361_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_UnorderedExpr8135);
- p_Expr362=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr362.getTree());
- RBRACKET363=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_UnorderedExpr8138); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET363_tree = this.adaptor.create(RBRACKET363);
- this.adaptor.addChild(root_0, RBRACKET363_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FunctionCall_return: (function() {
- XQueryParser.p_FunctionCall_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FunctionCall_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1110:1: p_FunctionCall : f= pg_FQName p_ArgumentList ;
- // $ANTLR start "p_FunctionCall"
- p_FunctionCall: function() {
- var retval = new XQueryParser.p_FunctionCall_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var f = null;
- var p_ArgumentList364 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1111:9: (f= pg_FQName p_ArgumentList )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1111:11: f= pg_FQName p_ArgumentList
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pg_FQName_in_p_FunctionCall8167);
- f=this.pg_FQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, f.getTree());
- if ( this.state.backtracking===0 ) {
- this.af((f?f.start:null), (f?f.stop:null));
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ArgumentList_in_p_FunctionCall8172);
- p_ArgumentList364=this.p_ArgumentList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentList364.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Argument_return: (function() {
- XQueryParser.p_Argument_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Argument_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1115:1: p_Argument : ( p_ExprSingle[true] | p_ArgumentPlaceholder );
- // $ANTLR start "p_Argument"
- p_Argument: function() {
- var retval = new XQueryParser.p_Argument_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle365 = null;
- var p_ArgumentPlaceholder366 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:9: ( p_ExprSingle[true] | p_ArgumentPlaceholder )
- var alt143=2;
- var LA143_0 = this.input.LA(1);
-
- if ( ((LA143_0>=ANCESTOR && LA143_0<=QUOT_ER)||LA143_0==LPAREN||(LA143_0>=DOLLAR && LA143_0<=L_UNION_BRACKET)||LA143_0==LBRACKET||LA143_0==LSQUARE||(LA143_0>=STAR && LA143_0<=SMALLER)||(LA143_0>=SLASH && LA143_0<=SLASH_SLASH)||(LA143_0>=DOT && LA143_0<=DOT_DOT)||(LA143_0>=ATTR_SIGN && LA143_0<=Q)||(LA143_0>=APOS && LA143_0<=QUOT)||LA143_0==L_NCName||(LA143_0>=L_Pragma && LA143_0<=L_DoubleLiteral)) ) {
- alt143=1;
- }
- else if ( (LA143_0==QUESTION) ) {
- alt143=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 143, 0, this.input);
-
- throw nvae;
- }
- switch (alt143) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Argument8198);
- p_ExprSingle365=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle365.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:32: p_ArgumentPlaceholder
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ArgumentPlaceholder_in_p_Argument8203);
- p_ArgumentPlaceholder366=this.p_ArgumentPlaceholder();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentPlaceholder366.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ArgumentPlaceholder_return: (function() {
- XQueryParser.p_ArgumentPlaceholder_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ArgumentPlaceholder_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1120:1: p_ArgumentPlaceholder : QUESTION ;
- // $ANTLR start "p_ArgumentPlaceholder"
- p_ArgumentPlaceholder: function() {
- var retval = new XQueryParser.p_ArgumentPlaceholder_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var QUESTION367 = null;
-
- var QUESTION367_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1121:9: ( QUESTION )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1121:11: QUESTION
- root_0 = this.adaptor.nil();
-
- QUESTION367=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_ArgumentPlaceholder8229); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- QUESTION367_tree = this.adaptor.create(QUESTION367);
- this.adaptor.addChild(root_0, QUESTION367_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Constructor_return: (function() {
- XQueryParser.p_Constructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Constructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1125:1: p_Constructor : ( p_DirectConstructor | p_ComputedConstructor );
- // $ANTLR start "p_Constructor"
- p_Constructor: function() {
- var retval = new XQueryParser.p_Constructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_DirectConstructor368 = null;
- var p_ComputedConstructor369 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1126:9: ( p_DirectConstructor | p_ComputedConstructor )
- var alt144=2;
- var LA144_0 = this.input.LA(1);
-
- if ( (LA144_0==SMALLER||(LA144_0>=L_DirCommentConstructor && LA144_0<=L_DirPIConstructor)) ) {
- alt144=1;
- }
- else if ( (LA144_0==ATTRIBUTE||LA144_0==COMMENT||LA144_0==DOCUMENT||LA144_0==ELEMENT||LA144_0==NAMESPACE||LA144_0==PROCESSING_INSTRUCTION||LA144_0==TEXT) ) {
- alt144=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 144, 0, this.input);
-
- throw nvae;
- }
- switch (alt144) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1126:11: p_DirectConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirectConstructor_in_p_Constructor8255);
- p_DirectConstructor368=this.p_DirectConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirectConstructor368.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1127:11: p_ComputedConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ComputedConstructor_in_p_Constructor8267);
- p_ComputedConstructor369=this.p_ComputedConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComputedConstructor369.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DirectConstructor_return: (function() {
- XQueryParser.p_DirectConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirectConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1131:1: p_DirectConstructor : ( p_DirElemConstructor | p_DirCommentConstructor | p_DirPIConstructor );
- // $ANTLR start "p_DirectConstructor"
- p_DirectConstructor: function() {
- var retval = new XQueryParser.p_DirectConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_DirElemConstructor370 = null;
- var p_DirCommentConstructor371 = null;
- var p_DirPIConstructor372 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1132:9: ( p_DirElemConstructor | p_DirCommentConstructor | p_DirPIConstructor )
- var alt145=3;
- switch ( this.input.LA(1) ) {
- case SMALLER:
- alt145=1;
- break;
- case L_DirCommentConstructor:
- alt145=2;
- break;
- case L_DirPIConstructor:
- alt145=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 145, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt145) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1132:11: p_DirElemConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirElemConstructor_in_p_DirectConstructor8293);
- p_DirElemConstructor370=this.p_DirElemConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirElemConstructor370.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1133:11: p_DirCommentConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirCommentConstructor_in_p_DirectConstructor8305);
- p_DirCommentConstructor371=this.p_DirCommentConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirCommentConstructor371.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1134:11: p_DirPIConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirPIConstructor_in_p_DirectConstructor8317);
- p_DirPIConstructor372=this.p_DirPIConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirPIConstructor372.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DirElemConstructor_return: (function() {
- XQueryParser.p_DirElemConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirElemConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1138:1: p_DirElemConstructor : SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) ) -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) ) ;
- // $ANTLR start "p_DirElemConstructor"
- p_DirElemConstructor: function() {
- var retval = new XQueryParser.p_DirElemConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SMALLER373 = null;
- var EMPTY_CLOSE_TAG375 = null;
- var GREATER376 = null;
- var CLOSE_TAG378 = null;
- var S379 = null;
- var GREATER380 = null;
- var ts = null;
- var te = null;
- var p_DirAttributeList374 = null;
- var pm_DirElemContent377 = null;
-
- var SMALLER373_tree=null;
- var EMPTY_CLOSE_TAG375_tree=null;
- var GREATER376_tree=null;
- var CLOSE_TAG378_tree=null;
- var S379_tree=null;
- var GREATER380_tree=null;
- var stream_CLOSE_TAG=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token CLOSE_TAG");
- var stream_GREATER=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token GREATER");
- var stream_S=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token S");
- var stream_EMPTY_CLOSE_TAG=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EMPTY_CLOSE_TAG");
- var stream_SMALLER=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SMALLER");
- var stream_p_DirAttributeList=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_DirAttributeList");
- var stream_pm_DirElemContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_DirElemContent");
- var stream_p_QName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_QName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1139:9: ( SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) ) -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1139:11: SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) )
- SMALLER373=this.match(this.input,SMALLER,XQueryParser.FOLLOW_SMALLER_in_p_DirElemConstructor8344); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_SMALLER.add(SMALLER373);
-
- if ( this.state.backtracking===0 ) {
- this.pushXMLLexer();
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirElemConstructor8360);
- ts=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_QName.add(ts.getTree());
- if ( this.state.backtracking===0 ) {
- this.at((ts?ts.start:null), (ts?ts.stop:null));
- }
- this.pushFollow(XQueryParser.FOLLOW_p_DirAttributeList_in_p_DirElemConstructor8365);
- p_DirAttributeList374=this.p_DirAttributeList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_DirAttributeList.add(p_DirAttributeList374.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:11: ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) )
- var alt148=2;
- var LA148_0 = this.input.LA(1);
-
- if ( (LA148_0==EMPTY_CLOSE_TAG) ) {
- alt148=1;
- }
- else if ( (LA148_0==GREATER) ) {
- alt148=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 148, 0, this.input);
-
- throw nvae;
- }
- switch (alt148) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:12: EMPTY_CLOSE_TAG
- EMPTY_CLOSE_TAG375=this.match(this.input,EMPTY_CLOSE_TAG,XQueryParser.FOLLOW_EMPTY_CLOSE_TAG_in_p_DirElemConstructor8379); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EMPTY_CLOSE_TAG.add(EMPTY_CLOSE_TAG375);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:30: ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:30: ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:31: GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER
- GREATER376=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_DirElemConstructor8384); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_GREATER.add(GREATER376);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:39: ( pm_DirElemContent )*
- loop146:
- do {
- var alt146=2;
- var LA146_0 = this.input.LA(1);
-
- if ( ((LA146_0>=L_ElementContentChar && LA146_0<=ESCAPE_RBRACKET)||LA146_0==LBRACKET||LA146_0==SMALLER||(LA146_0>=L_DirCommentConstructor && LA146_0<=L_DirPIConstructor)) ) {
- alt146=1;
- }
-
-
- switch (alt146) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:39: pm_DirElemContent
- this.pushFollow(XQueryParser.FOLLOW_pm_DirElemContent_in_p_DirElemConstructor8386);
- pm_DirElemContent377=this.pm_DirElemContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pm_DirElemContent.add(pm_DirElemContent377.getTree());
-
-
- break;
-
- default :
- break loop146;
- }
- } while (true);
-
- CLOSE_TAG378=this.match(this.input,CLOSE_TAG,XQueryParser.FOLLOW_CLOSE_TAG_in_p_DirElemConstructor8389); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_CLOSE_TAG.add(CLOSE_TAG378);
-
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirElemConstructor8393);
- te=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_QName.add(te.getTree());
- if ( this.state.backtracking===0 ) {
- this.at((te?te.start:null), (te?te.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:111: ( S )?
- var alt147=2;
- var LA147_0 = this.input.LA(1);
-
- if ( (LA147_0==S) ) {
- alt147=1;
- }
- switch (alt147) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:111: S
- S379=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirElemConstructor8397); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_S.add(S379);
-
-
-
- break;
-
- }
-
- GREATER380=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_DirElemConstructor8400); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_GREATER.add(GREATER380);
-
-
-
-
-
-
- break;
-
- }
-
-
-
- // AST REWRITE
- // elements: pm_DirElemContent, p_DirAttributeList
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1142:17: -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:20: ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirElemConstructor, "DirElemConstructor"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:41: ^( DirAttributeList ( p_DirAttributeList )* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeList, "DirAttributeList"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:60: ( p_DirAttributeList )*
- while ( stream_p_DirAttributeList.hasNext() ) {
- this.adaptor.addChild(root_2, stream_p_DirAttributeList.nextTree());
-
- }
- stream_p_DirAttributeList.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:81: ^( DirElemContent ( pm_DirElemContent )* )
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(DirElemContent, "DirElemContent"), root_2);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:98: ( pm_DirElemContent )*
- while ( stream_pm_DirElemContent.hasNext() ) {
- this.adaptor.addChild(root_2, stream_pm_DirElemContent.nextTree());
-
- }
- stream_pm_DirElemContent.reset();
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- this.popLexer();
- }
- return retval;
- },
-
- // inline static return class
- p_DirAttributeList_return: (function() {
- XQueryParser.p_DirAttributeList_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirAttributeList_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1147:1: p_DirAttributeList : ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )* ;
- // $ANTLR start "p_DirAttributeList"
- p_DirAttributeList: function() {
- var retval = new XQueryParser.p_DirAttributeList_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var S381 = null;
- var S382 = null;
- var EQUAL383 = null;
- var S384 = null;
- var t = null;
- var v = null;
-
- var S381_tree=null;
- var S382_tree=null;
- var EQUAL383_tree=null;
- var S384_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:9: ( ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:11: ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )*
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:11: ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )*
- loop152:
- do {
- var alt152=2;
- var LA152_0 = this.input.LA(1);
-
- if ( (LA152_0==S) ) {
- alt152=1;
- }
-
-
- switch (alt152) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:12: S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )?
- S381=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8477); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- S381_tree = this.adaptor.create(S381);
- this.adaptor.addChild(root_0, S381_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:14: (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )?
- var alt151=2;
- var LA151_0 = this.input.LA(1);
-
- if ( ((LA151_0>=ANCESTOR && LA151_0<=SKIP)||(LA151_0>=VALUE && LA151_0<=QUOT_ER)||LA151_0==L_NCName) ) {
- alt151=1;
- }
- switch (alt151) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:15: t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirAttributeList8482);
- t=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, t.getTree());
- if ( this.state.backtracking===0 ) {
- this.at((t?t.start:null), (t?t.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:55: ( S )?
- var alt149=2;
- var LA149_0 = this.input.LA(1);
-
- if ( (LA149_0==S) ) {
- alt149=1;
- }
- switch (alt149) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:55: S
- S382=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8486); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- S382_tree = this.adaptor.create(S382);
- this.adaptor.addChild(root_0, S382_tree);
- }
-
-
- break;
-
- }
-
- EQUAL383=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_DirAttributeList8489); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- EQUAL383_tree = this.adaptor.create(EQUAL383);
- this.adaptor.addChild(root_0, EQUAL383_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:64: ( S )?
- var alt150=2;
- var LA150_0 = this.input.LA(1);
-
- if ( (LA150_0==S) ) {
- alt150=1;
- }
- switch (alt150) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:64: S
- S384=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8491); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- S384_tree = this.adaptor.create(S384);
- this.adaptor.addChild(root_0, S384_tree);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirAttributeValue_in_p_DirAttributeList8496);
- v=this.p_DirAttributeValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
-
-
- break;
-
- }
-
-
-
- break;
-
- default :
- break loop152;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DirAttributeValue_return: (function() {
- XQueryParser.p_DirAttributeValue_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirAttributeValue_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1152:1: p_DirAttributeValue : ( (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT ) -> ^( DirAttributeValue ( p_QuotAttrValueContent )* ) | (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS ) -> ^( DirAttributeValue ( p_AposAttrValueContent )* ) );
- // $ANTLR start "p_DirAttributeValue"
- p_DirAttributeValue: function() {
- var retval = new XQueryParser.p_DirAttributeValue_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var s = null;
- var list_s=null;
- var p_QuotAttrValueContent385 = null;
- var p_AposAttrValueContent386 = null;
-
- var s_tree=null;
- var stream_ESCAPE_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ESCAPE_QUOT");
- var stream_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token APOS");
- var stream_ESCAPE_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ESCAPE_APOS");
- var stream_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token QUOT");
- var stream_p_QuotAttrValueContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_QuotAttrValueContent");
- var stream_p_AposAttrValueContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_AposAttrValueContent");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:9: ( (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT ) -> ^( DirAttributeValue ( p_QuotAttrValueContent )* ) | (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS ) -> ^( DirAttributeValue ( p_AposAttrValueContent )* ) )
- var alt155=2;
- var LA155_0 = this.input.LA(1);
-
- if ( (LA155_0==QUOT) ) {
- alt155=1;
- }
- else if ( (LA155_0==APOS) ) {
- alt155=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 155, 0, this.input);
-
- throw nvae;
- }
- switch (alt155) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:11: (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:11: (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:12: s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT
- s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8530); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_QUOT.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
- if ( this.state.backtracking===0 ) {
- this.isInAttr = true;
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:45: (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )*
- loop153:
- do {
- var alt153=4;
- switch ( this.input.LA(1) ) {
- case ESCAPE_QUOT:
- alt153=1;
- break;
- case APOS:
- alt153=2;
- break;
- case L_QuotAttrContentChar:
- case L_PredefinedEntityRef:
- case L_CharRef:
- case ESCAPE_LBRACKET:
- case ESCAPE_RBRACKET:
- case LBRACKET:
- alt153=3;
- break;
-
- }
-
- switch (alt153) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:46: s+= ESCAPE_QUOT
- s=this.match(this.input,ESCAPE_QUOT,XQueryParser.FOLLOW_ESCAPE_QUOT_in_p_DirAttributeValue8537); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ESCAPE_QUOT.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:63: s+= APOS
- s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8543); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_APOS.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:73: p_QuotAttrValueContent
- this.pushFollow(XQueryParser.FOLLOW_p_QuotAttrValueContent_in_p_DirAttributeValue8547);
- p_QuotAttrValueContent385=this.p_QuotAttrValueContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_QuotAttrValueContent.add(p_QuotAttrValueContent385.getTree());
-
-
- break;
-
- default :
- break loop153;
- }
- } while (true);
-
- s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8553); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_QUOT.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
- if ( this.state.backtracking===0 ) {
- this.isInAttr = false;
- }
-
-
-
- if ( this.state.backtracking===0 ) {
- this.addToken(list_s, "string");
- }
-
-
- // AST REWRITE
- // elements: p_QuotAttrValueContent
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1154:17: -> ^( DirAttributeValue ( p_QuotAttrValueContent )* )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1154:20: ^( DirAttributeValue ( p_QuotAttrValueContent )* )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeValue, "DirAttributeValue"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1154:40: ( p_QuotAttrValueContent )*
- while ( stream_p_QuotAttrValueContent.hasNext() ) {
- this.adaptor.addChild(root_1, stream_p_QuotAttrValueContent.nextTree());
-
- }
- stream_p_QuotAttrValueContent.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:11: (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:11: (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:12: s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS
- s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8598); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_APOS.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
- if ( this.state.backtracking===0 ) {
- this.isInAttr = true;
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:46: (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )*
- loop154:
- do {
- var alt154=4;
- switch ( this.input.LA(1) ) {
- case ESCAPE_APOS:
- alt154=1;
- break;
- case QUOT:
- alt154=2;
- break;
- case L_AposAttrContentChar:
- case L_PredefinedEntityRef:
- case L_CharRef:
- case ESCAPE_LBRACKET:
- case ESCAPE_RBRACKET:
- case LBRACKET:
- alt154=3;
- break;
-
- }
-
- switch (alt154) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:47: s+= ESCAPE_APOS
- s=this.match(this.input,ESCAPE_APOS,XQueryParser.FOLLOW_ESCAPE_APOS_in_p_DirAttributeValue8605); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ESCAPE_APOS.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:64: s+= QUOT
- s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8611); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_QUOT.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:74: p_AposAttrValueContent
- this.pushFollow(XQueryParser.FOLLOW_p_AposAttrValueContent_in_p_DirAttributeValue8615);
- p_AposAttrValueContent386=this.p_AposAttrValueContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_AposAttrValueContent.add(p_AposAttrValueContent386.getTree());
-
-
- break;
-
- default :
- break loop154;
- }
- } while (true);
-
- s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8621); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_APOS.add(s);
-
- if (org.antlr.lang.isNull(list_s)) list_s = [];
- list_s.push(s);
-
- if ( this.state.backtracking===0 ) {
- this.isInAttr = false;
- }
-
-
-
- if ( this.state.backtracking===0 ) {
- this.addToken(list_s, "string");
- }
-
-
- // AST REWRITE
- // elements: p_AposAttrValueContent
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1156:17: -> ^( DirAttributeValue ( p_AposAttrValueContent )* )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1156:20: ^( DirAttributeValue ( p_AposAttrValueContent )* )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeValue, "DirAttributeValue"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1156:40: ( p_AposAttrValueContent )*
- while ( stream_p_AposAttrValueContent.hasNext() ) {
- this.adaptor.addChild(root_1, stream_p_AposAttrValueContent.nextTree());
-
- }
- stream_p_AposAttrValueContent.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_QuotAttrValueContent_return: (function() {
- XQueryParser.p_QuotAttrValueContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_QuotAttrValueContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1160:1: p_QuotAttrValueContent : (s= p_QuotAttrContentChar | pm_CommonContent );
- // $ANTLR start "p_QuotAttrValueContent"
- p_QuotAttrValueContent: function() {
- var retval = new XQueryParser.p_QuotAttrValueContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var s = null;
- var pm_CommonContent387 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:9: (s= p_QuotAttrContentChar | pm_CommonContent )
- var alt156=2;
- var LA156_0 = this.input.LA(1);
-
- if ( (LA156_0==L_QuotAttrContentChar) ) {
- alt156=1;
- }
- else if ( ((LA156_0>=L_PredefinedEntityRef && LA156_0<=ESCAPE_RBRACKET)||LA156_0==LBRACKET) ) {
- alt156=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 156, 0, this.input);
-
- throw nvae;
- }
- switch (alt156) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:11: s= p_QuotAttrContentChar
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_QuotAttrContentChar_in_p_QuotAttrValueContent8679);
- s=this.p_QuotAttrContentChar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, s.getTree());
- if ( this.state.backtracking===0 ) {
- this.addString((s?s.start:null), (s?s.stop:null));
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:76: pm_CommonContent
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_p_QuotAttrValueContent8685);
- pm_CommonContent387=this.pm_CommonContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent387.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AposAttrValueContent_return: (function() {
- XQueryParser.p_AposAttrValueContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AposAttrValueContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1165:1: p_AposAttrValueContent : (s= p_AposAttrContentChar | pm_CommonContent );
- // $ANTLR start "p_AposAttrValueContent"
- p_AposAttrValueContent: function() {
- var retval = new XQueryParser.p_AposAttrValueContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var s = null;
- var pm_CommonContent388 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:9: (s= p_AposAttrContentChar | pm_CommonContent )
- var alt157=2;
- var LA157_0 = this.input.LA(1);
-
- if ( (LA157_0==L_AposAttrContentChar) ) {
- alt157=1;
- }
- else if ( ((LA157_0>=L_PredefinedEntityRef && LA157_0<=ESCAPE_RBRACKET)||LA157_0==LBRACKET) ) {
- alt157=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 157, 0, this.input);
-
- throw nvae;
- }
- switch (alt157) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:11: s= p_AposAttrContentChar
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AposAttrContentChar_in_p_AposAttrValueContent8713);
- s=this.p_AposAttrContentChar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, s.getTree());
- if ( this.state.backtracking===0 ) {
- this.addString((s?s.start:null), (s?s.stop:null));
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:76: pm_CommonContent
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_p_AposAttrValueContent8719);
- pm_CommonContent388=this.pm_CommonContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent388.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_DirElemContent_return: (function() {
- XQueryParser.pm_DirElemContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_DirElemContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1170:1: pm_DirElemContent : ( p_DirectConstructor | p_CDataSection | pm_CommonContent | p_ElementContentChar );
- // $ANTLR start "pm_DirElemContent"
- pm_DirElemContent: function() {
- var retval = new XQueryParser.pm_DirElemContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_DirectConstructor389 = null;
- var p_CDataSection390 = null;
- var pm_CommonContent391 = null;
- var p_ElementContentChar392 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1171:9: ( p_DirectConstructor | p_CDataSection | pm_CommonContent | p_ElementContentChar )
- var alt158=4;
- switch ( this.input.LA(1) ) {
- case SMALLER:
- case L_DirCommentConstructor:
- case L_DirPIConstructor:
- alt158=1;
- break;
- case L_CDataSection:
- alt158=2;
- break;
- case L_PredefinedEntityRef:
- case L_CharRef:
- case ESCAPE_LBRACKET:
- case ESCAPE_RBRACKET:
- case LBRACKET:
- alt158=3;
- break;
- case L_ElementContentChar:
- alt158=4;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 158, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt158) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1171:11: p_DirectConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DirectConstructor_in_pm_DirElemContent8745);
- p_DirectConstructor389=this.p_DirectConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirectConstructor389.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1172:11: p_CDataSection
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CDataSection_in_pm_DirElemContent8757);
- p_CDataSection390=this.p_CDataSection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CDataSection390.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1173:11: pm_CommonContent
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_pm_DirElemContent8769);
- pm_CommonContent391=this.pm_CommonContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent391.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1174:11: p_ElementContentChar
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ElementContentChar_in_pm_DirElemContent8781);
- p_ElementContentChar392=this.p_ElementContentChar();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementContentChar392.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CommonContent_return: (function() {
- XQueryParser.pm_CommonContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CommonContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1180:1: pm_CommonContent : ( L_PredefinedEntityRef | L_CharRef | s= ESCAPE_LBRACKET | s= ESCAPE_RBRACKET | pg_EnclosedExprXml );
- // $ANTLR start "pm_CommonContent"
- pm_CommonContent: function() {
- var retval = new XQueryParser.pm_CommonContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var s = null;
- var L_PredefinedEntityRef393 = null;
- var L_CharRef394 = null;
- var pg_EnclosedExprXml395 = null;
-
- var s_tree=null;
- var L_PredefinedEntityRef393_tree=null;
- var L_CharRef394_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1181:9: ( L_PredefinedEntityRef | L_CharRef | s= ESCAPE_LBRACKET | s= ESCAPE_RBRACKET | pg_EnclosedExprXml )
- var alt159=5;
- switch ( this.input.LA(1) ) {
- case L_PredefinedEntityRef:
- alt159=1;
- break;
- case L_CharRef:
- alt159=2;
- break;
- case ESCAPE_LBRACKET:
- alt159=3;
- break;
- case ESCAPE_RBRACKET:
- alt159=4;
- break;
- case LBRACKET:
- alt159=5;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 159, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt159) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1181:11: L_PredefinedEntityRef
- root_0 = this.adaptor.nil();
-
- L_PredefinedEntityRef393=this.match(this.input,L_PredefinedEntityRef,XQueryParser.FOLLOW_L_PredefinedEntityRef_in_pm_CommonContent8809); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_PredefinedEntityRef393_tree = this.adaptor.create(L_PredefinedEntityRef393);
- this.adaptor.addChild(root_0, L_PredefinedEntityRef393_tree);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1182:11: L_CharRef
- root_0 = this.adaptor.nil();
-
- L_CharRef394=this.match(this.input,L_CharRef,XQueryParser.FOLLOW_L_CharRef_in_pm_CommonContent8821); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_CharRef394_tree = this.adaptor.create(L_CharRef394);
- this.adaptor.addChild(root_0, L_CharRef394_tree);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1183:11: s= ESCAPE_LBRACKET
- root_0 = this.adaptor.nil();
-
- s=this.match(this.input,ESCAPE_LBRACKET,XQueryParser.FOLLOW_ESCAPE_LBRACKET_in_pm_CommonContent8835); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- s_tree = this.adaptor.create(s);
- this.adaptor.addChild(root_0, s_tree);
- }
- if ( this.state.backtracking===0 ) {
- if(this.isInAttr) { this.addToken(s, "string"); }
- }
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1184:11: s= ESCAPE_RBRACKET
- root_0 = this.adaptor.nil();
-
- s=this.match(this.input,ESCAPE_RBRACKET,XQueryParser.FOLLOW_ESCAPE_RBRACKET_in_pm_CommonContent8851); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- s_tree = this.adaptor.create(s);
- this.adaptor.addChild(root_0, s_tree);
- }
- if ( this.state.backtracking===0 ) {
- if(this.isInAttr) { this.addToken(s, "string"); }
- }
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1185:11: pg_EnclosedExprXml
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pg_EnclosedExprXml_in_pm_CommonContent8865);
- pg_EnclosedExprXml395=this.pg_EnclosedExprXml();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_EnclosedExprXml395.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_EnclosedExprXml_return: (function() {
- XQueryParser.pg_EnclosedExprXml_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_EnclosedExprXml_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1193:1: pg_EnclosedExprXml : LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "pg_EnclosedExprXml"
- pg_EnclosedExprXml: function() {
- var retval = new XQueryParser.pg_EnclosedExprXml_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET396 = null;
- var RBRACKET398 = null;
- var p_StatementsAndOptionalExpr397 = null;
-
- var LBRACKET396_tree=null;
- var RBRACKET398_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1194:9: ( LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1194:13: LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- LBRACKET396=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pg_EnclosedExprXml8897); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET396_tree = this.adaptor.create(LBRACKET396);
- this.adaptor.addChild(root_0, LBRACKET396_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.pushXQueryLexer();
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pg_EnclosedExprXml8913);
- p_StatementsAndOptionalExpr397=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr397.getTree());
- RBRACKET398=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pg_EnclosedExprXml8927); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET398_tree = this.adaptor.create(RBRACKET398);
- this.adaptor.addChild(root_0, RBRACKET398_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.popLexer();
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DirCommentConstructor_return: (function() {
- XQueryParser.p_DirCommentConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirCommentConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1201:1: p_DirCommentConstructor : c= L_DirCommentConstructor ;
- // $ANTLR start "p_DirCommentConstructor"
- p_DirCommentConstructor: function() {
- var retval = new XQueryParser.p_DirCommentConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var c = null;
-
- var c_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1202:9: (c= L_DirCommentConstructor )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1202:11: c= L_DirCommentConstructor
- root_0 = this.adaptor.nil();
-
- c=this.match(this.input,L_DirCommentConstructor,XQueryParser.FOLLOW_L_DirCommentConstructor_in_p_DirCommentConstructor8958); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- c_tree = this.adaptor.create(c);
- this.adaptor.addChild(root_0, c_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ac(c);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DirPIConstructor_return: (function() {
- XQueryParser.p_DirPIConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DirPIConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1209:1: p_DirPIConstructor : p= L_DirPIConstructor ;
- // $ANTLR start "p_DirPIConstructor"
- p_DirPIConstructor: function() {
- var retval = new XQueryParser.p_DirPIConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p = null;
-
- var p_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1210:9: (p= L_DirPIConstructor )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1210:11: p= L_DirPIConstructor
- root_0 = this.adaptor.nil();
-
- p=this.match(this.input,L_DirPIConstructor,XQueryParser.FOLLOW_L_DirPIConstructor_in_p_DirPIConstructor8994); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- p_tree = this.adaptor.create(p);
- this.adaptor.addChild(root_0, p_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ap(p);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CDataSection_return: (function() {
- XQueryParser.p_CDataSection_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CDataSection_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1217:1: p_CDataSection : c= L_CDataSection ;
- // $ANTLR start "p_CDataSection"
- p_CDataSection: function() {
- var retval = new XQueryParser.p_CDataSection_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var c = null;
-
- var c_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1218:9: (c= L_CDataSection )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1218:11: c= L_CDataSection
- root_0 = this.adaptor.nil();
-
- c=this.match(this.input,L_CDataSection,XQueryParser.FOLLOW_L_CDataSection_in_p_CDataSection9031); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- c_tree = this.adaptor.create(c);
- this.adaptor.addChild(root_0, c_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ac(c);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ComputedConstructor_return: (function() {
- XQueryParser.p_ComputedConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ComputedConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1225:1: p_ComputedConstructor : ( pm_CompDocConstructor | pm_CompElemConstructor | pm_CompAttrConstructor | p_CompNamespaceConstructor | p_CompTextConstructor | pm_CompCommentConstructor | pm_CompPIConstructor );
- // $ANTLR start "p_ComputedConstructor"
- p_ComputedConstructor: function() {
- var retval = new XQueryParser.p_ComputedConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pm_CompDocConstructor399 = null;
- var pm_CompElemConstructor400 = null;
- var pm_CompAttrConstructor401 = null;
- var p_CompNamespaceConstructor402 = null;
- var p_CompTextConstructor403 = null;
- var pm_CompCommentConstructor404 = null;
- var pm_CompPIConstructor405 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1226:9: ( pm_CompDocConstructor | pm_CompElemConstructor | pm_CompAttrConstructor | p_CompNamespaceConstructor | p_CompTextConstructor | pm_CompCommentConstructor | pm_CompPIConstructor )
- var alt160=7;
- switch ( this.input.LA(1) ) {
- case DOCUMENT:
- alt160=1;
- break;
- case ELEMENT:
- alt160=2;
- break;
- case ATTRIBUTE:
- alt160=3;
- break;
- case NAMESPACE:
- alt160=4;
- break;
- case TEXT:
- alt160=5;
- break;
- case COMMENT:
- alt160=6;
- break;
- case PROCESSING_INSTRUCTION:
- alt160=7;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 160, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt160) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1226:11: pm_CompDocConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CompDocConstructor_in_p_ComputedConstructor9065);
- pm_CompDocConstructor399=this.pm_CompDocConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompDocConstructor399.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1227:11: pm_CompElemConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CompElemConstructor_in_p_ComputedConstructor9077);
- pm_CompElemConstructor400=this.pm_CompElemConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompElemConstructor400.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1228:11: pm_CompAttrConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CompAttrConstructor_in_p_ComputedConstructor9089);
- pm_CompAttrConstructor401=this.pm_CompAttrConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompAttrConstructor401.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1229:11: p_CompNamespaceConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CompNamespaceConstructor_in_p_ComputedConstructor9101);
- p_CompNamespaceConstructor402=this.p_CompNamespaceConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CompNamespaceConstructor402.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1230:11: p_CompTextConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CompTextConstructor_in_p_ComputedConstructor9113);
- p_CompTextConstructor403=this.p_CompTextConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CompTextConstructor403.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1231:11: pm_CompCommentConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CompCommentConstructor_in_p_ComputedConstructor9125);
- pm_CompCommentConstructor404=this.pm_CompCommentConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompCommentConstructor404.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1232:11: pm_CompPIConstructor
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pm_CompPIConstructor_in_p_ComputedConstructor9137);
- pm_CompPIConstructor405=this.pm_CompPIConstructor();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompPIConstructor405.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CompDocConstructor_return: (function() {
- XQueryParser.pm_CompDocConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CompDocConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1237:1: pm_CompDocConstructor : k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "pm_CompDocConstructor"
- pm_CompDocConstructor: function() {
- var retval = new XQueryParser.pm_CompDocConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET406 = null;
- var RBRACKET408 = null;
- var p_StatementsAndOptionalExpr407 = null;
-
- var k_tree=null;
- var LBRACKET406_tree=null;
- var RBRACKET408_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1238:9: (k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1238:11: k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DOCUMENT,XQueryParser.FOLLOW_DOCUMENT_in_pm_CompDocConstructor9166); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET406=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompDocConstructor9170); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET406_tree = this.adaptor.create(LBRACKET406);
- this.adaptor.addChild(root_0, LBRACKET406_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompDocConstructor9172);
- p_StatementsAndOptionalExpr407=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr407.getTree());
- RBRACKET408=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompDocConstructor9174); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET408_tree = this.adaptor.create(RBRACKET408);
- this.adaptor.addChild(root_0, RBRACKET408_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CompElemConstructor_return: (function() {
- XQueryParser.pm_CompElemConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CompElemConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1242:1: pm_CompElemConstructor : k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET ;
- // $ANTLR start "pm_CompElemConstructor"
- pm_CompElemConstructor: function() {
- var retval = new XQueryParser.pm_CompElemConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET410 = null;
- var RBRACKET412 = null;
- var LBRACKET413 = null;
- var RBRACKET415 = null;
- var p_EQName409 = null;
- var p_Expr411 = null;
- var pm_ContentExpr414 = null;
-
- var k_tree=null;
- var LBRACKET410_tree=null;
- var RBRACKET412_tree=null;
- var LBRACKET413_tree=null;
- var RBRACKET415_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:9: (k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:11: k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_pm_CompElemConstructor9210); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:36: ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
- var alt161=2;
- var LA161_0 = this.input.LA(1);
-
- if ( ((LA161_0>=ANCESTOR && LA161_0<=SKIP)||(LA161_0>=VALUE && LA161_0<=QUOT_ER)||LA161_0==Q||LA161_0==L_NCName) ) {
- alt161=1;
- }
- else if ( (LA161_0==LBRACKET) ) {
- alt161=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 161, 0, this.input);
-
- throw nvae;
- }
- switch (alt161) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:37: p_EQName
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_CompElemConstructor9215);
- p_EQName409=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName409.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:48: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:48: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:49: LBRACKET p_Expr[true,true] RBRACKET
- LBRACKET410=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompElemConstructor9220); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET410_tree = this.adaptor.create(LBRACKET410);
- this.adaptor.addChild(root_0, LBRACKET410_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompElemConstructor9222);
- p_Expr411=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr411.getTree());
- RBRACKET412=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompElemConstructor9225); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET412_tree = this.adaptor.create(RBRACKET412);
- this.adaptor.addChild(root_0, RBRACKET412_tree);
- }
-
-
-
-
-
- break;
-
- }
-
- LBRACKET413=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompElemConstructor9229); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET413_tree = this.adaptor.create(LBRACKET413);
- this.adaptor.addChild(root_0, LBRACKET413_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_pm_ContentExpr_in_pm_CompElemConstructor9231);
- pm_ContentExpr414=this.pm_ContentExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ContentExpr414.getTree());
- RBRACKET415=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompElemConstructor9233); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET415_tree = this.adaptor.create(RBRACKET415);
- this.adaptor.addChild(root_0, RBRACKET415_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_ContentExpr_return: (function() {
- XQueryParser.pm_ContentExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_ContentExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1248:1: pm_ContentExpr : p_StatementsAndOptionalExpr ;
- // $ANTLR start "pm_ContentExpr"
- pm_ContentExpr: function() {
- var retval = new XQueryParser.pm_ContentExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_StatementsAndOptionalExpr416 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1249:9: ( p_StatementsAndOptionalExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1249:11: p_StatementsAndOptionalExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_ContentExpr9260);
- p_StatementsAndOptionalExpr416=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr416.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CompAttrConstructor_return: (function() {
- XQueryParser.pm_CompAttrConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CompAttrConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1254:1: pm_CompAttrConstructor : k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "pm_CompAttrConstructor"
- pm_CompAttrConstructor: function() {
- var retval = new XQueryParser.pm_CompAttrConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET418 = null;
- var RBRACKET420 = null;
- var LBRACKET421 = null;
- var RBRACKET423 = null;
- var p_EQName417 = null;
- var p_Expr419 = null;
- var p_StatementsAndOptionalExpr422 = null;
-
- var k_tree=null;
- var LBRACKET418_tree=null;
- var RBRACKET420_tree=null;
- var LBRACKET421_tree=null;
- var RBRACKET423_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:9: (k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:11: k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_pm_CompAttrConstructor9289); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:38: ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
- var alt162=2;
- var LA162_0 = this.input.LA(1);
-
- if ( ((LA162_0>=ANCESTOR && LA162_0<=SKIP)||(LA162_0>=VALUE && LA162_0<=QUOT_ER)||LA162_0==Q||LA162_0==L_NCName) ) {
- alt162=1;
- }
- else if ( (LA162_0==LBRACKET) ) {
- alt162=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 162, 0, this.input);
-
- throw nvae;
- }
- switch (alt162) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:39: p_EQName
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_CompAttrConstructor9294);
- p_EQName417=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName417.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:50: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:50: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:51: LBRACKET p_Expr[true,true] RBRACKET
- LBRACKET418=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompAttrConstructor9299); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET418_tree = this.adaptor.create(LBRACKET418);
- this.adaptor.addChild(root_0, LBRACKET418_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompAttrConstructor9301);
- p_Expr419=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr419.getTree());
- RBRACKET420=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompAttrConstructor9304); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET420_tree = this.adaptor.create(RBRACKET420);
- this.adaptor.addChild(root_0, RBRACKET420_tree);
- }
-
-
-
-
-
- break;
-
- }
-
- LBRACKET421=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompAttrConstructor9308); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET421_tree = this.adaptor.create(LBRACKET421);
- this.adaptor.addChild(root_0, LBRACKET421_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompAttrConstructor9310);
- p_StatementsAndOptionalExpr422=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr422.getTree());
- RBRACKET423=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompAttrConstructor9312); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET423_tree = this.adaptor.create(RBRACKET423);
- this.adaptor.addChild(root_0, RBRACKET423_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CompNamespaceConstructor_return: (function() {
- XQueryParser.p_CompNamespaceConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CompNamespaceConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1259:1: p_CompNamespaceConstructor : k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET ;
- // $ANTLR start "p_CompNamespaceConstructor"
- p_CompNamespaceConstructor: function() {
- var retval = new XQueryParser.p_CompNamespaceConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET425 = null;
- var RBRACKET427 = null;
- var LBRACKET428 = null;
- var RBRACKET430 = null;
- var p_Prefix424 = null;
- var p_PrefixExpr426 = null;
- var p_URIExpr429 = null;
-
- var k_tree=null;
- var LBRACKET425_tree=null;
- var RBRACKET427_tree=null;
- var LBRACKET428_tree=null;
- var RBRACKET430_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:9: (k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:11: k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_CompNamespaceConstructor9340); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:38: ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) )
- var alt163=2;
- var LA163_0 = this.input.LA(1);
-
- if ( ((LA163_0>=ANCESTOR && LA163_0<=SKIP)||(LA163_0>=VALUE && LA163_0<=QUOT_ER)||LA163_0==L_NCName) ) {
- alt163=1;
- }
- else if ( (LA163_0==LBRACKET) ) {
- alt163=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 163, 0, this.input);
-
- throw nvae;
- }
- switch (alt163) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:39: p_Prefix
- this.pushFollow(XQueryParser.FOLLOW_p_Prefix_in_p_CompNamespaceConstructor9345);
- p_Prefix424=this.p_Prefix();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Prefix424.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:50: ( LBRACKET p_PrefixExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:50: ( LBRACKET p_PrefixExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:51: LBRACKET p_PrefixExpr RBRACKET
- LBRACKET425=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9350); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET425_tree = this.adaptor.create(LBRACKET425);
- this.adaptor.addChild(root_0, LBRACKET425_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PrefixExpr_in_p_CompNamespaceConstructor9352);
- p_PrefixExpr426=this.p_PrefixExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PrefixExpr426.getTree());
- RBRACKET427=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9354); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET427_tree = this.adaptor.create(RBRACKET427);
- this.adaptor.addChild(root_0, RBRACKET427_tree);
- }
-
-
-
-
-
- break;
-
- }
-
- LBRACKET428=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9358); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET428_tree = this.adaptor.create(LBRACKET428);
- this.adaptor.addChild(root_0, LBRACKET428_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:93: ( p_URIExpr )?
- var alt164=2;
- var LA164_0 = this.input.LA(1);
-
- if ( ((LA164_0>=ANCESTOR && LA164_0<=QUOT_ER)||LA164_0==LPAREN||(LA164_0>=DOLLAR && LA164_0<=L_UNION_BRACKET)||LA164_0==LBRACKET||LA164_0==LSQUARE||(LA164_0>=STAR && LA164_0<=SMALLER)||(LA164_0>=SLASH && LA164_0<=SLASH_SLASH)||(LA164_0>=DOT && LA164_0<=DOT_DOT)||(LA164_0>=ATTR_SIGN && LA164_0<=Q)||(LA164_0>=APOS && LA164_0<=QUOT)||LA164_0==L_NCName||(LA164_0>=L_Pragma && LA164_0<=L_DoubleLiteral)) ) {
- alt164=1;
- }
- switch (alt164) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:93: p_URIExpr
- this.pushFollow(XQueryParser.FOLLOW_p_URIExpr_in_p_CompNamespaceConstructor9360);
- p_URIExpr429=this.p_URIExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_URIExpr429.getTree());
-
-
- break;
-
- }
-
- RBRACKET430=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9363); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET430_tree = this.adaptor.create(RBRACKET430);
- this.adaptor.addChild(root_0, RBRACKET430_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Prefix_return: (function() {
- XQueryParser.p_Prefix_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Prefix_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1264:1: p_Prefix : p_NCName ;
- // $ANTLR start "p_Prefix"
- p_Prefix: function() {
- var retval = new XQueryParser.p_Prefix_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_NCName431 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1265:9: ( p_NCName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1265:11: p_NCName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Prefix9389);
- p_NCName431=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName431.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PrefixExpr_return: (function() {
- XQueryParser.p_PrefixExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PrefixExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1269:1: p_PrefixExpr : p_Expr[true,true] ;
- // $ANTLR start "p_PrefixExpr"
- p_PrefixExpr: function() {
- var retval = new XQueryParser.p_PrefixExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Expr432 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1270:9: ( p_Expr[true,true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1270:11: p_Expr[true,true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_PrefixExpr9415);
- p_Expr432=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr432.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_URIExpr_return: (function() {
- XQueryParser.p_URIExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_URIExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1274:1: p_URIExpr : p_Expr[true,true] ;
- // $ANTLR start "p_URIExpr"
- p_URIExpr: function() {
- var retval = new XQueryParser.p_URIExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Expr433 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1275:9: ( p_Expr[true,true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1275:11: p_Expr[true,true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_URIExpr9442);
- p_Expr433=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr433.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CompTextConstructor_return: (function() {
- XQueryParser.p_CompTextConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CompTextConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1279:1: p_CompTextConstructor : k= TEXT LBRACKET p_Expr[true,true] RBRACKET ;
- // $ANTLR start "p_CompTextConstructor"
- p_CompTextConstructor: function() {
- var retval = new XQueryParser.p_CompTextConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET434 = null;
- var RBRACKET436 = null;
- var p_Expr435 = null;
-
- var k_tree=null;
- var LBRACKET434_tree=null;
- var RBRACKET436_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1280:9: (k= TEXT LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1280:11: k= TEXT LBRACKET p_Expr[true,true] RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_CompTextConstructor9471); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET434=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompTextConstructor9475); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET434_tree = this.adaptor.create(LBRACKET434);
- this.adaptor.addChild(root_0, LBRACKET434_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_CompTextConstructor9477);
- p_Expr435=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr435.getTree());
- RBRACKET436=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompTextConstructor9480); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET436_tree = this.adaptor.create(RBRACKET436);
- this.adaptor.addChild(root_0, RBRACKET436_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CompCommentConstructor_return: (function() {
- XQueryParser.pm_CompCommentConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CompCommentConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1285:1: pm_CompCommentConstructor : k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "pm_CompCommentConstructor"
- pm_CompCommentConstructor: function() {
- var retval = new XQueryParser.pm_CompCommentConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET437 = null;
- var RBRACKET439 = null;
- var p_StatementsAndOptionalExpr438 = null;
-
- var k_tree=null;
- var LBRACKET437_tree=null;
- var RBRACKET439_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1286:9: (k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1286:11: k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COMMENT,XQueryParser.FOLLOW_COMMENT_in_pm_CompCommentConstructor9509); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LBRACKET437=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompCommentConstructor9513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET437_tree = this.adaptor.create(LBRACKET437);
- this.adaptor.addChild(root_0, LBRACKET437_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompCommentConstructor9515);
- p_StatementsAndOptionalExpr438=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr438.getTree());
- RBRACKET439=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompCommentConstructor9517); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET439_tree = this.adaptor.create(RBRACKET439);
- this.adaptor.addChild(root_0, RBRACKET439_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_CompPIConstructor_return: (function() {
- XQueryParser.pm_CompPIConstructor_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_CompPIConstructor_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1291:1: pm_CompPIConstructor : k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "pm_CompPIConstructor"
- pm_CompPIConstructor: function() {
- var retval = new XQueryParser.pm_CompPIConstructor_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LBRACKET441 = null;
- var RBRACKET443 = null;
- var LBRACKET444 = null;
- var RBRACKET446 = null;
- var p_NCName440 = null;
- var p_Expr442 = null;
- var p_StatementsAndOptionalExpr445 = null;
-
- var k_tree=null;
- var LBRACKET441_tree=null;
- var RBRACKET443_tree=null;
- var LBRACKET444_tree=null;
- var RBRACKET446_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:9: (k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:11: k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,PROCESSING_INSTRUCTION,XQueryParser.FOLLOW_PROCESSING_INSTRUCTION_in_pm_CompPIConstructor9546); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:51: ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
- var alt165=2;
- var LA165_0 = this.input.LA(1);
-
- if ( ((LA165_0>=ANCESTOR && LA165_0<=SKIP)||(LA165_0>=VALUE && LA165_0<=QUOT_ER)||LA165_0==L_NCName) ) {
- alt165=1;
- }
- else if ( (LA165_0==LBRACKET) ) {
- alt165=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 165, 0, this.input);
-
- throw nvae;
- }
- switch (alt165) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:52: p_NCName
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_CompPIConstructor9551);
- p_NCName440=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName440.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:63: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:63: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:64: LBRACKET p_Expr[true,true] RBRACKET
- LBRACKET441=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompPIConstructor9556); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET441_tree = this.adaptor.create(LBRACKET441);
- this.adaptor.addChild(root_0, LBRACKET441_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompPIConstructor9558);
- p_Expr442=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr442.getTree());
- RBRACKET443=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompPIConstructor9561); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET443_tree = this.adaptor.create(RBRACKET443);
- this.adaptor.addChild(root_0, RBRACKET443_tree);
- }
-
-
-
-
-
- break;
-
- }
-
- LBRACKET444=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompPIConstructor9565); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET444_tree = this.adaptor.create(LBRACKET444);
- this.adaptor.addChild(root_0, LBRACKET444_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompPIConstructor9567);
- p_StatementsAndOptionalExpr445=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr445.getTree());
- RBRACKET446=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompPIConstructor9569); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET446_tree = this.adaptor.create(RBRACKET446);
- this.adaptor.addChild(root_0, RBRACKET446_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FunctionItemExpr_return: (function() {
- XQueryParser.p_FunctionItemExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FunctionItemExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1296:1: p_FunctionItemExpr : p_LiteralFunctionItem ;
- // $ANTLR start "p_FunctionItemExpr"
- p_FunctionItemExpr: function() {
- var retval = new XQueryParser.p_FunctionItemExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_LiteralFunctionItem447 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1297:9: ( p_LiteralFunctionItem )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1297:11: p_LiteralFunctionItem
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_LiteralFunctionItem_in_p_FunctionItemExpr9595);
- p_LiteralFunctionItem447=this.p_LiteralFunctionItem();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LiteralFunctionItem447.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_LiteralFunctionItem_return: (function() {
- XQueryParser.p_LiteralFunctionItem_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_LiteralFunctionItem_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1302:1: p_LiteralFunctionItem : p_EQName HASH L_IntegerLiteral ;
- // $ANTLR start "p_LiteralFunctionItem"
- p_LiteralFunctionItem: function() {
- var retval = new XQueryParser.p_LiteralFunctionItem_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var HASH449 = null;
- var L_IntegerLiteral450 = null;
- var p_EQName448 = null;
-
- var HASH449_tree=null;
- var L_IntegerLiteral450_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1303:9: ( p_EQName HASH L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1303:11: p_EQName HASH L_IntegerLiteral
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_LiteralFunctionItem9622);
- p_EQName448=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName448.getTree());
- HASH449=this.match(this.input,HASH,XQueryParser.FOLLOW_HASH_in_p_LiteralFunctionItem9624); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- HASH449_tree = this.adaptor.create(HASH449);
- this.adaptor.addChild(root_0, HASH449_tree);
- }
- L_IntegerLiteral450=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_LiteralFunctionItem9626); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral450_tree = this.adaptor.create(L_IntegerLiteral450);
- this.adaptor.addChild(root_0, L_IntegerLiteral450_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InlineFunction_return: (function() {
- XQueryParser.p_InlineFunction_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InlineFunction_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1307:1: p_InlineFunction : ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
- // $ANTLR start "p_InlineFunction"
- p_InlineFunction: function() {
- var retval = new XQueryParser.p_InlineFunction_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN452 = null;
- var RPAREN454 = null;
- var LBRACKET456 = null;
- var RBRACKET458 = null;
- var p_Annotation451 = null;
- var p_ParamList453 = null;
- var p_SequenceType455 = null;
- var p_StatementsAndOptionalExpr457 = null;
-
- var k_tree=null;
- var LPAREN452_tree=null;
- var RPAREN454_tree=null;
- var LBRACKET456_tree=null;
- var RBRACKET458_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:9: ( ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: ( p_Annotation )*
- loop166:
- do {
- var alt166=2;
- var LA166_0 = this.input.LA(1);
-
- if ( (LA166_0==ANN_PERCENT) ) {
- alt166=1;
- }
-
-
- switch (alt166) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: p_Annotation
- this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_InlineFunction9661);
- p_Annotation451=this.p_Annotation();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation451.getTree());
-
-
- break;
-
- default :
- break loop166;
- }
- } while (true);
-
- k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_InlineFunction9666); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN452=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_InlineFunction9670); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN452_tree = this.adaptor.create(LPAREN452);
- this.adaptor.addChild(root_0, LPAREN452_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:60: ( p_ParamList )?
- var alt167=2;
- var LA167_0 = this.input.LA(1);
-
- if ( (LA167_0==DOLLAR) ) {
- alt167=1;
- }
- switch (alt167) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:60: p_ParamList
- this.pushFollow(XQueryParser.FOLLOW_p_ParamList_in_p_InlineFunction9672);
- p_ParamList453=this.p_ParamList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParamList453.getTree());
-
-
- break;
-
- }
-
- RPAREN454=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_InlineFunction9675); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN454_tree = this.adaptor.create(RPAREN454);
- this.adaptor.addChild(root_0, RPAREN454_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:80: (k= AS p_SequenceType )?
- var alt168=2;
- var LA168_0 = this.input.LA(1);
-
- if ( (LA168_0==AS) ) {
- alt168=1;
- }
- switch (alt168) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:81: k= AS p_SequenceType
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_InlineFunction9680); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_InlineFunction9684);
- p_SequenceType455=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType455.getTree());
-
-
- break;
-
- }
-
- LBRACKET456=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_InlineFunction9688); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET456_tree = this.adaptor.create(LBRACKET456);
- this.adaptor.addChild(root_0, LBRACKET456_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_p_InlineFunction9690);
- p_StatementsAndOptionalExpr457=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr457.getTree());
- RBRACKET458=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_InlineFunction9692); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET458_tree = this.adaptor.create(RBRACKET458);
- this.adaptor.addChild(root_0, RBRACKET458_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SingleType_return: (function() {
- XQueryParser.p_SingleType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SingleType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1313:1: p_SingleType : p_AtomicOrUnionType ( QUESTION )? ;
- // $ANTLR start "p_SingleType"
- p_SingleType: function() {
- var retval = new XQueryParser.p_SingleType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var QUESTION460 = null;
- var p_AtomicOrUnionType459 = null;
-
- var QUESTION460_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:9: ( p_AtomicOrUnionType ( QUESTION )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:11: p_AtomicOrUnionType ( QUESTION )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AtomicOrUnionType_in_p_SingleType9718);
- p_AtomicOrUnionType459=this.p_AtomicOrUnionType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicOrUnionType459.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:31: ( QUESTION )?
- var alt169=2;
- var LA169_0 = this.input.LA(1);
-
- if ( (LA169_0==QUESTION) ) {
- alt169=1;
- }
- switch (alt169) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:31: QUESTION
- QUESTION460=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_SingleType9720); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- QUESTION460_tree = this.adaptor.create(QUESTION460);
- this.adaptor.addChild(root_0, QUESTION460_tree);
- }
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TypeDeclaration_return: (function() {
- XQueryParser.p_TypeDeclaration_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TypeDeclaration_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1318:1: p_TypeDeclaration : k= AS st= p_SequenceType -> ^( TypeDeclaration $st) ;
- // $ANTLR start "p_TypeDeclaration"
- p_TypeDeclaration: function() {
- var retval = new XQueryParser.p_TypeDeclaration_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var st = null;
-
- var k_tree=null;
- var stream_AS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AS");
- var stream_p_SequenceType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SequenceType");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1319:9: (k= AS st= p_SequenceType -> ^( TypeDeclaration $st) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1319:11: k= AS st= p_SequenceType
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TypeDeclaration9749); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_AS.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypeDeclaration9755);
- st=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_SequenceType.add(st.getTree());
-
-
- // AST REWRITE
- // elements: st
- // token labels:
- // rule labels: retval, st
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_st=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token st",st!=null?st.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1320:17: -> ^( TypeDeclaration $st)
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1320:20: ^( TypeDeclaration $st)
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(TypeDeclaration, "TypeDeclaration"), root_1);
-
- this.adaptor.addChild(root_1, stream_st.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SequenceType_return: (function() {
- XQueryParser.p_SequenceType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SequenceType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1324:1: p_SequenceType : (k= EMPTY_SEQUENCE l= LPAREN r= RPAREN -> ^( SequenceType ^( EmptySequenceTest $k $l $r) ) | it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )? -> ^( SequenceType $it ( $oi)? ) );
- // $ANTLR start "p_SequenceType"
- p_SequenceType: function() {
- var retval = new XQueryParser.p_SequenceType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var l = null;
- var r = null;
- var it = null;
- var oi = null;
-
- var k_tree=null;
- var l_tree=null;
- var r_tree=null;
- var stream_EMPTY_SEQUENCE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EMPTY_SEQUENCE");
- var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
- var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
- var stream_p_ItemType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ItemType");
- var stream_p_OccurrenceIndicator=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_OccurrenceIndicator");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1325:9: (k= EMPTY_SEQUENCE l= LPAREN r= RPAREN -> ^( SequenceType ^( EmptySequenceTest $k $l $r) ) | it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )? -> ^( SequenceType $it ( $oi)? ) )
- var alt171=2;
- var LA171_0 = this.input.LA(1);
-
- if ( (LA171_0==EMPTY_SEQUENCE) ) {
- var LA171_1 = this.input.LA(2);
-
- if ( (LA171_1==LPAREN) ) {
- alt171=1;
- }
- else if ( (LA171_1==EOF||(LA171_1>=AND && LA171_1<=AT)||LA171_1==CASE||LA171_1==COLLATION||LA171_1==DEFAULT||(LA171_1>=DESCENDING && LA171_1<=DIV)||LA171_1==EMPTY||LA171_1==EQ||(LA171_1>=EXCEPT && LA171_1<=EXTERNAL)||LA171_1==FOR||LA171_1==GE||(LA171_1>=GT && LA171_1<=IDIV)||LA171_1==IN||(LA171_1>=INSTANCE && LA171_1<=IS)||LA171_1==LE||(LA171_1>=LET && LA171_1<=MOD)||LA171_1==NE||(LA171_1>=OR && LA171_1<=ORDER)||(LA171_1>=RETURN && LA171_1<=SATISFIES)||LA171_1==STABLE||LA171_1==TO||LA171_1==UNION||LA171_1==WHERE||LA171_1==ALLOWING||LA171_1==COUNT||(LA171_1>=END && LA171_1<=GROUP)||LA171_1==ONLY||LA171_1==START||(LA171_1>=AFTER && LA171_1<=BEFORE)||LA171_1==INTO||LA171_1==MODIFY||LA171_1==WITH||LA171_1==CONTAINS||LA171_1==PARAGRAPHS||LA171_1==SCORE||LA171_1==SENTENCES||LA171_1==TIMES||LA171_1==WORDS||LA171_1==CONCAT||LA171_1==RPAREN||(LA171_1>=R_UNION_BRACKET && LA171_1<=RBRACKET)||(LA171_1>=RSQUARE && LA171_1<=NOTEQUAL)||(LA171_1>=COMMA && LA171_1<=GREATER_GREATER)||LA171_1==COLON||(LA171_1>=SEMICOLON && LA171_1<=VBAR)) ) {
- alt171=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 171, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( ((LA171_0>=ANCESTOR && LA171_0<=EMPTY)||(LA171_0>=ENCODING && LA171_0<=SKIP)||(LA171_0>=VALUE && LA171_0<=QUOT_ER)||LA171_0==LPAREN||LA171_0==ANN_PERCENT||LA171_0==Q||LA171_0==L_NCName) ) {
- alt171=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 171, 0, this.input);
-
- throw nvae;
- }
- switch (alt171) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1325:11: k= EMPTY_SEQUENCE l= LPAREN r= RPAREN
- k=this.match(this.input,EMPTY_SEQUENCE,XQueryParser.FOLLOW_EMPTY_SEQUENCE_in_p_SequenceType9808); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_EMPTY_SEQUENCE.add(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- l=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SequenceType9814); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_LPAREN.add(l);
-
- r=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SequenceType9818); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_RPAREN.add(r);
-
-
-
- // AST REWRITE
- // elements: r, k, l
- // token labels: r, l, k
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_r=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token r",r);
- var stream_l=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token l",l);
- var stream_k=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token k",k);
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1326:17: -> ^( SequenceType ^( EmptySequenceTest $k $l $r) )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1326:20: ^( SequenceType ^( EmptySequenceTest $k $l $r) )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(SequenceType, "SequenceType"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1326:35: ^( EmptySequenceTest $k $l $r)
- {
- var root_2 = this.adaptor.nil();
- root_2 = this.adaptor.becomeRoot(this.adaptor.create(EmptySequenceTest, "EmptySequenceTest"), root_2);
-
- this.adaptor.addChild(root_2, stream_k.nextNode());
- this.adaptor.addChild(root_2, stream_l.nextNode());
- this.adaptor.addChild(root_2, stream_r.nextNode());
-
- this.adaptor.addChild(root_1, root_2);
- }
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:11: it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )?
- this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_p_SequenceType9867);
- it=this.p_ItemType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_ItemType.add(it.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:25: ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )?
- var alt170=2;
- switch ( this.input.LA(1) ) {
- case STAR:
- var LA170_1 = this.input.LA(2);
-
- if ( (this.synpred14_XQueryParser()) ) {
- alt170=1;
- }
- break;
- case PLUS:
- var LA170_3 = this.input.LA(2);
-
- if ( (this.synpred14_XQueryParser()) ) {
- alt170=1;
- }
- break;
- case QUESTION:
- var LA170_4 = this.input.LA(2);
-
- if ( (this.synpred14_XQueryParser()) ) {
- alt170=1;
- }
- break;
- }
-
- switch (alt170) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:26: ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator
- this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_SequenceType9878);
- oi=this.p_OccurrenceIndicator();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_OccurrenceIndicator.add(oi.getTree());
-
-
- break;
-
- }
-
-
-
- // AST REWRITE
- // elements: it, oi
- // token labels:
- // rule labels: retval, it, oi
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_it=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token it",it!=null?it.tree:null);
- var stream_oi=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token oi",oi!=null?oi.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1328:17: -> ^( SequenceType $it ( $oi)? )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1328:20: ^( SequenceType $it ( $oi)? )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(SequenceType, "SequenceType"), root_1);
-
- this.adaptor.addChild(root_1, stream_it.nextTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1328:39: ( $oi)?
- if ( stream_oi.hasNext() ) {
- this.adaptor.addChild(root_1, stream_oi.nextTree());
-
- }
- stream_oi.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_OccurrenceIndicator_return: (function() {
- XQueryParser.p_OccurrenceIndicator_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_OccurrenceIndicator_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1332:1: p_OccurrenceIndicator : ( QUESTION | STAR | PLUS );
- // $ANTLR start "p_OccurrenceIndicator"
- p_OccurrenceIndicator: function() {
- var retval = new XQueryParser.p_OccurrenceIndicator_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set461 = null;
-
- var set461_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1333:9: ( QUESTION | STAR | PLUS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- root_0 = this.adaptor.nil();
-
- set461=this.input.LT(1);
- if ( (this.input.LA(1)>=QUESTION && this.input.LA(1)<=PLUS) ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set461));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ItemType_return: (function() {
- XQueryParser.p_ItemType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ItemType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1337:1: p_ItemType : ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest );
- // $ANTLR start "p_ItemType"
- p_ItemType: function() {
- var retval = new XQueryParser.p_ItemType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ITEM463 = null;
- var LPAREN464 = null;
- var RPAREN465 = null;
- var p_KindTest462 = null;
- var p_FunctionTest466 = null;
- var p_AtomicOrUnionType467 = null;
- var p_ParenthesizedItemType468 = null;
- var p_JSONTest469 = null;
- var p_StructuredItemTest470 = null;
-
- var ITEM463_tree=null;
- var LPAREN464_tree=null;
- var RPAREN465_tree=null;
- var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
- var stream_ITEM=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ITEM");
- var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
- var stream_p_FunctionTest=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_FunctionTest");
- var stream_p_KindTest=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_KindTest");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1338:9: ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest )
- var alt172=7;
- alt172 = this.dfa172.predict(this.input);
- switch (alt172) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1338:11: p_KindTest
- this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_ItemType9980);
- p_KindTest462=this.p_KindTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_KindTest.add(p_KindTest462.getTree());
-
-
- // AST REWRITE
- // elements: p_KindTest
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1339:17: -> ^( KindTest p_KindTest )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1339:20: ^( KindTest p_KindTest )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(KindTest, "KindTest"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_KindTest.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:11: ( ITEM LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:11: ( ITEM LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:12: ITEM LPAREN RPAREN
- ITEM463=this.match(this.input,ITEM,XQueryParser.FOLLOW_ITEM_in_p_ItemType10017); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_ITEM.add(ITEM463);
-
- LPAREN464=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ItemType10019); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_LPAREN.add(LPAREN464);
-
- RPAREN465=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ItemType10021); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_RPAREN.add(RPAREN465);
-
-
-
-
-
-
- // AST REWRITE
- // elements: RPAREN, LPAREN, ITEM
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1341:17: -> ^( ItemTest ITEM LPAREN RPAREN )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1341:20: ^( ItemTest ITEM LPAREN RPAREN )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(ItemTest, "ItemTest"), root_1);
-
- this.adaptor.addChild(root_1, stream_ITEM.nextNode());
- this.adaptor.addChild(root_1, stream_LPAREN.nextNode());
- this.adaptor.addChild(root_1, stream_RPAREN.nextNode());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1342:11: p_FunctionTest
- this.pushFollow(XQueryParser.FOLLOW_p_FunctionTest_in_p_ItemType10062);
- p_FunctionTest466=this.p_FunctionTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_FunctionTest.add(p_FunctionTest466.getTree());
-
-
- // AST REWRITE
- // elements: p_FunctionTest
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1343:17: -> ^( FunctionTest p_FunctionTest )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1343:20: ^( FunctionTest p_FunctionTest )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(FunctionTest, "FunctionTest"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_FunctionTest.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1344:11: p_AtomicOrUnionType
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AtomicOrUnionType_in_p_ItemType10098);
- p_AtomicOrUnionType467=this.p_AtomicOrUnionType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicOrUnionType467.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1345:11: p_ParenthesizedItemType
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ParenthesizedItemType_in_p_ItemType10110);
- p_ParenthesizedItemType468=this.p_ParenthesizedItemType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParenthesizedItemType468.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1346:11: p_JSONTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONTest_in_p_ItemType10122);
- p_JSONTest469=this.p_JSONTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONTest469.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1347:11: p_StructuredItemTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StructuredItemTest_in_p_ItemType10134);
- p_StructuredItemTest470=this.p_StructuredItemTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StructuredItemTest470.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONTest_return: (function() {
- XQueryParser.p_JSONTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1350:1: p_JSONTest : ( p_JSONItemTest | p_JSONObjectTest | p_JSONArrayTest );
- // $ANTLR start "p_JSONTest"
- p_JSONTest: function() {
- var retval = new XQueryParser.p_JSONTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_JSONItemTest471 = null;
- var p_JSONObjectTest472 = null;
- var p_JSONArrayTest473 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1351:9: ( p_JSONItemTest | p_JSONObjectTest | p_JSONArrayTest )
- var alt173=3;
- switch ( this.input.LA(1) ) {
- case JSON_ITEM:
- alt173=1;
- break;
- case OBJECT:
- alt173=2;
- break;
- case ARRAY:
- alt173=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 173, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt173) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1351:11: p_JSONItemTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONItemTest_in_p_JSONTest10159);
- p_JSONItemTest471=this.p_JSONItemTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONItemTest471.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1352:11: p_JSONObjectTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONObjectTest_in_p_JSONTest10171);
- p_JSONObjectTest472=this.p_JSONObjectTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONObjectTest472.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1353:11: p_JSONArrayTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONArrayTest_in_p_JSONTest10183);
- p_JSONArrayTest473=this.p_JSONArrayTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONArrayTest473.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StructuredItemTest_return: (function() {
- XQueryParser.p_StructuredItemTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StructuredItemTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1356:1: p_StructuredItemTest : STRUCTURED_ITEM LPAREN RPAREN ;
- // $ANTLR start "p_StructuredItemTest"
- p_StructuredItemTest: function() {
- var retval = new XQueryParser.p_StructuredItemTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var STRUCTURED_ITEM474 = null;
- var LPAREN475 = null;
- var RPAREN476 = null;
-
- var STRUCTURED_ITEM474_tree=null;
- var LPAREN475_tree=null;
- var RPAREN476_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1357:9: ( STRUCTURED_ITEM LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1357:11: STRUCTURED_ITEM LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- STRUCTURED_ITEM474=this.match(this.input,STRUCTURED_ITEM,XQueryParser.FOLLOW_STRUCTURED_ITEM_in_p_StructuredItemTest10208); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STRUCTURED_ITEM474_tree = this.adaptor.create(STRUCTURED_ITEM474);
- this.adaptor.addChild(root_0, STRUCTURED_ITEM474_tree);
- }
- LPAREN475=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_StructuredItemTest10210); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN475_tree = this.adaptor.create(LPAREN475);
- this.adaptor.addChild(root_0, LPAREN475_tree);
- }
- RPAREN476=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_StructuredItemTest10212); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN476_tree = this.adaptor.create(RPAREN476);
- this.adaptor.addChild(root_0, RPAREN476_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONItemTest_return: (function() {
- XQueryParser.p_JSONItemTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONItemTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1360:1: p_JSONItemTest : JSON_ITEM LPAREN RPAREN ;
- // $ANTLR start "p_JSONItemTest"
- p_JSONItemTest: function() {
- var retval = new XQueryParser.p_JSONItemTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var JSON_ITEM477 = null;
- var LPAREN478 = null;
- var RPAREN479 = null;
-
- var JSON_ITEM477_tree=null;
- var LPAREN478_tree=null;
- var RPAREN479_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1361:9: ( JSON_ITEM LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1361:11: JSON_ITEM LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- JSON_ITEM477=this.match(this.input,JSON_ITEM,XQueryParser.FOLLOW_JSON_ITEM_in_p_JSONItemTest10237); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- JSON_ITEM477_tree = this.adaptor.create(JSON_ITEM477);
- this.adaptor.addChild(root_0, JSON_ITEM477_tree);
- }
- LPAREN478=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONItemTest10239); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN478_tree = this.adaptor.create(LPAREN478);
- this.adaptor.addChild(root_0, LPAREN478_tree);
- }
- RPAREN479=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONItemTest10241); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN479_tree = this.adaptor.create(RPAREN479);
- this.adaptor.addChild(root_0, RPAREN479_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONObjectTest_return: (function() {
- XQueryParser.p_JSONObjectTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONObjectTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1364:1: p_JSONObjectTest : OBJECT LPAREN RPAREN ;
- // $ANTLR start "p_JSONObjectTest"
- p_JSONObjectTest: function() {
- var retval = new XQueryParser.p_JSONObjectTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var OBJECT480 = null;
- var LPAREN481 = null;
- var RPAREN482 = null;
-
- var OBJECT480_tree=null;
- var LPAREN481_tree=null;
- var RPAREN482_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1365:9: ( OBJECT LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1365:11: OBJECT LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- OBJECT480=this.match(this.input,OBJECT,XQueryParser.FOLLOW_OBJECT_in_p_JSONObjectTest10266); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- OBJECT480_tree = this.adaptor.create(OBJECT480);
- this.adaptor.addChild(root_0, OBJECT480_tree);
- }
- LPAREN481=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONObjectTest10268); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN481_tree = this.adaptor.create(LPAREN481);
- this.adaptor.addChild(root_0, LPAREN481_tree);
- }
- RPAREN482=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONObjectTest10270); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN482_tree = this.adaptor.create(RPAREN482);
- this.adaptor.addChild(root_0, RPAREN482_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONArrayTest_return: (function() {
- XQueryParser.p_JSONArrayTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONArrayTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1368:1: p_JSONArrayTest : ARRAY LPAREN RPAREN ;
- // $ANTLR start "p_JSONArrayTest"
- p_JSONArrayTest: function() {
- var retval = new XQueryParser.p_JSONArrayTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ARRAY483 = null;
- var LPAREN484 = null;
- var RPAREN485 = null;
-
- var ARRAY483_tree=null;
- var LPAREN484_tree=null;
- var RPAREN485_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1369:9: ( ARRAY LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1369:11: ARRAY LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- ARRAY483=this.match(this.input,ARRAY,XQueryParser.FOLLOW_ARRAY_in_p_JSONArrayTest10295); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ARRAY483_tree = this.adaptor.create(ARRAY483);
- this.adaptor.addChild(root_0, ARRAY483_tree);
- }
- LPAREN484=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONArrayTest10297); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN484_tree = this.adaptor.create(LPAREN484);
- this.adaptor.addChild(root_0, LPAREN484_tree);
- }
- RPAREN485=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONArrayTest10299); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN485_tree = this.adaptor.create(RPAREN485);
- this.adaptor.addChild(root_0, RPAREN485_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AtomicOrUnionType_return: (function() {
- XQueryParser.p_AtomicOrUnionType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AtomicOrUnionType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1373:1: p_AtomicOrUnionType : p_EQName -> ^( AtomicOrUnionType p_EQName ) ;
- // $ANTLR start "p_AtomicOrUnionType"
- p_AtomicOrUnionType: function() {
- var retval = new XQueryParser.p_AtomicOrUnionType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName486 = null;
-
- var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1374:9: ( p_EQName -> ^( AtomicOrUnionType p_EQName ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1374:11: p_EQName
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_AtomicOrUnionType10325);
- p_EQName486=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_EQName.add(p_EQName486.getTree());
-
-
- // AST REWRITE
- // elements: p_EQName
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1375:17: -> ^( AtomicOrUnionType p_EQName )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1375:20: ^( AtomicOrUnionType p_EQName )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(AtomicOrUnionType, "AtomicOrUnionType"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_EQName.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_KindTest_return: (function() {
- XQueryParser.p_KindTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_KindTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1379:1: p_KindTest : ( p_DocumentTest | p_ElementTest | p_AttributeTest | p_SchemaElementTest | p_SchemaAttributeTest | p_PITest | p_CommentTest | p_TextTest | p_NamespaceNodeTest | p_AnyKindTest );
- // $ANTLR start "p_KindTest"
- p_KindTest: function() {
- var retval = new XQueryParser.p_KindTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_DocumentTest487 = null;
- var p_ElementTest488 = null;
- var p_AttributeTest489 = null;
- var p_SchemaElementTest490 = null;
- var p_SchemaAttributeTest491 = null;
- var p_PITest492 = null;
- var p_CommentTest493 = null;
- var p_TextTest494 = null;
- var p_NamespaceNodeTest495 = null;
- var p_AnyKindTest496 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1380:9: ( p_DocumentTest | p_ElementTest | p_AttributeTest | p_SchemaElementTest | p_SchemaAttributeTest | p_PITest | p_CommentTest | p_TextTest | p_NamespaceNodeTest | p_AnyKindTest )
- var alt174=10;
- switch ( this.input.LA(1) ) {
- case DOCUMENT_NODE:
- alt174=1;
- break;
- case ELEMENT:
- alt174=2;
- break;
- case ATTRIBUTE:
- alt174=3;
- break;
- case SCHEMA_ELEMENT:
- alt174=4;
- break;
- case SCHEMA_ATTRIBUTE:
- alt174=5;
- break;
- case PROCESSING_INSTRUCTION:
- alt174=6;
- break;
- case COMMENT:
- alt174=7;
- break;
- case TEXT:
- alt174=8;
- break;
- case NAMESPACE_NODE:
- alt174=9;
- break;
- case NODE:
- alt174=10;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 174, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt174) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1380:11: p_DocumentTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DocumentTest_in_p_KindTest10375);
- p_DocumentTest487=this.p_DocumentTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DocumentTest487.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1381:11: p_ElementTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ElementTest_in_p_KindTest10387);
- p_ElementTest488=this.p_ElementTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementTest488.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1382:11: p_AttributeTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AttributeTest_in_p_KindTest10399);
- p_AttributeTest489=this.p_AttributeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeTest489.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1383:11: p_SchemaElementTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SchemaElementTest_in_p_KindTest10411);
- p_SchemaElementTest490=this.p_SchemaElementTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaElementTest490.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1384:11: p_SchemaAttributeTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_SchemaAttributeTest_in_p_KindTest10423);
- p_SchemaAttributeTest491=this.p_SchemaAttributeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaAttributeTest491.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1385:11: p_PITest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PITest_in_p_KindTest10435);
- p_PITest492=this.p_PITest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PITest492.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1386:11: p_CommentTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_CommentTest_in_p_KindTest10447);
- p_CommentTest493=this.p_CommentTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CommentTest493.getTree());
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1387:11: p_TextTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TextTest_in_p_KindTest10459);
- p_TextTest494=this.p_TextTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TextTest494.getTree());
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1388:11: p_NamespaceNodeTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_NamespaceNodeTest_in_p_KindTest10471);
- p_NamespaceNodeTest495=this.p_NamespaceNodeTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NamespaceNodeTest495.getTree());
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1389:11: p_AnyKindTest
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AnyKindTest_in_p_KindTest10483);
- p_AnyKindTest496=this.p_AnyKindTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AnyKindTest496.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AnyKindTest_return: (function() {
- XQueryParser.p_AnyKindTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AnyKindTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1393:1: p_AnyKindTest : NODE LPAREN RPAREN ;
- // $ANTLR start "p_AnyKindTest"
- p_AnyKindTest: function() {
- var retval = new XQueryParser.p_AnyKindTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var NODE497 = null;
- var LPAREN498 = null;
- var RPAREN499 = null;
-
- var NODE497_tree=null;
- var LPAREN498_tree=null;
- var RPAREN499_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1394:9: ( NODE LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1394:11: NODE LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- NODE497=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_AnyKindTest10509); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- NODE497_tree = this.adaptor.create(NODE497);
- this.adaptor.addChild(root_0, NODE497_tree);
- }
- LPAREN498=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AnyKindTest10511); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN498_tree = this.adaptor.create(LPAREN498);
- this.adaptor.addChild(root_0, LPAREN498_tree);
- }
- RPAREN499=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AnyKindTest10513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN499_tree = this.adaptor.create(RPAREN499);
- this.adaptor.addChild(root_0, RPAREN499_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DocumentTest_return: (function() {
- XQueryParser.p_DocumentTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DocumentTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1398:1: p_DocumentTest : DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN ;
- // $ANTLR start "p_DocumentTest"
- p_DocumentTest: function() {
- var retval = new XQueryParser.p_DocumentTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var DOCUMENT_NODE500 = null;
- var LPAREN501 = null;
- var RPAREN504 = null;
- var p_ElementTest502 = null;
- var p_SchemaElementTest503 = null;
-
- var DOCUMENT_NODE500_tree=null;
- var LPAREN501_tree=null;
- var RPAREN504_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:9: ( DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:11: DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN
- root_0 = this.adaptor.nil();
-
- DOCUMENT_NODE500=this.match(this.input,DOCUMENT_NODE,XQueryParser.FOLLOW_DOCUMENT_NODE_in_p_DocumentTest10539); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- DOCUMENT_NODE500_tree = this.adaptor.create(DOCUMENT_NODE500);
- this.adaptor.addChild(root_0, DOCUMENT_NODE500_tree);
- }
- LPAREN501=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_DocumentTest10541); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN501_tree = this.adaptor.create(LPAREN501);
- this.adaptor.addChild(root_0, LPAREN501_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:32: ( p_ElementTest | p_SchemaElementTest )?
- var alt175=3;
- var LA175_0 = this.input.LA(1);
-
- if ( (LA175_0==ELEMENT) ) {
- alt175=1;
- }
- else if ( (LA175_0==SCHEMA_ELEMENT) ) {
- alt175=2;
- }
- switch (alt175) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:33: p_ElementTest
- this.pushFollow(XQueryParser.FOLLOW_p_ElementTest_in_p_DocumentTest10544);
- p_ElementTest502=this.p_ElementTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementTest502.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:49: p_SchemaElementTest
- this.pushFollow(XQueryParser.FOLLOW_p_SchemaElementTest_in_p_DocumentTest10548);
- p_SchemaElementTest503=this.p_SchemaElementTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaElementTest503.getTree());
-
-
- break;
-
- }
-
- RPAREN504=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_DocumentTest10552); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN504_tree = this.adaptor.create(RPAREN504);
- this.adaptor.addChild(root_0, RPAREN504_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TextTest_return: (function() {
- XQueryParser.p_TextTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TextTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1403:1: p_TextTest : TEXT LPAREN RPAREN ;
- // $ANTLR start "p_TextTest"
- p_TextTest: function() {
- var retval = new XQueryParser.p_TextTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var TEXT505 = null;
- var LPAREN506 = null;
- var RPAREN507 = null;
-
- var TEXT505_tree=null;
- var LPAREN506_tree=null;
- var RPAREN507_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1404:9: ( TEXT LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1404:11: TEXT LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- TEXT505=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_TextTest10578); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- TEXT505_tree = this.adaptor.create(TEXT505);
- this.adaptor.addChild(root_0, TEXT505_tree);
- }
- LPAREN506=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TextTest10580); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN506_tree = this.adaptor.create(LPAREN506);
- this.adaptor.addChild(root_0, LPAREN506_tree);
- }
- RPAREN507=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TextTest10582); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN507_tree = this.adaptor.create(RPAREN507);
- this.adaptor.addChild(root_0, RPAREN507_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CommentTest_return: (function() {
- XQueryParser.p_CommentTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CommentTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1408:1: p_CommentTest : COMMENT LPAREN RPAREN ;
- // $ANTLR start "p_CommentTest"
- p_CommentTest: function() {
- var retval = new XQueryParser.p_CommentTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COMMENT508 = null;
- var LPAREN509 = null;
- var RPAREN510 = null;
-
- var COMMENT508_tree=null;
- var LPAREN509_tree=null;
- var RPAREN510_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1409:9: ( COMMENT LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1409:11: COMMENT LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- COMMENT508=this.match(this.input,COMMENT,XQueryParser.FOLLOW_COMMENT_in_p_CommentTest10608); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMENT508_tree = this.adaptor.create(COMMENT508);
- this.adaptor.addChild(root_0, COMMENT508_tree);
- }
- LPAREN509=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_CommentTest10610); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN509_tree = this.adaptor.create(LPAREN509);
- this.adaptor.addChild(root_0, LPAREN509_tree);
- }
- RPAREN510=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_CommentTest10612); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN510_tree = this.adaptor.create(RPAREN510);
- this.adaptor.addChild(root_0, RPAREN510_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NamespaceNodeTest_return: (function() {
- XQueryParser.p_NamespaceNodeTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NamespaceNodeTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1413:1: p_NamespaceNodeTest : NAMESPACE_NODE LPAREN RPAREN ;
- // $ANTLR start "p_NamespaceNodeTest"
- p_NamespaceNodeTest: function() {
- var retval = new XQueryParser.p_NamespaceNodeTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var NAMESPACE_NODE511 = null;
- var LPAREN512 = null;
- var RPAREN513 = null;
-
- var NAMESPACE_NODE511_tree=null;
- var LPAREN512_tree=null;
- var RPAREN513_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1414:9: ( NAMESPACE_NODE LPAREN RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1414:11: NAMESPACE_NODE LPAREN RPAREN
- root_0 = this.adaptor.nil();
-
- NAMESPACE_NODE511=this.match(this.input,NAMESPACE_NODE,XQueryParser.FOLLOW_NAMESPACE_NODE_in_p_NamespaceNodeTest10638); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- NAMESPACE_NODE511_tree = this.adaptor.create(NAMESPACE_NODE511);
- this.adaptor.addChild(root_0, NAMESPACE_NODE511_tree);
- }
- LPAREN512=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_NamespaceNodeTest10640); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN512_tree = this.adaptor.create(LPAREN512);
- this.adaptor.addChild(root_0, LPAREN512_tree);
- }
- RPAREN513=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_NamespaceNodeTest10642); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN513_tree = this.adaptor.create(RPAREN513);
- this.adaptor.addChild(root_0, RPAREN513_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_PITest_return: (function() {
- XQueryParser.p_PITest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_PITest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1418:1: p_PITest : PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN ;
- // $ANTLR start "p_PITest"
- p_PITest: function() {
- var retval = new XQueryParser.p_PITest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var PROCESSING_INSTRUCTION514 = null;
- var LPAREN515 = null;
- var RPAREN518 = null;
- var p_NCName516 = null;
- var p_StringLiteral517 = null;
-
- var PROCESSING_INSTRUCTION514_tree=null;
- var LPAREN515_tree=null;
- var RPAREN518_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:9: ( PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:11: PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN
- root_0 = this.adaptor.nil();
-
- PROCESSING_INSTRUCTION514=this.match(this.input,PROCESSING_INSTRUCTION,XQueryParser.FOLLOW_PROCESSING_INSTRUCTION_in_p_PITest10668); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- PROCESSING_INSTRUCTION514_tree = this.adaptor.create(PROCESSING_INSTRUCTION514);
- this.adaptor.addChild(root_0, PROCESSING_INSTRUCTION514_tree);
- }
- LPAREN515=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_PITest10670); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN515_tree = this.adaptor.create(LPAREN515);
- this.adaptor.addChild(root_0, LPAREN515_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:41: ( p_NCName | p_StringLiteral )?
- var alt176=3;
- var LA176_0 = this.input.LA(1);
-
- if ( ((LA176_0>=ANCESTOR && LA176_0<=SKIP)||(LA176_0>=VALUE && LA176_0<=QUOT_ER)||LA176_0==L_NCName) ) {
- alt176=1;
- }
- else if ( ((LA176_0>=APOS && LA176_0<=QUOT)) ) {
- alt176=2;
- }
- switch (alt176) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:42: p_NCName
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_PITest10673);
- p_NCName516=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName516.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:53: p_StringLiteral
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_PITest10677);
- p_StringLiteral517=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral517.getTree());
-
-
- break;
-
- }
-
- RPAREN518=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_PITest10681); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN518_tree = this.adaptor.create(RPAREN518);
- this.adaptor.addChild(root_0, RPAREN518_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AttributeTest_return: (function() {
- XQueryParser.p_AttributeTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AttributeTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1423:1: p_AttributeTest : ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN ;
- // $ANTLR start "p_AttributeTest"
- p_AttributeTest: function() {
- var retval = new XQueryParser.p_AttributeTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ATTRIBUTE519 = null;
- var LPAREN520 = null;
- var COMMA522 = null;
- var RPAREN524 = null;
- var p_AttribNameOrWildcard521 = null;
- var p_TypeName523 = null;
-
- var ATTRIBUTE519_tree=null;
- var LPAREN520_tree=null;
- var COMMA522_tree=null;
- var RPAREN524_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:9: ( ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:11: ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN
- root_0 = this.adaptor.nil();
-
- ATTRIBUTE519=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_p_AttributeTest10707); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ATTRIBUTE519_tree = this.adaptor.create(ATTRIBUTE519);
- this.adaptor.addChild(root_0, ATTRIBUTE519_tree);
- }
- LPAREN520=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AttributeTest10709); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN520_tree = this.adaptor.create(LPAREN520);
- this.adaptor.addChild(root_0, LPAREN520_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:28: ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )?
- var alt178=2;
- var LA178_0 = this.input.LA(1);
-
- if ( ((LA178_0>=ANCESTOR && LA178_0<=SKIP)||(LA178_0>=VALUE && LA178_0<=QUOT_ER)||LA178_0==STAR||LA178_0==Q||LA178_0==L_NCName) ) {
- alt178=1;
- }
- switch (alt178) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:29: p_AttribNameOrWildcard ( COMMA p_TypeName )?
- this.pushFollow(XQueryParser.FOLLOW_p_AttribNameOrWildcard_in_p_AttributeTest10712);
- p_AttribNameOrWildcard521=this.p_AttribNameOrWildcard();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttribNameOrWildcard521.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:52: ( COMMA p_TypeName )?
- var alt177=2;
- var LA177_0 = this.input.LA(1);
-
- if ( (LA177_0==COMMA) ) {
- alt177=1;
- }
- switch (alt177) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:53: COMMA p_TypeName
- COMMA522=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_AttributeTest10715); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA522_tree = this.adaptor.create(COMMA522);
- this.adaptor.addChild(root_0, COMMA522_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_AttributeTest10717);
- p_TypeName523=this.p_TypeName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName523.getTree());
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
- RPAREN524=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AttributeTest10723); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN524_tree = this.adaptor.create(RPAREN524);
- this.adaptor.addChild(root_0, RPAREN524_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AttribNameOrWildcard_return: (function() {
- XQueryParser.p_AttribNameOrWildcard_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AttribNameOrWildcard_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1428:1: p_AttribNameOrWildcard : ( p_AttributeName | STAR );
- // $ANTLR start "p_AttribNameOrWildcard"
- p_AttribNameOrWildcard: function() {
- var retval = new XQueryParser.p_AttribNameOrWildcard_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var STAR526 = null;
- var p_AttributeName525 = null;
-
- var STAR526_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:9: ( p_AttributeName | STAR )
- var alt179=2;
- var LA179_0 = this.input.LA(1);
-
- if ( ((LA179_0>=ANCESTOR && LA179_0<=SKIP)||(LA179_0>=VALUE && LA179_0<=QUOT_ER)||LA179_0==Q||LA179_0==L_NCName) ) {
- alt179=1;
- }
- else if ( (LA179_0==STAR) ) {
- alt179=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 179, 0, this.input);
-
- throw nvae;
- }
- switch (alt179) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:11: p_AttributeName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AttributeName_in_p_AttribNameOrWildcard10751);
- p_AttributeName525=this.p_AttributeName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeName525.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:29: STAR
- root_0 = this.adaptor.nil();
-
- STAR526=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_AttribNameOrWildcard10755); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR526_tree = this.adaptor.create(STAR526);
- this.adaptor.addChild(root_0, STAR526_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SchemaAttributeTest_return: (function() {
- XQueryParser.p_SchemaAttributeTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SchemaAttributeTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1433:1: p_SchemaAttributeTest : SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN ;
- // $ANTLR start "p_SchemaAttributeTest"
- p_SchemaAttributeTest: function() {
- var retval = new XQueryParser.p_SchemaAttributeTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SCHEMA_ATTRIBUTE527 = null;
- var LPAREN528 = null;
- var RPAREN530 = null;
- var p_AttributeDeclaration529 = null;
-
- var SCHEMA_ATTRIBUTE527_tree=null;
- var LPAREN528_tree=null;
- var RPAREN530_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1434:9: ( SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1434:11: SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN
- root_0 = this.adaptor.nil();
-
- SCHEMA_ATTRIBUTE527=this.match(this.input,SCHEMA_ATTRIBUTE,XQueryParser.FOLLOW_SCHEMA_ATTRIBUTE_in_p_SchemaAttributeTest10781); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SCHEMA_ATTRIBUTE527_tree = this.adaptor.create(SCHEMA_ATTRIBUTE527);
- this.adaptor.addChild(root_0, SCHEMA_ATTRIBUTE527_tree);
- }
- LPAREN528=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SchemaAttributeTest10783); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN528_tree = this.adaptor.create(LPAREN528);
- this.adaptor.addChild(root_0, LPAREN528_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_AttributeDeclaration_in_p_SchemaAttributeTest10785);
- p_AttributeDeclaration529=this.p_AttributeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeDeclaration529.getTree());
- RPAREN530=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SchemaAttributeTest10787); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN530_tree = this.adaptor.create(RPAREN530);
- this.adaptor.addChild(root_0, RPAREN530_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AttributeDeclaration_return: (function() {
- XQueryParser.p_AttributeDeclaration_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AttributeDeclaration_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1438:1: p_AttributeDeclaration : p_AttributeName ;
- // $ANTLR start "p_AttributeDeclaration"
- p_AttributeDeclaration: function() {
- var retval = new XQueryParser.p_AttributeDeclaration_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_AttributeName531 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1439:9: ( p_AttributeName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1439:11: p_AttributeName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AttributeName_in_p_AttributeDeclaration10813);
- p_AttributeName531=this.p_AttributeName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeName531.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ElementTest_return: (function() {
- XQueryParser.p_ElementTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ElementTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1443:1: p_ElementTest : ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN ;
- // $ANTLR start "p_ElementTest"
- p_ElementTest: function() {
- var retval = new XQueryParser.p_ElementTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ELEMENT532 = null;
- var LPAREN533 = null;
- var COMMA535 = null;
- var QUESTION537 = null;
- var RPAREN538 = null;
- var p_ElementNameOrWildcard534 = null;
- var p_TypeName536 = null;
-
- var ELEMENT532_tree=null;
- var LPAREN533_tree=null;
- var COMMA535_tree=null;
- var QUESTION537_tree=null;
- var RPAREN538_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:9: ( ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:11: ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN
- root_0 = this.adaptor.nil();
-
- ELEMENT532=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_p_ElementTest10839); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ELEMENT532_tree = this.adaptor.create(ELEMENT532);
- this.adaptor.addChild(root_0, ELEMENT532_tree);
- }
- LPAREN533=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ElementTest10841); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN533_tree = this.adaptor.create(LPAREN533);
- this.adaptor.addChild(root_0, LPAREN533_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:26: ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )?
- var alt182=2;
- var LA182_0 = this.input.LA(1);
-
- if ( ((LA182_0>=ANCESTOR && LA182_0<=SKIP)||(LA182_0>=VALUE && LA182_0<=QUOT_ER)||LA182_0==STAR||LA182_0==Q||LA182_0==L_NCName) ) {
- alt182=1;
- }
- switch (alt182) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:27: p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )?
- this.pushFollow(XQueryParser.FOLLOW_p_ElementNameOrWildcard_in_p_ElementTest10844);
- p_ElementNameOrWildcard534=this.p_ElementNameOrWildcard();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementNameOrWildcard534.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:51: ( COMMA p_TypeName ( QUESTION )? )?
- var alt181=2;
- var LA181_0 = this.input.LA(1);
-
- if ( (LA181_0==COMMA) ) {
- alt181=1;
- }
- switch (alt181) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:52: COMMA p_TypeName ( QUESTION )?
- COMMA535=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ElementTest10847); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA535_tree = this.adaptor.create(COMMA535);
- this.adaptor.addChild(root_0, COMMA535_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_ElementTest10849);
- p_TypeName536=this.p_TypeName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName536.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:69: ( QUESTION )?
- var alt180=2;
- var LA180_0 = this.input.LA(1);
-
- if ( (LA180_0==QUESTION) ) {
- alt180=1;
- }
- switch (alt180) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:69: QUESTION
- QUESTION537=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_ElementTest10851); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- QUESTION537_tree = this.adaptor.create(QUESTION537);
- this.adaptor.addChild(root_0, QUESTION537_tree);
- }
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
- RPAREN538=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ElementTest10858); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN538_tree = this.adaptor.create(RPAREN538);
- this.adaptor.addChild(root_0, RPAREN538_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ElementNameOrWildcard_return: (function() {
- XQueryParser.p_ElementNameOrWildcard_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ElementNameOrWildcard_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1448:1: p_ElementNameOrWildcard : ( p_EQName | STAR );
- // $ANTLR start "p_ElementNameOrWildcard"
- p_ElementNameOrWildcard: function() {
- var retval = new XQueryParser.p_ElementNameOrWildcard_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var STAR540 = null;
- var p_EQName539 = null;
-
- var STAR540_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:9: ( p_EQName | STAR )
- var alt183=2;
- var LA183_0 = this.input.LA(1);
-
- if ( ((LA183_0>=ANCESTOR && LA183_0<=SKIP)||(LA183_0>=VALUE && LA183_0<=QUOT_ER)||LA183_0==Q||LA183_0==L_NCName) ) {
- alt183=1;
- }
- else if ( (LA183_0==STAR) ) {
- alt183=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 183, 0, this.input);
-
- throw nvae;
- }
- switch (alt183) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_ElementNameOrWildcard10884);
- p_EQName539=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName539.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:22: STAR
- root_0 = this.adaptor.nil();
-
- STAR540=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_ElementNameOrWildcard10888); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR540_tree = this.adaptor.create(STAR540);
- this.adaptor.addChild(root_0, STAR540_tree);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SchemaElementTest_return: (function() {
- XQueryParser.p_SchemaElementTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SchemaElementTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1452:1: p_SchemaElementTest : SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN ;
- // $ANTLR start "p_SchemaElementTest"
- p_SchemaElementTest: function() {
- var retval = new XQueryParser.p_SchemaElementTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SCHEMA_ELEMENT541 = null;
- var LPAREN542 = null;
- var RPAREN544 = null;
- var p_ElementDeclaration543 = null;
-
- var SCHEMA_ELEMENT541_tree=null;
- var LPAREN542_tree=null;
- var RPAREN544_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1453:9: ( SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1453:11: SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN
- root_0 = this.adaptor.nil();
-
- SCHEMA_ELEMENT541=this.match(this.input,SCHEMA_ELEMENT,XQueryParser.FOLLOW_SCHEMA_ELEMENT_in_p_SchemaElementTest10906); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SCHEMA_ELEMENT541_tree = this.adaptor.create(SCHEMA_ELEMENT541);
- this.adaptor.addChild(root_0, SCHEMA_ELEMENT541_tree);
- }
- LPAREN542=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SchemaElementTest10908); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN542_tree = this.adaptor.create(LPAREN542);
- this.adaptor.addChild(root_0, LPAREN542_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ElementDeclaration_in_p_SchemaElementTest10910);
- p_ElementDeclaration543=this.p_ElementDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementDeclaration543.getTree());
- RPAREN544=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SchemaElementTest10912); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN544_tree = this.adaptor.create(RPAREN544);
- this.adaptor.addChild(root_0, RPAREN544_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ElementDeclaration_return: (function() {
- XQueryParser.p_ElementDeclaration_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ElementDeclaration_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1457:1: p_ElementDeclaration : p_ElementName ;
- // $ANTLR start "p_ElementDeclaration"
- p_ElementDeclaration: function() {
- var retval = new XQueryParser.p_ElementDeclaration_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ElementName545 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1458:9: ( p_ElementName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1458:11: p_ElementName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ElementName_in_p_ElementDeclaration10938);
- p_ElementName545=this.p_ElementName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementName545.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AttributeName_return: (function() {
- XQueryParser.p_AttributeName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AttributeName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1462:1: p_AttributeName : p_EQName ;
- // $ANTLR start "p_AttributeName"
- p_AttributeName: function() {
- var retval = new XQueryParser.p_AttributeName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName546 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1463:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1463:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_AttributeName10964);
- p_EQName546=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName546.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ElementName_return: (function() {
- XQueryParser.p_ElementName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ElementName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1467:1: p_ElementName : p_EQName ;
- // $ANTLR start "p_ElementName"
- p_ElementName: function() {
- var retval = new XQueryParser.p_ElementName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName547 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1468:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1468:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_ElementName10990);
- p_EQName547=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName547.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TypeName_return: (function() {
- XQueryParser.p_TypeName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TypeName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1472:1: p_TypeName : p_EQName ;
- // $ANTLR start "p_TypeName"
- p_TypeName: function() {
- var retval = new XQueryParser.p_TypeName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_EQName548 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1473:9: ( p_EQName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1473:11: p_EQName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_TypeName11016);
- p_EQName548=this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName548.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FunctionTest_return: (function() {
- XQueryParser.p_FunctionTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FunctionTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1477:1: p_FunctionTest : ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest ) ;
- // $ANTLR start "p_FunctionTest"
- p_FunctionTest: function() {
- var retval = new XQueryParser.p_FunctionTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Annotation549 = null;
- var p_AnyFunctionTest550 = null;
- var p_TypedFunctionTest551 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:9: ( ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: ( p_Annotation )*
- loop184:
- do {
- var alt184=2;
- var LA184_0 = this.input.LA(1);
-
- if ( (LA184_0==ANN_PERCENT) ) {
- alt184=1;
- }
-
-
- switch (alt184) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: p_Annotation
- this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_FunctionTest11042);
- p_Annotation549=this.p_Annotation();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation549.getTree());
-
-
- break;
-
- default :
- break loop184;
- }
- } while (true);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:25: ( p_AnyFunctionTest | p_TypedFunctionTest )
- var alt185=2;
- var LA185_0 = this.input.LA(1);
-
- if ( (LA185_0==FUNCTION) ) {
- var LA185_1 = this.input.LA(2);
-
- if ( (LA185_1==LPAREN) ) {
- var LA185_2 = this.input.LA(3);
-
- if ( (LA185_2==STAR) ) {
- alt185=1;
- }
- else if ( ((LA185_2>=ANCESTOR && LA185_2<=SKIP)||(LA185_2>=VALUE && LA185_2<=QUOT_ER)||(LA185_2>=LPAREN && LA185_2<=RPAREN)||LA185_2==ANN_PERCENT||LA185_2==Q||LA185_2==L_NCName) ) {
- alt185=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 185, 2, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 185, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 185, 0, this.input);
-
- throw nvae;
- }
- switch (alt185) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:26: p_AnyFunctionTest
- this.pushFollow(XQueryParser.FOLLOW_p_AnyFunctionTest_in_p_FunctionTest11046);
- p_AnyFunctionTest550=this.p_AnyFunctionTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AnyFunctionTest550.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:46: p_TypedFunctionTest
- this.pushFollow(XQueryParser.FOLLOW_p_TypedFunctionTest_in_p_FunctionTest11050);
- p_TypedFunctionTest551=this.p_TypedFunctionTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypedFunctionTest551.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AnyFunctionTest_return: (function() {
- XQueryParser.p_AnyFunctionTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AnyFunctionTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1482:1: p_AnyFunctionTest : FUNCTION LPAREN STAR RPAREN ;
- // $ANTLR start "p_AnyFunctionTest"
- p_AnyFunctionTest: function() {
- var retval = new XQueryParser.p_AnyFunctionTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var FUNCTION552 = null;
- var LPAREN553 = null;
- var STAR554 = null;
- var RPAREN555 = null;
-
- var FUNCTION552_tree=null;
- var LPAREN553_tree=null;
- var STAR554_tree=null;
- var RPAREN555_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1483:9: ( FUNCTION LPAREN STAR RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1483:11: FUNCTION LPAREN STAR RPAREN
- root_0 = this.adaptor.nil();
-
- FUNCTION552=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_AnyFunctionTest11077); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- FUNCTION552_tree = this.adaptor.create(FUNCTION552);
- this.adaptor.addChild(root_0, FUNCTION552_tree);
- }
- LPAREN553=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AnyFunctionTest11079); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN553_tree = this.adaptor.create(LPAREN553);
- this.adaptor.addChild(root_0, LPAREN553_tree);
- }
- STAR554=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_AnyFunctionTest11081); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- STAR554_tree = this.adaptor.create(STAR554);
- this.adaptor.addChild(root_0, STAR554_tree);
- }
- RPAREN555=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AnyFunctionTest11083); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN555_tree = this.adaptor.create(RPAREN555);
- this.adaptor.addChild(root_0, RPAREN555_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TypedFunctionTest_return: (function() {
- XQueryParser.p_TypedFunctionTest_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TypedFunctionTest_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1487:1: p_TypedFunctionTest : FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType ;
- // $ANTLR start "p_TypedFunctionTest"
- p_TypedFunctionTest: function() {
- var retval = new XQueryParser.p_TypedFunctionTest_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var FUNCTION556 = null;
- var LPAREN557 = null;
- var COMMA559 = null;
- var RPAREN561 = null;
- var AS562 = null;
- var p_SequenceType558 = null;
- var p_SequenceType560 = null;
- var p_SequenceType563 = null;
-
- var FUNCTION556_tree=null;
- var LPAREN557_tree=null;
- var COMMA559_tree=null;
- var RPAREN561_tree=null;
- var AS562_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:9: ( FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:11: FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType
- root_0 = this.adaptor.nil();
-
- FUNCTION556=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_TypedFunctionTest11109); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- FUNCTION556_tree = this.adaptor.create(FUNCTION556);
- this.adaptor.addChild(root_0, FUNCTION556_tree);
- }
- LPAREN557=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypedFunctionTest11111); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN557_tree = this.adaptor.create(LPAREN557);
- this.adaptor.addChild(root_0, LPAREN557_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:27: ( p_SequenceType ( COMMA p_SequenceType )* )?
- var alt187=2;
- var LA187_0 = this.input.LA(1);
-
- if ( ((LA187_0>=ANCESTOR && LA187_0<=SKIP)||(LA187_0>=VALUE && LA187_0<=QUOT_ER)||LA187_0==LPAREN||LA187_0==ANN_PERCENT||LA187_0==Q||LA187_0==L_NCName) ) {
- alt187=1;
- }
- switch (alt187) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:28: p_SequenceType ( COMMA p_SequenceType )*
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11114);
- p_SequenceType558=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType558.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:43: ( COMMA p_SequenceType )*
- loop186:
- do {
- var alt186=2;
- var LA186_0 = this.input.LA(1);
-
- if ( (LA186_0==COMMA) ) {
- alt186=1;
- }
-
-
- switch (alt186) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:44: COMMA p_SequenceType
- COMMA559=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_TypedFunctionTest11117); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA559_tree = this.adaptor.create(COMMA559);
- this.adaptor.addChild(root_0, COMMA559_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11119);
- p_SequenceType560=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType560.getTree());
-
-
- break;
-
- default :
- break loop186;
- }
- } while (true);
-
-
-
- break;
-
- }
-
- RPAREN561=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypedFunctionTest11125); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN561_tree = this.adaptor.create(RPAREN561);
- this.adaptor.addChild(root_0, RPAREN561_tree);
- }
- AS562=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TypedFunctionTest11127); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- AS562_tree = this.adaptor.create(AS562);
- this.adaptor.addChild(root_0, AS562_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11129);
- p_SequenceType563=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType563.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ParenthesizedItemType_return: (function() {
- XQueryParser.p_ParenthesizedItemType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ParenthesizedItemType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1492:1: p_ParenthesizedItemType : LPAREN p_ItemType RPAREN ;
- // $ANTLR start "p_ParenthesizedItemType"
- p_ParenthesizedItemType: function() {
- var retval = new XQueryParser.p_ParenthesizedItemType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LPAREN564 = null;
- var RPAREN566 = null;
- var p_ItemType565 = null;
-
- var LPAREN564_tree=null;
- var RPAREN566_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1493:9: ( LPAREN p_ItemType RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1493:11: LPAREN p_ItemType RPAREN
- root_0 = this.adaptor.nil();
-
- LPAREN564=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ParenthesizedItemType11155); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN564_tree = this.adaptor.create(LPAREN564);
- this.adaptor.addChild(root_0, LPAREN564_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_p_ParenthesizedItemType11157);
- p_ItemType565=this.p_ItemType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ItemType565.getTree());
- RPAREN566=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ParenthesizedItemType11159); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN566_tree = this.adaptor.create(RPAREN566);
- this.adaptor.addChild(root_0, RPAREN566_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StringLiteral_return: (function() {
- XQueryParser.p_StringLiteral_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StringLiteral_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1522:1: p_StringLiteral : ( QUOT pg_QuotStringLiteralContent QUOT -> ^( StringLiteral ( pg_QuotStringLiteralContent )* ) | APOS pg_AposStringLiteralContent APOS -> ^( StringLiteral ( pg_AposStringLiteralContent )* ) );
- // $ANTLR start "p_StringLiteral"
- p_StringLiteral: function() {
- var retval = new XQueryParser.p_StringLiteral_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var QUOT567 = null;
- var QUOT569 = null;
- var APOS570 = null;
- var APOS572 = null;
- var pg_QuotStringLiteralContent568 = null;
- var pg_AposStringLiteralContent571 = null;
-
- var QUOT567_tree=null;
- var QUOT569_tree=null;
- var APOS570_tree=null;
- var APOS572_tree=null;
- var stream_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token APOS");
- var stream_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token QUOT");
- var stream_pg_QuotStringLiteralContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_QuotStringLiteralContent");
- var stream_pg_AposStringLiteralContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_AposStringLiteralContent");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1523:9: ( QUOT pg_QuotStringLiteralContent QUOT -> ^( StringLiteral ( pg_QuotStringLiteralContent )* ) | APOS pg_AposStringLiteralContent APOS -> ^( StringLiteral ( pg_AposStringLiteralContent )* ) )
- var alt188=2;
- var LA188_0 = this.input.LA(1);
-
- if ( (LA188_0==QUOT) ) {
- alt188=1;
- }
- else if ( (LA188_0==APOS) ) {
- alt188=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 188, 0, this.input);
-
- throw nvae;
- }
- switch (alt188) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1523:11: QUOT pg_QuotStringLiteralContent QUOT
- QUOT567=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_StringLiteral11210); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_QUOT.add(QUOT567);
-
- if ( this.state.backtracking===0 ) {
- this.pushStringLexer(false);
- }
- this.pushFollow(XQueryParser.FOLLOW_pg_QuotStringLiteralContent_in_p_StringLiteral11214);
- pg_QuotStringLiteralContent568=this.pg_QuotStringLiteralContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pg_QuotStringLiteralContent.add(pg_QuotStringLiteralContent568.getTree());
- QUOT569=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_StringLiteral11216); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_QUOT.add(QUOT569);
-
- if ( this.state.backtracking===0 ) {
- this.popLexer();
- }
-
-
- // AST REWRITE
- // elements: pg_QuotStringLiteralContent
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1524:17: -> ^( StringLiteral ( pg_QuotStringLiteralContent )* )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1524:20: ^( StringLiteral ( pg_QuotStringLiteralContent )* )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(StringLiteral, "StringLiteral"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1524:36: ( pg_QuotStringLiteralContent )*
- while ( stream_pg_QuotStringLiteralContent.hasNext() ) {
- this.adaptor.addChild(root_1, stream_pg_QuotStringLiteralContent.nextTree());
-
- }
- stream_pg_QuotStringLiteralContent.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1525:11: APOS pg_AposStringLiteralContent APOS
- APOS570=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_StringLiteral11255); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_APOS.add(APOS570);
-
- if ( this.state.backtracking===0 ) {
- this.pushStringLexer(true);
- }
- this.pushFollow(XQueryParser.FOLLOW_pg_AposStringLiteralContent_in_p_StringLiteral11259);
- pg_AposStringLiteralContent571=this.pg_AposStringLiteralContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_pg_AposStringLiteralContent.add(pg_AposStringLiteralContent571.getTree());
- APOS572=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_StringLiteral11261); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_APOS.add(APOS572);
-
- if ( this.state.backtracking===0 ) {
- this.popLexer();
- }
-
-
- // AST REWRITE
- // elements: pg_AposStringLiteralContent
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1526:17: -> ^( StringLiteral ( pg_AposStringLiteralContent )* )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1526:20: ^( StringLiteral ( pg_AposStringLiteralContent )* )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(StringLiteral, "StringLiteral"), root_1);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1526:36: ( pg_AposStringLiteralContent )*
- while ( stream_pg_AposStringLiteralContent.hasNext() ) {
- this.adaptor.addChild(root_1, stream_pg_AposStringLiteralContent.nextTree());
-
- }
- stream_pg_AposStringLiteralContent.reset();
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- this.addString(retval.start, retval.stop);
- }
- return retval;
- },
-
- // inline static return class
- pg_QuotStringLiteralContent_return: (function() {
- XQueryParser.pg_QuotStringLiteralContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_QuotStringLiteralContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1532:1: pg_QuotStringLiteralContent : ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )* ;
- // $ANTLR start "pg_QuotStringLiteralContent"
- pg_QuotStringLiteralContent: function() {
- var retval = new XQueryParser.pg_QuotStringLiteralContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set573 = null;
-
- var set573_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:9: ( ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:11: ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )*
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:11: ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )*
- loop189:
- do {
- var alt189=2;
- var LA189_0 = this.input.LA(1);
-
- if ( ((LA189_0>=L_QuotAttrContentChar && LA189_0<=HASH)||(LA189_0>=COMMA && LA189_0<=APOS)||(LA189_0>=NCNameStartChar && LA189_0<=BlockExpr)) ) {
- alt189=1;
- }
-
-
- switch (alt189) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- set573=this.input.LT(1);
- if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=APOS)||(this.input.LA(1)>=NCNameStartChar && this.input.LA(1)<=BlockExpr) ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set573));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
- break;
-
- default :
- break loop189;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_AposStringLiteralContent_return: (function() {
- XQueryParser.pg_AposStringLiteralContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_AposStringLiteralContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1540:1: pg_AposStringLiteralContent : ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )* ;
- // $ANTLR start "pg_AposStringLiteralContent"
- pg_AposStringLiteralContent: function() {
- var retval = new XQueryParser.pg_AposStringLiteralContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set574 = null;
-
- var set574_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:9: ( ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:11: ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )*
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:11: ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )*
- loop190:
- do {
- var alt190=2;
- var LA190_0 = this.input.LA(1);
-
- if ( ((LA190_0>=L_QuotAttrContentChar && LA190_0<=HASH)||(LA190_0>=COMMA && LA190_0<=CHARREF_HEX)||(LA190_0>=QUOT && LA190_0<=BlockExpr)) ) {
- alt190=1;
- }
-
-
- switch (alt190) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- set574=this.input.LT(1);
- if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=CHARREF_HEX)||(this.input.LA(1)>=QUOT && this.input.LA(1)<=BlockExpr) ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set574));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
- break;
-
- default :
- break loop190;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ElementContentChar_return: (function() {
- XQueryParser.p_ElementContentChar_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ElementContentChar_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1555:1: p_ElementContentChar : L_ElementContentChar ;
- // $ANTLR start "p_ElementContentChar"
- p_ElementContentChar: function() {
- var retval = new XQueryParser.p_ElementContentChar_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_ElementContentChar575 = null;
-
- var L_ElementContentChar575_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1556:9: ( L_ElementContentChar )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1556:11: L_ElementContentChar
- root_0 = this.adaptor.nil();
-
- L_ElementContentChar575=this.match(this.input,L_ElementContentChar,XQueryParser.FOLLOW_L_ElementContentChar_in_p_ElementContentChar11436); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_ElementContentChar575_tree = this.adaptor.create(L_ElementContentChar575);
- this.adaptor.addChild(root_0, L_ElementContentChar575_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_QuotAttrContentChar_return: (function() {
- XQueryParser.p_QuotAttrContentChar_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_QuotAttrContentChar_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1560:1: p_QuotAttrContentChar : L_QuotAttrContentChar -> ^( AttributeValueChar L_QuotAttrContentChar ) ;
- // $ANTLR start "p_QuotAttrContentChar"
- p_QuotAttrContentChar: function() {
- var retval = new XQueryParser.p_QuotAttrContentChar_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_QuotAttrContentChar576 = null;
-
- var L_QuotAttrContentChar576_tree=null;
- var stream_L_QuotAttrContentChar=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token L_QuotAttrContentChar");
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1561:9: ( L_QuotAttrContentChar -> ^( AttributeValueChar L_QuotAttrContentChar ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1561:11: L_QuotAttrContentChar
- L_QuotAttrContentChar576=this.match(this.input,L_QuotAttrContentChar,XQueryParser.FOLLOW_L_QuotAttrContentChar_in_p_QuotAttrContentChar11462); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_L_QuotAttrContentChar.add(L_QuotAttrContentChar576);
-
-
-
- // AST REWRITE
- // elements: L_QuotAttrContentChar
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1562:17: -> ^( AttributeValueChar L_QuotAttrContentChar )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1562:20: ^( AttributeValueChar L_QuotAttrContentChar )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(AttributeValueChar, "AttributeValueChar"), root_1);
-
- this.adaptor.addChild(root_1, stream_L_QuotAttrContentChar.nextNode());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AposAttrContentChar_return: (function() {
- XQueryParser.p_AposAttrContentChar_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AposAttrContentChar_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1566:1: p_AposAttrContentChar : L_AposAttrContentChar -> ^( AttributeValueChar L_AposAttrContentChar ) ;
- // $ANTLR start "p_AposAttrContentChar"
- p_AposAttrContentChar: function() {
- var retval = new XQueryParser.p_AposAttrContentChar_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_AposAttrContentChar577 = null;
-
- var L_AposAttrContentChar577_tree=null;
- var stream_L_AposAttrContentChar=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token L_AposAttrContentChar");
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1567:9: ( L_AposAttrContentChar -> ^( AttributeValueChar L_AposAttrContentChar ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1567:11: L_AposAttrContentChar
- L_AposAttrContentChar577=this.match(this.input,L_AposAttrContentChar,XQueryParser.FOLLOW_L_AposAttrContentChar_in_p_AposAttrContentChar11512); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_L_AposAttrContentChar.add(L_AposAttrContentChar577);
-
-
-
- // AST REWRITE
- // elements: L_AposAttrContentChar
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1568:17: -> ^( AttributeValueChar L_AposAttrContentChar )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1568:20: ^( AttributeValueChar L_AposAttrContentChar )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(AttributeValueChar, "AttributeValueChar"), root_1);
-
- this.adaptor.addChild(root_1, stream_L_AposAttrContentChar.nextNode());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_EQName_return: (function() {
- XQueryParser.p_EQName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_EQName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1583:1: p_EQName : ( p_QName | p_URIQualifiedName );
- // $ANTLR start "p_EQName"
- p_EQName: function() {
- var retval = new XQueryParser.p_EQName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_QName578 = null;
- var p_URIQualifiedName579 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1584:9: ( p_QName | p_URIQualifiedName )
- var alt191=2;
- var LA191_0 = this.input.LA(1);
-
- if ( ((LA191_0>=ANCESTOR && LA191_0<=SKIP)||(LA191_0>=VALUE && LA191_0<=QUOT_ER)||LA191_0==L_NCName) ) {
- alt191=1;
- }
- else if ( (LA191_0==Q) ) {
- alt191=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 191, 0, this.input);
-
- throw nvae;
- }
- switch (alt191) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1584:11: p_QName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_EQName11581);
- p_QName578=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName578.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1585:11: p_URIQualifiedName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_URIQualifiedName_in_p_EQName11593);
- p_URIQualifiedName579=this.p_URIQualifiedName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_URIQualifiedName579.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_URIQualifiedName_return: (function() {
- XQueryParser.p_URIQualifiedName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_URIQualifiedName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1588:1: p_URIQualifiedName : p_BracedURILiteral p_NCName ;
- // $ANTLR start "p_URIQualifiedName"
- p_URIQualifiedName: function() {
- var retval = new XQueryParser.p_URIQualifiedName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_BracedURILiteral580 = null;
- var p_NCName581 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1589:9: ( p_BracedURILiteral p_NCName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1589:11: p_BracedURILiteral p_NCName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_BracedURILiteral_in_p_URIQualifiedName11618);
- p_BracedURILiteral580=this.p_BracedURILiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BracedURILiteral580.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_URIQualifiedName11620);
- p_NCName581=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName581.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_BracedURILiteral_return: (function() {
- XQueryParser.p_BracedURILiteral_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_BracedURILiteral_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1592:1: p_BracedURILiteral : Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET ;
- // $ANTLR start "p_BracedURILiteral"
- p_BracedURILiteral: function() {
- var retval = new XQueryParser.p_BracedURILiteral_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var Q582 = null;
- var LBRACKET583 = null;
- var set584 = null;
- var RBRACKET585 = null;
-
- var Q582_tree=null;
- var LBRACKET583_tree=null;
- var set584_tree=null;
- var RBRACKET585_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:9: ( Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:11: Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET
- root_0 = this.adaptor.nil();
-
- Q582=this.match(this.input,Q,XQueryParser.FOLLOW_Q_in_p_BracedURILiteral11645); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- Q582_tree = this.adaptor.create(Q582);
- this.adaptor.addChild(root_0, Q582_tree);
- }
- LBRACKET583=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BracedURILiteral11647); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET583_tree = this.adaptor.create(LBRACKET583);
- this.adaptor.addChild(root_0, LBRACKET583_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:22: ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )*
- loop192:
- do {
- var alt192=2;
- var LA192_0 = this.input.LA(1);
-
- if ( ((LA192_0>=L_QuotAttrContentChar && LA192_0<=R_UNION_BRACKET)||(LA192_0>=LSQUARE && LA192_0<=HASH)||(LA192_0>=COMMA && LA192_0<=BlockExpr)) ) {
- alt192=1;
- }
-
-
- switch (alt192) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- set584=this.input.LT(1);
- if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=R_UNION_BRACKET)||(this.input.LA(1)>=LSQUARE && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=BlockExpr) ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set584));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
- break;
-
- default :
- break loop192;
- }
- } while (true);
-
- RBRACKET585=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BracedURILiteral11673); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET585_tree = this.adaptor.create(RBRACKET585);
- this.adaptor.addChild(root_0, RBRACKET585_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_QName_return: (function() {
- XQueryParser.p_QName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_QName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1597:1: p_QName : ( pg_QName | p_NCName -> ^( QName p_NCName ) );
- // $ANTLR start "p_QName"
- p_QName: function() {
- var retval = new XQueryParser.p_QName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pg_QName586 = null;
- var p_NCName587 = null;
-
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- this.setWsExplicit(true);
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1599:9: ( pg_QName | p_NCName -> ^( QName p_NCName ) )
- var alt193=2;
- var LA193_0 = this.input.LA(1);
-
- if ( ((LA193_0>=ANCESTOR && LA193_0<=SKIP)||(LA193_0>=VALUE && LA193_0<=QUOT_ER)||LA193_0==L_NCName) ) {
- var LA193_1 = this.input.LA(2);
-
- if ( (LA193_1==COLON) ) {
- alt193=1;
- }
- else if ( (LA193_1==EOF||(LA193_1>=AND && LA193_1<=AT)||(LA193_1>=BY && LA193_1<=CASTABLE)||LA193_1==COLLATION||LA193_1==DEFAULT||(LA193_1>=DESCENDING && LA193_1<=DIV)||LA193_1==EMPTY||LA193_1==EQ||(LA193_1>=EXCEPT && LA193_1<=EXTERNAL)||(LA193_1>=FOR && LA193_1<=GE)||(LA193_1>=GT && LA193_1<=IDIV)||LA193_1==IN||(LA193_1>=INSTANCE && LA193_1<=IS)||LA193_1==LE||(LA193_1>=LET && LA193_1<=MOD)||LA193_1==NE||LA193_1==NODE||(LA193_1>=OR && LA193_1<=ORDER)||(LA193_1>=RETURN && LA193_1<=SATISFIES)||LA193_1==STABLE||(LA193_1>=TO && LA193_1<=TREAT)||LA193_1==UNION||LA193_1==VARIABLE||LA193_1==WHERE||LA193_1==ALLOWING||LA193_1==COUNT||(LA193_1>=DECIMAL_SEPARATOR && LA193_1<=MINUS_SIGN)||(LA193_1>=NAN && LA193_1<=PREVIOUS)||LA193_1==START||LA193_1==WHEN||(LA193_1>=ZERO_DIGIT && LA193_1<=BEFORE)||LA193_1==INTO||LA193_1==MODIFY||LA193_1==UPDATING||LA193_1==WITH||LA193_1==CONTAINS||LA193_1==PARAGRAPHS||LA193_1==SCORE||LA193_1==SENTENCES||LA193_1==TIMES||LA193_1==WORDS||(LA193_1>=CHECK && LA193_1<=COLLECTION)||(LA193_1>=FOREACH && LA193_1<=ON)||(LA193_1>=CONCAT && LA193_1<=DOLLAR)||(LA193_1>=R_UNION_BRACKET && LA193_1<=HASH)||(LA193_1>=COMMA && LA193_1<=BANG)||LA193_1==EMPTY_CLOSE_TAG||(LA193_1>=SEMICOLON && LA193_1<=VBAR)||(LA193_1>=APOS && LA193_1<=QUOT)||LA193_1==S) ) {
- alt193=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 193, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 193, 0, this.input);
-
- throw nvae;
- }
- switch (alt193) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1599:11: pg_QName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pg_QName_in_p_QName11715);
- pg_QName586=this.pg_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_QName586.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1600:11: p_NCName
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_QName11727);
- p_NCName587=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(p_NCName587.getTree());
-
-
- // AST REWRITE
- // elements: p_NCName
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1601:17: -> ^( QName p_NCName )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1601:20: ^( QName p_NCName )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_NCName.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- this.setWsExplicit(false);
- }
- return retval;
- },
-
- // inline static return class
- pg_FQName_return: (function() {
- XQueryParser.pg_FQName_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_FQName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1605:1: pg_FQName : ( pg_QName | p_FNCName -> ^( QName p_FNCName ) );
- // $ANTLR start "pg_FQName"
- pg_FQName: function() {
- var retval = new XQueryParser.pg_FQName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var pg_QName588 = null;
- var p_FNCName589 = null;
-
- var stream_p_FNCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_FNCName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1606:9: ( pg_QName | p_FNCName -> ^( QName p_FNCName ) )
- var alt194=2;
- switch ( this.input.LA(1) ) {
- case ANCESTOR:
- case ANCESTOR_OR_SELF:
- case AND:
- case AS:
- case ASCENDING:
- case AT:
- case BASE_URI:
- case BOUNDARY_SPACE:
- case BY:
- case CASE:
- case CAST:
- case CASTABLE:
- case CHILD:
- case COLLATION:
- case CONSTRUCTION:
- case COPY_NAMESPACES:
- case DECLARE:
- case DEFAULT:
- case DESCENDANT:
- case DESCENDANT_OR_SELF:
- case DESCENDING:
- case DIV:
- case DOCUMENT:
- case ELSE:
- case EMPTY:
- case ENCODING:
- case EQ:
- case EVERY:
- case EXCEPT:
- case EXTERNAL:
- case FOLLOWING:
- case FOLLOWING_SIBLING:
- case FOR:
- case FUNCTION:
- case GE:
- case GREATEST:
- case GT:
- case IDIV:
- case IMPORT:
- case IN:
- case INHERIT:
- case INSTANCE:
- case INTERSECT:
- case IS:
- case LAX:
- case LE:
- case LEAST:
- case LET:
- case LT:
- case MOD:
- case MODULE:
- case NAMESPACE:
- case NE:
- case NO_INHERIT:
- case NO_PRESERVE:
- case JSON:
- case OF:
- case OPTION:
- case OR:
- case ORDER:
- case ORDERED:
- case ORDERING:
- case PARENT:
- case PRECEDING:
- case PRECEDING_SIBLING:
- case PRESERVE:
- case RETURN:
- case SATISFIES:
- case SCHEMA:
- case SELF:
- case SOME:
- case STABLE:
- case STRICT:
- case STRIP:
- case THEN:
- case TO:
- case TREAT:
- case UNION:
- case UNORDERED:
- case VALIDATE:
- case VARIABLE:
- case VERSION:
- case WHERE:
- case XQUERY:
- case ALLOWING:
- case CATCH:
- case CONTEXT:
- case COUNT:
- case DECIMAL_FORMAT:
- case DECIMAL_SEPARATOR:
- case DIGIT:
- case END:
- case GROUP:
- case GROUPING_SEPARATOR:
- case INFINITY:
- case MINUS_SIGN:
- case NAN:
- case NEXT:
- case ONLY:
- case PATTERN_SEPARATOR:
- case PERCENT:
- case PER_MILLE:
- case PREVIOUS:
- case SLIDING:
- case START:
- case TRY:
- case TUMBLING:
- case TYPE:
- case WHEN:
- case WINDOW:
- case ZERO_DIGIT:
- case AFTER:
- case BEFORE:
- case COPY:
- case DELETE:
- case FIRST:
- case INSERT:
- case INTO:
- case POSITION:
- case APPEND:
- case LAST:
- case MODIFY:
- case NODES:
- case RENAME:
- case REPLACE:
- case REVALIDATION:
- case SKIP:
- case VALUE:
- case WITH:
- case ALL:
- case ANY:
- case CONTAINS:
- case CONTENT:
- case DIACRITICS:
- case DIFFERENT:
- case DISTANCE:
- case ENTIRE:
- case EXACTLY:
- case FROM:
- case FT_OPTION:
- case FTAND:
- case FTNOT:
- case FTOR:
- case INSENSITIVE:
- case LANGUAGE:
- case LEVELS:
- case LOWERCASE:
- case MOST:
- case NO:
- case NOT:
- case OCCURS:
- case PARAGRAPH:
- case PARAGRAPHS:
- case PHRASE:
- case RELATIONSHIP:
- case SAME:
- case SCORE:
- case SENSITIVE:
- case SENTENCE:
- case SENTENCES:
- case STEMMING:
- case STOP:
- case THESAURUS:
- case TIMES:
- case UPPERCASE:
- case USING:
- case WEIGHT:
- case WILDCARDS:
- case WITHOUT:
- case WORD:
- case WORDS:
- case BREAK:
- case CONTINUE:
- case EXIT:
- case LOOP:
- case RETURNING:
- case CHECK:
- case COLLECTION:
- case CONSTRAINT:
- case FOREACH:
- case FOREIGN:
- case INDEX:
- case INTEGRITY:
- case KEY:
- case ON:
- case UNIQUE:
- case AMP_ER:
- case APOS_ER:
- case QUOT_ER:
- case L_NCName:
- var LA194_1 = this.input.LA(2);
-
- if ( (LA194_1==COLON) ) {
- alt194=1;
- }
- else if ( (LA194_1==LPAREN) ) {
- alt194=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 194, 1, this.input);
-
- throw nvae;
- }
- break;
- case ATTRIBUTE:
- case COMMENT:
- case DOCUMENT_NODE:
- case ELEMENT:
- case EMPTY_SEQUENCE:
- case IF:
- case ITEM:
- case NODE:
- case PROCESSING_INSTRUCTION:
- case STRUCTURED_ITEM:
- case JSON_ITEM:
- case OBJECT:
- case ARRAY:
- case SCHEMA_ATTRIBUTE:
- case SCHEMA_ELEMENT:
- case TEXT:
- case TYPESWITCH:
- case NAMESPACE_NODE:
- case SWITCH:
- case WHILE:
- alt194=1;
- break;
- case UPDATING:
- alt194=2;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 194, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt194) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1606:11: pg_QName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_pg_QName_in_pg_FQName11788);
- pg_QName588=this.pg_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_QName588.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1607:11: p_FNCName
- this.pushFollow(XQueryParser.FOLLOW_p_FNCName_in_pg_FQName11800);
- p_FNCName589=this.p_FNCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_FNCName.add(p_FNCName589.getTree());
-
-
- // AST REWRITE
- // elements: p_FNCName
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1608:17: -> ^( QName p_FNCName )
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1608:20: ^( QName p_FNCName )
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);
-
- this.adaptor.addChild(root_1, stream_p_FNCName.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_QName_return: (function() {
- XQueryParser.pg_QName_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_QName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1610:1: pg_QName : nn= p_NCName COLON nl= p_NCName -> ^( QName $nn $nl) ;
- // $ANTLR start "pg_QName"
- pg_QName: function() {
- var retval = new XQueryParser.pg_QName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var COLON590 = null;
- var nn = null;
- var nl = null;
-
- var COLON590_tree=null;
- var stream_COLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COLON");
- var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1611:9: (nn= p_NCName COLON nl= p_NCName -> ^( QName $nn $nl) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1611:11: nn= p_NCName COLON nl= p_NCName
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pg_QName11844);
- nn=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
- COLON590=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_pg_QName11846); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_COLON.add(COLON590);
-
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pg_QName11850);
- nl=this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) stream_p_NCName.add(nl.getTree());
-
-
- // AST REWRITE
- // elements: nl, nn
- // token labels:
- // rule labels: retval, nn, nl
- // token list labels:
- // rule list labels:
- if ( this.state.backtracking===0 ) {
- retval.tree = root_0;
- var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
- var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
- var stream_nl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nl",nl!=null?nl.tree:null);
-
- root_0 = this.adaptor.nil();
- // 1612:17: -> ^( QName $nn $nl)
- {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1612:20: ^( QName $nn $nl)
- {
- var root_1 = this.adaptor.nil();
- root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);
-
- this.adaptor.addChild(root_1, stream_nn.nextTree());
- this.adaptor.addChild(root_1, stream_nl.nextTree());
-
- this.adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;}
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NCName_return: (function() {
- XQueryParser.p_NCName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NCName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1642:1: p_NCName : ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | SWITCH | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | VALUE | WITH | APPEND | JSON | POSITION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER );
- // $ANTLR start "p_NCName"
- p_NCName: function() {
- var retval = new XQueryParser.p_NCName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set591 = null;
-
- var set591_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1643:9: ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | SWITCH | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | VALUE | WITH | APPEND | JSON | POSITION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- root_0 = this.adaptor.nil();
-
- set591=this.input.LT(1);
- if ( (this.input.LA(1)>=ANCESTOR && this.input.LA(1)<=SKIP)||(this.input.LA(1)>=VALUE && this.input.LA(1)<=QUOT_ER)||this.input.LA(1)==L_NCName ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set591));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FNCName_return: (function() {
- XQueryParser.p_FNCName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FNCName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1660:1: p_FNCName : ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | ELSE | EMPTY | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | RETURN | SATISFIES | SCHEMA | SELF | SOME | STABLE | STRICT | STRIP | THEN | TO | TREAT | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | APPEND | JSON | POSITION | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER );
- // $ANTLR start "p_FNCName"
- p_FNCName: function() {
- var retval = new XQueryParser.p_FNCName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var set592 = null;
-
- var set592_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1661:9: ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | ELSE | EMPTY | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | RETURN | SATISFIES | SCHEMA | SELF | SOME | STABLE | STRICT | STRIP | THEN | TO | TREAT | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | APPEND | JSON | POSITION | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- root_0 = this.adaptor.nil();
-
- set592=this.input.LT(1);
- if ( (this.input.LA(1)>=ANCESTOR && this.input.LA(1)<=AT)||(this.input.LA(1)>=BASE_URI && this.input.LA(1)<=COLLATION)||(this.input.LA(1)>=CONSTRUCTION && this.input.LA(1)<=DOCUMENT)||(this.input.LA(1)>=ELSE && this.input.LA(1)<=EMPTY)||(this.input.LA(1)>=ENCODING && this.input.LA(1)<=IDIV)||(this.input.LA(1)>=IMPORT && this.input.LA(1)<=IS)||(this.input.LA(1)>=LAX && this.input.LA(1)<=NO_PRESERVE)||(this.input.LA(1)>=JSON && this.input.LA(1)<=PRESERVE)||(this.input.LA(1)>=RETURN && this.input.LA(1)<=SCHEMA)||(this.input.LA(1)>=SELF && this.input.LA(1)<=STRIP)||(this.input.LA(1)>=THEN && this.input.LA(1)<=TREAT)||(this.input.LA(1)>=UNION && this.input.LA(1)<=MINUS_SIGN)||(this.input.LA(1)>=NAN && this.input.LA(1)<=START)||(this.input.LA(1)>=TRY && this.input.LA(1)<=RETURNING)||(this.input.LA(1)>=CHECK && this.input.LA(1)<=QUOT_ER)||this.input.LA(1)==L_NCName ) {
- this.input.consume();
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set592));
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pg_UpdateExpr_return: (function() {
- XQueryParser.pg_UpdateExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.pg_UpdateExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1697:1: pg_UpdateExpr : ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr );
- // $ANTLR start "pg_UpdateExpr"
- pg_UpdateExpr: function() {
- var retval = new XQueryParser.pg_UpdateExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_InsertExpr593 = null;
- var p_DeleteExpr594 = null;
- var p_RenameExpr595 = null;
- var p_ReplaceExpr596 = null;
- var p_TransformExpr597 = null;
- var p_JSONDeleteExpr598 = null;
- var p_JSONInsertExpr599 = null;
- var p_JSONRenameExpr600 = null;
- var p_JSONReplaceExpr601 = null;
- var p_JSONAppendExpr602 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1698:9: ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr )
- var alt195=10;
- alt195 = this.dfa195.predict(this.input);
- switch (alt195) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1698:11: p_InsertExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_InsertExpr_in_pg_UpdateExpr13847);
- p_InsertExpr593=this.p_InsertExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InsertExpr593.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1699:11: p_DeleteExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_DeleteExpr_in_pg_UpdateExpr13859);
- p_DeleteExpr594=this.p_DeleteExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DeleteExpr594.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1700:11: p_RenameExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_RenameExpr_in_pg_UpdateExpr13871);
- p_RenameExpr595=this.p_RenameExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RenameExpr595.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1701:11: p_ReplaceExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ReplaceExpr_in_pg_UpdateExpr13883);
- p_ReplaceExpr596=this.p_ReplaceExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReplaceExpr596.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1702:11: p_TransformExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_TransformExpr_in_pg_UpdateExpr13895);
- p_TransformExpr597=this.p_TransformExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TransformExpr597.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1703:11: p_JSONDeleteExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONDeleteExpr_in_pg_UpdateExpr13907);
- p_JSONDeleteExpr598=this.p_JSONDeleteExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONDeleteExpr598.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1704:11: p_JSONInsertExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONInsertExpr_in_pg_UpdateExpr13919);
- p_JSONInsertExpr599=this.p_JSONInsertExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONInsertExpr599.getTree());
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1705:11: p_JSONRenameExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONRenameExpr_in_pg_UpdateExpr13931);
- p_JSONRenameExpr600=this.p_JSONRenameExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONRenameExpr600.getTree());
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1706:11: p_JSONReplaceExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONReplaceExpr_in_pg_UpdateExpr13943);
- p_JSONReplaceExpr601=this.p_JSONReplaceExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONReplaceExpr601.getTree());
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1707:11: p_JSONAppendExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_JSONAppendExpr_in_pg_UpdateExpr13955);
- p_JSONAppendExpr602=this.p_JSONAppendExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONAppendExpr602.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONDeleteExpr_return: (function() {
- XQueryParser.p_JSONDeleteExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONDeleteExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1710:1: p_JSONDeleteExpr : k+= DELETE k+= JSON p_TargetExpr ;
- // $ANTLR start "p_JSONDeleteExpr"
- p_JSONDeleteExpr: function() {
- var retval = new XQueryParser.p_JSONDeleteExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_TargetExpr603 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1711:9: (k+= DELETE k+= JSON p_TargetExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1711:11: k+= DELETE k+= JSON p_TargetExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DELETE,XQueryParser.FOLLOW_DELETE_in_p_JSONDeleteExpr13982); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONDeleteExpr13986); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONDeleteExpr13990);
- p_TargetExpr603=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr603.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONInsertExpr_return: (function() {
- XQueryParser.p_JSONInsertExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONInsertExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1714:1: p_JSONInsertExpr : k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )? ;
- // $ANTLR start "p_JSONInsertExpr"
- p_JSONInsertExpr: function() {
- var retval = new XQueryParser.p_JSONInsertExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_SourceExpr604 = null;
- var p_TargetExpr605 = null;
- var p_ExprSingle606 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:9: (k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:11: k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,INSERT,XQueryParser.FOLLOW_INSERT_in_p_JSONInsertExpr14017); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONInsertExpr14021); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_SourceExpr_in_p_JSONInsertExpr14023);
- p_SourceExpr604=this.p_SourceExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SourceExpr604.getTree());
- k=this.match(this.input,INTO,XQueryParser.FOLLOW_INTO_in_p_JSONInsertExpr14027); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONInsertExpr14029);
- p_TargetExpr605=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr605.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:63: (k+= AT k+= POSITION p_ExprSingle[true] )?
- var alt196=2;
- var LA196_0 = this.input.LA(1);
-
- if ( (LA196_0==AT) ) {
- alt196=1;
- }
- switch (alt196) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:64: k+= AT k+= POSITION p_ExprSingle[true]
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_JSONInsertExpr14034); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,POSITION,XQueryParser.FOLLOW_POSITION_in_p_JSONInsertExpr14038); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONInsertExpr14040);
- p_ExprSingle606=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle606.getTree());
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONRenameExpr_return: (function() {
- XQueryParser.p_JSONRenameExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONRenameExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1722:1: p_JSONRenameExpr : k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true] ;
- // $ANTLR start "p_JSONRenameExpr"
- p_JSONRenameExpr: function() {
- var retval = new XQueryParser.p_JSONRenameExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_TargetExpr607 = null;
- var p_ExprSingle608 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1723:9: (k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1723:11: k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,RENAME,XQueryParser.FOLLOW_RENAME_in_p_JSONRenameExpr14076); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONRenameExpr14080); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONRenameExpr14082);
- p_TargetExpr607=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr607.getTree());
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_JSONRenameExpr14086); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONRenameExpr14090);
- p_ExprSingle608=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle608.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONReplaceExpr_return: (function() {
- XQueryParser.p_JSONReplaceExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONReplaceExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1726:1: p_JSONReplaceExpr : k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true] ;
- // $ANTLR start "p_JSONReplaceExpr"
- p_JSONReplaceExpr: function() {
- var retval = new XQueryParser.p_JSONReplaceExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_TargetExpr609 = null;
- var p_ExprSingle610 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1727:9: (k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1727:12: k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,REPLACE,XQueryParser.FOLLOW_REPLACE_in_p_JSONReplaceExpr14120); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONReplaceExpr14124); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,VALUE,XQueryParser.FOLLOW_VALUE_in_p_JSONReplaceExpr14128); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_JSONReplaceExpr14132); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONReplaceExpr14134);
- p_TargetExpr609=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr609.getTree());
- k=this.match(this.input,WITH,XQueryParser.FOLLOW_WITH_in_p_JSONReplaceExpr14138); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONReplaceExpr14140);
- p_ExprSingle610=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle610.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_JSONAppendExpr_return: (function() {
- XQueryParser.p_JSONAppendExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_JSONAppendExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1730:1: p_JSONAppendExpr : k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true] ;
- // $ANTLR start "p_JSONAppendExpr"
- p_JSONAppendExpr: function() {
- var retval = new XQueryParser.p_JSONAppendExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LSQUARE611 = null;
- var RSQUARE613 = null;
- var k = null;
- var list_k=null;
- var p_Expr612 = null;
- var p_ExprSingle614 = null;
-
- var LSQUARE611_tree=null;
- var RSQUARE613_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1731:9: (k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1731:12: k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,APPEND,XQueryParser.FOLLOW_APPEND_in_p_JSONAppendExpr14171); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONAppendExpr14175); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- LSQUARE611=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_JSONAppendExpr14177); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LSQUARE611_tree = this.adaptor.create(LSQUARE611);
- this.adaptor.addChild(root_0, LSQUARE611_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_JSONAppendExpr14179);
- p_Expr612=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr612.getTree());
- RSQUARE613=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_JSONAppendExpr14182); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RSQUARE613_tree = this.adaptor.create(RSQUARE613);
- this.adaptor.addChild(root_0, RSQUARE613_tree);
- }
- k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_JSONAppendExpr14186); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONAppendExpr14188);
- p_ExprSingle614=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle614.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_RevalidationDecl_return: (function() {
- XQueryParser.pm_RevalidationDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_RevalidationDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1735:1: pm_RevalidationDecl : k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON ;
- // $ANTLR start "pm_RevalidationDecl"
- pm_RevalidationDecl: function() {
- var retval = new XQueryParser.pm_RevalidationDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SEMICOLON615 = null;
- var k = null;
- var list_k=null;
-
- var SEMICOLON615_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:9: (k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:11: k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_RevalidationDecl14219); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,REVALIDATION,XQueryParser.FOLLOW_REVALIDATION_in_pm_RevalidationDecl14223); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:38: (k+= STRICT | k+= LAX | k+= SKIP )
- var alt197=3;
- switch ( this.input.LA(1) ) {
- case STRICT:
- alt197=1;
- break;
- case LAX:
- alt197=2;
- break;
- case SKIP:
- alt197=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 197, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt197) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:39: k+= STRICT
- k=this.match(this.input,STRICT,XQueryParser.FOLLOW_STRICT_in_pm_RevalidationDecl14228); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:51: k+= LAX
- k=this.match(this.input,LAX,XQueryParser.FOLLOW_LAX_in_pm_RevalidationDecl14234); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:60: k+= SKIP
- k=this.match(this.input,SKIP,XQueryParser.FOLLOW_SKIP_in_pm_RevalidationDecl14240); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- SEMICOLON615=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_RevalidationDecl14245); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON615_tree = this.adaptor.create(SEMICOLON615);
- this.adaptor.addChild(root_0, SEMICOLON615_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InsertExprTargetChoice_return: (function() {
- XQueryParser.p_InsertExprTargetChoice_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InsertExprTargetChoice_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1740:1: p_InsertExprTargetChoice : ( ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO ) | ka= AFTER | kb= BEFORE );
- // $ANTLR start "p_InsertExprTargetChoice"
- p_InsertExprTargetChoice: function() {
- var retval = new XQueryParser.p_InsertExprTargetChoice_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ka = null;
- var kb = null;
- var k = null;
- var list_k=null;
-
- var ka_tree=null;
- var kb_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:9: ( ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO ) | ka= AFTER | kb= BEFORE )
- var alt200=3;
- switch ( this.input.LA(1) ) {
- case AS:
- case INTO:
- alt200=1;
- break;
- case AFTER:
- alt200=2;
- break;
- case BEFORE:
- alt200=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 200, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt200) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:11: ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:11: ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:12: (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:12: (k+= AS (k+= FIRST | k+= LAST ) )?
- var alt199=2;
- var LA199_0 = this.input.LA(1);
-
- if ( (LA199_0==AS) ) {
- alt199=1;
- }
- switch (alt199) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:13: k+= AS (k+= FIRST | k+= LAST )
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_InsertExprTargetChoice14275); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:19: (k+= FIRST | k+= LAST )
- var alt198=2;
- var LA198_0 = this.input.LA(1);
-
- if ( (LA198_0==FIRST) ) {
- alt198=1;
- }
- else if ( (LA198_0==LAST) ) {
- alt198=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 198, 0, this.input);
-
- throw nvae;
- }
- switch (alt198) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:20: k+= FIRST
- k=this.match(this.input,FIRST,XQueryParser.FOLLOW_FIRST_in_p_InsertExprTargetChoice14280); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:31: k+= LAST
- k=this.match(this.input,LAST,XQueryParser.FOLLOW_LAST_in_p_InsertExprTargetChoice14286); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
- k=this.match(this.input,INTO,XQueryParser.FOLLOW_INTO_in_p_InsertExprTargetChoice14293); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1742:11: ka= AFTER
- root_0 = this.adaptor.nil();
-
- ka=this.match(this.input,AFTER,XQueryParser.FOLLOW_AFTER_in_p_InsertExprTargetChoice14310); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ka_tree = this.adaptor.create(ka);
- this.adaptor.addChild(root_0, ka_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ka);
- }
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1743:11: kb= BEFORE
- root_0 = this.adaptor.nil();
-
- kb=this.match(this.input,BEFORE,XQueryParser.FOLLOW_BEFORE_in_p_InsertExprTargetChoice14326); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kb_tree = this.adaptor.create(kb);
- this.adaptor.addChild(root_0, kb_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kb);
- }
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_InsertExpr_return: (function() {
- XQueryParser.p_InsertExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_InsertExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1747:1: p_InsertExpr : k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr ;
- // $ANTLR start "p_InsertExpr"
- p_InsertExpr: function() {
- var retval = new XQueryParser.p_InsertExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_SourceExpr616 = null;
- var p_InsertExprTargetChoice617 = null;
- var p_TargetExpr618 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:9: (k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:11: k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,INSERT,XQueryParser.FOLLOW_INSERT_in_p_InsertExpr14356); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:21: (k+= NODE | k+= NODES )
- var alt201=2;
- var LA201_0 = this.input.LA(1);
-
- if ( (LA201_0==NODE) ) {
- alt201=1;
- }
- else if ( (LA201_0==NODES) ) {
- alt201=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 201, 0, this.input);
-
- throw nvae;
- }
- switch (alt201) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:22: k+= NODE
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_InsertExpr14361); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:32: k+= NODES
- k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_InsertExpr14367); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_SourceExpr_in_p_InsertExpr14370);
- p_SourceExpr616=this.p_SourceExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SourceExpr616.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_InsertExprTargetChoice_in_p_InsertExpr14372);
- p_InsertExprTargetChoice617=this.p_InsertExprTargetChoice();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InsertExprTargetChoice617.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_InsertExpr14374);
- p_TargetExpr618=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr618.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_DeleteExpr_return: (function() {
- XQueryParser.p_DeleteExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_DeleteExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1752:1: p_DeleteExpr : k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr ;
- // $ANTLR start "p_DeleteExpr"
- p_DeleteExpr: function() {
- var retval = new XQueryParser.p_DeleteExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_TargetExpr619 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:9: (k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:11: k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DELETE,XQueryParser.FOLLOW_DELETE_in_p_DeleteExpr14404); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:21: (k+= NODE | k+= NODES )
- var alt202=2;
- var LA202_0 = this.input.LA(1);
-
- if ( (LA202_0==NODE) ) {
- alt202=1;
- }
- else if ( (LA202_0==NODES) ) {
- alt202=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 202, 0, this.input);
-
- throw nvae;
- }
- switch (alt202) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:22: k+= NODE
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_DeleteExpr14409); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:32: k+= NODES
- k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_DeleteExpr14415); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_DeleteExpr14418);
- p_TargetExpr619=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr619.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ReplaceExpr_return: (function() {
- XQueryParser.p_ReplaceExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ReplaceExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1757:1: p_ReplaceExpr : k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true] ;
- // $ANTLR start "p_ReplaceExpr"
- p_ReplaceExpr: function() {
- var retval = new XQueryParser.p_ReplaceExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_ExprSingle620 = null;
- var p_ExprSingle621 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:9: (k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:11: k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,REPLACE,XQueryParser.FOLLOW_REPLACE_in_p_ReplaceExpr14448); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:22: (k+= VALUE k+= OF )?
- var alt203=2;
- var LA203_0 = this.input.LA(1);
-
- if ( (LA203_0==VALUE) ) {
- alt203=1;
- }
- switch (alt203) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:23: k+= VALUE k+= OF
- k=this.match(this.input,VALUE,XQueryParser.FOLLOW_VALUE_in_p_ReplaceExpr14453); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_ReplaceExpr14457); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ReplaceExpr14463); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ReplaceExpr14465);
- p_ExprSingle620=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle620.getTree());
- k=this.match(this.input,WITH,XQueryParser.FOLLOW_WITH_in_p_ReplaceExpr14470); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ReplaceExpr14472);
- p_ExprSingle621=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle621.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_RenameExpr_return: (function() {
- XQueryParser.p_RenameExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_RenameExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1762:1: p_RenameExpr : k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr ;
- // $ANTLR start "p_RenameExpr"
- p_RenameExpr: function() {
- var retval = new XQueryParser.p_RenameExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_TargetExpr622 = null;
- var p_NewNameExpr623 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1763:9: (k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1763:11: k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,RENAME,XQueryParser.FOLLOW_RENAME_in_p_RenameExpr14503); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_RenameExpr14507); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_RenameExpr14509);
- p_TargetExpr622=this.p_TargetExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr622.getTree());
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_RenameExpr14513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_NewNameExpr_in_p_RenameExpr14515);
- p_NewNameExpr623=this.p_NewNameExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NewNameExpr623.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SourceExpr_return: (function() {
- XQueryParser.p_SourceExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SourceExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1767:1: p_SourceExpr : p_ExprSingle[true] ;
- // $ANTLR start "p_SourceExpr"
- p_SourceExpr: function() {
- var retval = new XQueryParser.p_SourceExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle624 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1768:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1768:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SourceExpr14543);
- p_ExprSingle624=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle624.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TargetExpr_return: (function() {
- XQueryParser.p_TargetExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TargetExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1772:1: p_TargetExpr : p_ExprSingle[true] ;
- // $ANTLR start "p_TargetExpr"
- p_TargetExpr: function() {
- var retval = new XQueryParser.p_TargetExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle625 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1773:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1773:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TargetExpr14570);
- p_ExprSingle625=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle625.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_NewNameExpr_return: (function() {
- XQueryParser.p_NewNameExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_NewNameExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1777:1: p_NewNameExpr : p_ExprSingle[true] ;
- // $ANTLR start "p_NewNameExpr"
- p_NewNameExpr: function() {
- var retval = new XQueryParser.p_NewNameExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_ExprSingle626 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1778:9: ( p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1778:11: p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_NewNameExpr14597);
- p_ExprSingle626=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle626.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TransformExpr_return: (function() {
- XQueryParser.p_TransformExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TransformExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1782:1: p_TransformExpr : k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true] ;
- // $ANTLR start "p_TransformExpr"
- p_TransformExpr: function() {
- var retval = new XQueryParser.p_TransformExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var e = null;
- var BIND627 = null;
- var COMMA629 = null;
- var BIND630 = null;
- var k = null;
- var list_k=null;
- var v = null;
- var w = null;
- var p_ExprSingle628 = null;
- var p_ExprSingle631 = null;
- var p_ExprSingle632 = null;
- var p_ExprSingle633 = null;
-
- var d_tree=null;
- var e_tree=null;
- var BIND627_tree=null;
- var COMMA629_tree=null;
- var BIND630_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:9: (k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:11: k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COPY,XQueryParser.FOLLOW_COPY_in_p_TransformExpr14626); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TransformExpr14630); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TransformExpr14634);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- BIND627=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_TransformExpr14638); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND627_tree = this.adaptor.create(BIND627);
- this.adaptor.addChild(root_0, BIND627_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14640);
- p_ExprSingle628=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle628.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:90: ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )*
- loop204:
- do {
- var alt204=2;
- var LA204_0 = this.input.LA(1);
-
- if ( (LA204_0==COMMA) ) {
- alt204=1;
- }
-
-
- switch (alt204) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:91: COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true]
- COMMA629=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_TransformExpr14644); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA629_tree = this.adaptor.create(COMMA629);
- this.adaptor.addChild(root_0, COMMA629_tree);
- }
- e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TransformExpr14648); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- e_tree = this.adaptor.create(e);
- this.adaptor.addChild(root_0, e_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TransformExpr14652);
- w=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(e, (w?w.stop:null));
- }
- BIND630=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_TransformExpr14656); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND630_tree = this.adaptor.create(BIND630);
- this.adaptor.addChild(root_0, BIND630_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14658);
- p_ExprSingle631=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle631.getTree());
-
-
- break;
-
- default :
- break loop204;
- }
- } while (true);
-
- k=this.match(this.input,MODIFY,XQueryParser.FOLLOW_MODIFY_in_p_TransformExpr14665); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14667);
- p_ExprSingle632=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle632.getTree());
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TransformExpr14672); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14674);
- p_ExprSingle633=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle633.getTree());
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- pm_FTOptionDecl_return: (function() {
- XQueryParser.pm_FTOptionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.pm_FTOptionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1793:1: pm_FTOptionDecl : k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON ;
- // $ANTLR start "pm_FTOptionDecl"
- pm_FTOptionDecl: function() {
- var retval = new XQueryParser.pm_FTOptionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SEMICOLON635 = null;
- var k = null;
- var list_k=null;
- var p_FTMatchOptions634 = null;
-
- var SEMICOLON635_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1794:9: (k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1794:11: k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_FTOptionDecl14712); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,FT_OPTION,XQueryParser.FOLLOW_FT_OPTION_in_pm_FTOptionDecl14716); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOptions_in_pm_FTOptionDecl14718);
- p_FTMatchOptions634=this.p_FTMatchOptions();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOptions634.getTree());
- SEMICOLON635=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_FTOptionDecl14720); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON635_tree = this.adaptor.create(SEMICOLON635);
- this.adaptor.addChild(root_0, SEMICOLON635_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTScoreVar_return: (function() {
- XQueryParser.p_FTScoreVar_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTScoreVar_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1798:1: p_FTScoreVar : ks= SCORE d= DOLLAR v= p_VarName ;
- // $ANTLR start "p_FTScoreVar"
- p_FTScoreVar: function() {
- var retval = new XQueryParser.p_FTScoreVar_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ks = null;
- var d = null;
- var v = null;
-
- var ks_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1799:9: (ks= SCORE d= DOLLAR v= p_VarName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1799:11: ks= SCORE d= DOLLAR v= p_VarName
- root_0 = this.adaptor.nil();
-
- ks=this.match(this.input,SCORE,XQueryParser.FOLLOW_SCORE_in_p_FTScoreVar14750); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ks_tree = this.adaptor.create(ks);
- this.adaptor.addChild(root_0, ks_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ks);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_FTScoreVar14756); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_FTScoreVar14760);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTContainsExpr_return: (function() {
- XQueryParser.p_FTContainsExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTContainsExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1803:1: p_FTContainsExpr : p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )? ;
- // $ANTLR start "p_FTContainsExpr"
- p_FTContainsExpr: function() {
- var retval = new XQueryParser.p_FTContainsExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_StringConcatExpr636 = null;
- var p_FTSelection637 = null;
- var p_FTIgnoreOption638 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:9: ( p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:11: p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringConcatExpr_in_p_FTContainsExpr14788);
- p_StringConcatExpr636=this.p_StringConcatExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringConcatExpr636.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:30: (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )?
- var alt206=2;
- var LA206_0 = this.input.LA(1);
-
- if ( (LA206_0==CONTAINS) ) {
- alt206=1;
- }
- switch (alt206) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:32: k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )?
- k=this.match(this.input,CONTAINS,XQueryParser.FOLLOW_CONTAINS_in_p_FTContainsExpr14794); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_FTContainsExpr14798); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTContainsExpr14802);
- p_FTSelection637=this.p_FTSelection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection637.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:81: ( p_FTIgnoreOption )?
- var alt205=2;
- var LA205_0 = this.input.LA(1);
-
- if ( (LA205_0==WITHOUT) ) {
- alt205=1;
- }
- switch (alt205) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:81: p_FTIgnoreOption
- this.pushFollow(XQueryParser.FOLLOW_p_FTIgnoreOption_in_p_FTContainsExpr14804);
- p_FTIgnoreOption638=this.p_FTIgnoreOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTIgnoreOption638.getTree());
-
-
- break;
-
- }
-
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTSelection_return: (function() {
- XQueryParser.p_FTSelection_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTSelection_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1808:1: p_FTSelection : p_FTOr ( p_FTPosFilter )* ;
- // $ANTLR start "p_FTSelection"
- p_FTSelection: function() {
- var retval = new XQueryParser.p_FTSelection_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTOr639 = null;
- var p_FTPosFilter640 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:9: ( p_FTOr ( p_FTPosFilter )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:11: p_FTOr ( p_FTPosFilter )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTOr_in_p_FTSelection14834);
- p_FTOr639=this.p_FTOr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTOr639.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:18: ( p_FTPosFilter )*
- loop207:
- do {
- var alt207=2;
- var LA207_0 = this.input.LA(1);
-
- if ( (LA207_0==AT) ) {
- var LA207_2 = this.input.LA(2);
-
- if ( (LA207_2==END||LA207_2==START) ) {
- alt207=1;
- }
-
-
- }
- else if ( (LA207_0==ORDERED||LA207_0==WINDOW||(LA207_0>=DIFFERENT && LA207_0<=ENTIRE)||LA207_0==SAME) ) {
- alt207=1;
- }
-
-
- switch (alt207) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:18: p_FTPosFilter
- this.pushFollow(XQueryParser.FOLLOW_p_FTPosFilter_in_p_FTSelection14836);
- p_FTPosFilter640=this.p_FTPosFilter();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPosFilter640.getTree());
-
-
- break;
-
- default :
- break loop207;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTWeight_return: (function() {
- XQueryParser.p_FTWeight_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTWeight_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1813:1: p_FTWeight : kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET ;
- // $ANTLR start "p_FTWeight"
- p_FTWeight: function() {
- var retval = new XQueryParser.p_FTWeight_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var kw = null;
- var LBRACKET641 = null;
- var RBRACKET643 = null;
- var p_Expr642 = null;
-
- var kw_tree=null;
- var LBRACKET641_tree=null;
- var RBRACKET643_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1814:9: (kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1814:11: kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET
- root_0 = this.adaptor.nil();
-
- kw=this.match(this.input,WEIGHT,XQueryParser.FOLLOW_WEIGHT_in_p_FTWeight14865); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kw_tree = this.adaptor.create(kw);
- this.adaptor.addChild(root_0, kw_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kw);
- }
- LBRACKET641=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTWeight14869); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET641_tree = this.adaptor.create(LBRACKET641);
- this.adaptor.addChild(root_0, LBRACKET641_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_FTWeight14871);
- p_Expr642=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr642.getTree());
- RBRACKET643=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTWeight14874); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET643_tree = this.adaptor.create(RBRACKET643);
- this.adaptor.addChild(root_0, RBRACKET643_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTOr_return: (function() {
- XQueryParser.p_FTOr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTOr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1818:1: p_FTOr : p_FTAnd (ko= FTOR p_FTAnd )* ;
- // $ANTLR start "p_FTOr"
- p_FTOr: function() {
- var retval = new XQueryParser.p_FTOr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ko = null;
- var p_FTAnd644 = null;
- var p_FTAnd645 = null;
-
- var ko_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:9: ( p_FTAnd (ko= FTOR p_FTAnd )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:11: p_FTAnd (ko= FTOR p_FTAnd )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTAnd_in_p_FTOr14900);
- p_FTAnd644=this.p_FTAnd();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnd644.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:19: (ko= FTOR p_FTAnd )*
- loop208:
- do {
- var alt208=2;
- var LA208_0 = this.input.LA(1);
-
- if ( (LA208_0==FTOR) ) {
- alt208=1;
- }
-
-
- switch (alt208) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:21: ko= FTOR p_FTAnd
- ko=this.match(this.input,FTOR,XQueryParser.FOLLOW_FTOR_in_p_FTOr14906); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ko_tree = this.adaptor.create(ko);
- this.adaptor.addChild(root_0, ko_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ko);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTAnd_in_p_FTOr14910);
- p_FTAnd645=this.p_FTAnd();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnd645.getTree());
-
-
- break;
-
- default :
- break loop208;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTAnd_return: (function() {
- XQueryParser.p_FTAnd_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTAnd_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1823:1: p_FTAnd : p_FTMildNot (ka= FTAND p_FTMildNot )* ;
- // $ANTLR start "p_FTAnd"
- p_FTAnd: function() {
- var retval = new XQueryParser.p_FTAnd_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ka = null;
- var p_FTMildNot646 = null;
- var p_FTMildNot647 = null;
-
- var ka_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:9: ( p_FTMildNot (ka= FTAND p_FTMildNot )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:11: p_FTMildNot (ka= FTAND p_FTMildNot )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTMildNot_in_p_FTAnd14939);
- p_FTMildNot646=this.p_FTMildNot();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMildNot646.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:23: (ka= FTAND p_FTMildNot )*
- loop209:
- do {
- var alt209=2;
- var LA209_0 = this.input.LA(1);
-
- if ( (LA209_0==FTAND) ) {
- alt209=1;
- }
-
-
- switch (alt209) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:25: ka= FTAND p_FTMildNot
- ka=this.match(this.input,FTAND,XQueryParser.FOLLOW_FTAND_in_p_FTAnd14945); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ka_tree = this.adaptor.create(ka);
- this.adaptor.addChild(root_0, ka_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ka);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTMildNot_in_p_FTAnd14949);
- p_FTMildNot647=this.p_FTMildNot();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMildNot647.getTree());
-
-
- break;
-
- default :
- break loop209;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTMildNot_return: (function() {
- XQueryParser.p_FTMildNot_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTMildNot_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1828:1: p_FTMildNot : p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )* ;
- // $ANTLR start "p_FTMildNot"
- p_FTMildNot: function() {
- var retval = new XQueryParser.p_FTMildNot_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_FTUnaryNot648 = null;
- var p_FTUnaryNot649 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:9: ( p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:11: p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )*
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTUnaryNot_in_p_FTMildNot14978);
- p_FTUnaryNot648=this.p_FTUnaryNot();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnaryNot648.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:24: (k+= NOT k+= IN p_FTUnaryNot )*
- loop210:
- do {
- var alt210=2;
- var LA210_0 = this.input.LA(1);
-
- if ( (LA210_0==NOT) ) {
- alt210=1;
- }
-
-
- switch (alt210) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:26: k+= NOT k+= IN p_FTUnaryNot
- k=this.match(this.input,NOT,XQueryParser.FOLLOW_NOT_in_p_FTMildNot14984); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_FTMildNot14988); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTUnaryNot_in_p_FTMildNot14992);
- p_FTUnaryNot649=this.p_FTUnaryNot();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnaryNot649.getTree());
-
-
- break;
-
- default :
- break loop210;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTUnaryNot_return: (function() {
- XQueryParser.p_FTUnaryNot_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTUnaryNot_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1833:1: p_FTUnaryNot : (kn= FTNOT )? p_FTPrimaryWithOptions ;
- // $ANTLR start "p_FTUnaryNot"
- p_FTUnaryNot: function() {
- var retval = new XQueryParser.p_FTUnaryNot_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var kn = null;
- var p_FTPrimaryWithOptions650 = null;
-
- var kn_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:9: ( (kn= FTNOT )? p_FTPrimaryWithOptions )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:11: (kn= FTNOT )? p_FTPrimaryWithOptions
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:11: (kn= FTNOT )?
- var alt211=2;
- var LA211_0 = this.input.LA(1);
-
- if ( (LA211_0==FTNOT) ) {
- alt211=1;
- }
- switch (alt211) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:13: kn= FTNOT
- kn=this.match(this.input,FTNOT,XQueryParser.FOLLOW_FTNOT_in_p_FTUnaryNot15025); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kn_tree = this.adaptor.create(kn);
- this.adaptor.addChild(root_0, kn_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kn);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTPrimaryWithOptions_in_p_FTUnaryNot15032);
- p_FTPrimaryWithOptions650=this.p_FTPrimaryWithOptions();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPrimaryWithOptions650.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTPrimaryWithOptions_return: (function() {
- XQueryParser.p_FTPrimaryWithOptions_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTPrimaryWithOptions_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1838:1: p_FTPrimaryWithOptions : p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )? ;
- // $ANTLR start "p_FTPrimaryWithOptions"
- p_FTPrimaryWithOptions: function() {
- var retval = new XQueryParser.p_FTPrimaryWithOptions_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTPrimary651 = null;
- var p_FTMatchOptions652 = null;
- var p_FTWeight653 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:9: ( p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:11: p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTPrimary_in_p_FTPrimaryWithOptions15058);
- p_FTPrimary651=this.p_FTPrimary();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPrimary651.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:23: ( p_FTMatchOptions )?
- var alt212=2;
- var LA212_0 = this.input.LA(1);
-
- if ( (LA212_0==USING) ) {
- alt212=1;
- }
- switch (alt212) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:23: p_FTMatchOptions
- this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOptions_in_p_FTPrimaryWithOptions15060);
- p_FTMatchOptions652=this.p_FTMatchOptions();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOptions652.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:41: ( p_FTWeight )?
- var alt213=2;
- var LA213_0 = this.input.LA(1);
-
- if ( (LA213_0==WEIGHT) ) {
- alt213=1;
- }
- switch (alt213) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:41: p_FTWeight
- this.pushFollow(XQueryParser.FOLLOW_p_FTWeight_in_p_FTPrimaryWithOptions15063);
- p_FTWeight653=this.p_FTWeight();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWeight653.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTPrimary_return: (function() {
- XQueryParser.p_FTPrimary_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTPrimary_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1846:1: p_FTPrimary : ( ( p_FTWords ( p_FTTimes )? ) | ( LPAREN p_FTSelection RPAREN ) | p_FTExtensionSelection );
- // $ANTLR start "p_FTPrimary"
- p_FTPrimary: function() {
- var retval = new XQueryParser.p_FTPrimary_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LPAREN656 = null;
- var RPAREN658 = null;
- var p_FTWords654 = null;
- var p_FTTimes655 = null;
- var p_FTSelection657 = null;
- var p_FTExtensionSelection659 = null;
-
- var LPAREN656_tree=null;
- var RPAREN658_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:9: ( ( p_FTWords ( p_FTTimes )? ) | ( LPAREN p_FTSelection RPAREN ) | p_FTExtensionSelection )
- var alt215=3;
- switch ( this.input.LA(1) ) {
- case LBRACKET:
- case APOS:
- case QUOT:
- alt215=1;
- break;
- case LPAREN:
- alt215=2;
- break;
- case L_Pragma:
- alt215=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 215, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt215) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:11: ( p_FTWords ( p_FTTimes )? )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:11: ( p_FTWords ( p_FTTimes )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:12: p_FTWords ( p_FTTimes )?
- this.pushFollow(XQueryParser.FOLLOW_p_FTWords_in_p_FTPrimary15094);
- p_FTWords654=this.p_FTWords();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWords654.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:22: ( p_FTTimes )?
- var alt214=2;
- var LA214_0 = this.input.LA(1);
-
- if ( (LA214_0==OCCURS) ) {
- alt214=1;
- }
- switch (alt214) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:22: p_FTTimes
- this.pushFollow(XQueryParser.FOLLOW_p_FTTimes_in_p_FTPrimary15096);
- p_FTTimes655=this.p_FTTimes();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTTimes655.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:11: ( LPAREN p_FTSelection RPAREN )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:11: ( LPAREN p_FTSelection RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:12: LPAREN p_FTSelection RPAREN
- LPAREN656=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTPrimary15111); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN656_tree = this.adaptor.create(LPAREN656);
- this.adaptor.addChild(root_0, LPAREN656_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTPrimary15113);
- p_FTSelection657=this.p_FTSelection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection657.getTree());
- RPAREN658=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTPrimary15115); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN658_tree = this.adaptor.create(RPAREN658);
- this.adaptor.addChild(root_0, RPAREN658_tree);
- }
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1849:11: p_FTExtensionSelection
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTExtensionSelection_in_p_FTPrimary15128);
- p_FTExtensionSelection659=this.p_FTExtensionSelection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTExtensionSelection659.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTWords_return: (function() {
- XQueryParser.p_FTWords_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTWords_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1853:1: p_FTWords : p_FTWordsValue ( p_FTAnyallOption )? ;
- // $ANTLR start "p_FTWords"
- p_FTWords: function() {
- var retval = new XQueryParser.p_FTWords_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTWordsValue660 = null;
- var p_FTAnyallOption661 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:9: ( p_FTWordsValue ( p_FTAnyallOption )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:11: p_FTWordsValue ( p_FTAnyallOption )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTWordsValue_in_p_FTWords15154);
- p_FTWordsValue660=this.p_FTWordsValue();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWordsValue660.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:26: ( p_FTAnyallOption )?
- var alt216=2;
- var LA216_0 = this.input.LA(1);
-
- if ( ((LA216_0>=ALL && LA216_0<=ANY)||LA216_0==PHRASE) ) {
- alt216=1;
- }
- switch (alt216) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:26: p_FTAnyallOption
- this.pushFollow(XQueryParser.FOLLOW_p_FTAnyallOption_in_p_FTWords15156);
- p_FTAnyallOption661=this.p_FTAnyallOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnyallOption661.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTWordsValue_return: (function() {
- XQueryParser.p_FTWordsValue_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTWordsValue_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1858:1: p_FTWordsValue : ( p_StringLiteral | ( LBRACKET p_Expr[true,true] RBRACKET ) );
- // $ANTLR start "p_FTWordsValue"
- p_FTWordsValue: function() {
- var retval = new XQueryParser.p_FTWordsValue_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET663 = null;
- var RBRACKET665 = null;
- var p_StringLiteral662 = null;
- var p_Expr664 = null;
-
- var LBRACKET663_tree=null;
- var RBRACKET665_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1859:9: ( p_StringLiteral | ( LBRACKET p_Expr[true,true] RBRACKET ) )
- var alt217=2;
- var LA217_0 = this.input.LA(1);
-
- if ( ((LA217_0>=APOS && LA217_0<=QUOT)) ) {
- alt217=1;
- }
- else if ( (LA217_0==LBRACKET) ) {
- alt217=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 217, 0, this.input);
-
- throw nvae;
- }
- switch (alt217) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1859:11: p_StringLiteral
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTWordsValue15183);
- p_StringLiteral662=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral662.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:11: ( LBRACKET p_Expr[true,true] RBRACKET )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:11: ( LBRACKET p_Expr[true,true] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:12: LBRACKET p_Expr[true,true] RBRACKET
- LBRACKET663=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTWordsValue15196); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET663_tree = this.adaptor.create(LBRACKET663);
- this.adaptor.addChild(root_0, LBRACKET663_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_FTWordsValue15198);
- p_Expr664=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr664.getTree());
- RBRACKET665=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTWordsValue15201); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET665_tree = this.adaptor.create(RBRACKET665);
- this.adaptor.addChild(root_0, RBRACKET665_tree);
- }
-
-
-
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTExtensionSelection_return: (function() {
- XQueryParser.p_FTExtensionSelection_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTExtensionSelection_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1864:1: p_FTExtensionSelection : ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET ;
- // $ANTLR start "p_FTExtensionSelection"
- p_FTExtensionSelection: function() {
- var retval = new XQueryParser.p_FTExtensionSelection_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_Pragma666 = null;
- var LBRACKET667 = null;
- var RBRACKET669 = null;
- var p_FTSelection668 = null;
-
- var L_Pragma666_tree=null;
- var LBRACKET667_tree=null;
- var RBRACKET669_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:9: ( ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: ( L_Pragma )+
- var cnt218=0;
- loop218:
- do {
- var alt218=2;
- var LA218_0 = this.input.LA(1);
-
- if ( (LA218_0==L_Pragma) ) {
- alt218=1;
- }
-
-
- switch (alt218) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: L_Pragma
- L_Pragma666=this.match(this.input,L_Pragma,XQueryParser.FOLLOW_L_Pragma_in_p_FTExtensionSelection15228); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_Pragma666_tree = this.adaptor.create(L_Pragma666);
- this.adaptor.addChild(root_0, L_Pragma666_tree);
- }
-
-
- break;
-
- default :
- if ( cnt218 >= 1 ) {
- break loop218;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(218, this.input);
- throw eee;
- }
- cnt218++;
- } while (true);
-
- LBRACKET667=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTExtensionSelection15231); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET667_tree = this.adaptor.create(LBRACKET667);
- this.adaptor.addChild(root_0, LBRACKET667_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:30: ( p_FTSelection )?
- var alt219=2;
- var LA219_0 = this.input.LA(1);
-
- if ( (LA219_0==FTNOT||LA219_0==LPAREN||LA219_0==LBRACKET||(LA219_0>=APOS && LA219_0<=QUOT)||LA219_0==L_Pragma) ) {
- alt219=1;
- }
- switch (alt219) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:30: p_FTSelection
- this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTExtensionSelection15233);
- p_FTSelection668=this.p_FTSelection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection668.getTree());
-
-
- break;
-
- }
-
- RBRACKET669=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTExtensionSelection15236); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET669_tree = this.adaptor.create(RBRACKET669);
- this.adaptor.addChild(root_0, RBRACKET669_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTAnyallOption_return: (function() {
- XQueryParser.p_FTAnyallOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTAnyallOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1869:1: p_FTAnyallOption : ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE ) ;
- // $ANTLR start "p_FTAnyallOption"
- p_FTAnyallOption: function() {
- var retval = new XQueryParser.p_FTAnyallOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var WORDS670 = null;
- var k = null;
- var list_k=null;
-
- var WORDS670_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:9: ( ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:11: ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:11: ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE )
- var alt222=3;
- switch ( this.input.LA(1) ) {
- case ANY:
- alt222=1;
- break;
- case ALL:
- alt222=2;
- break;
- case PHRASE:
- alt222=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 222, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt222) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:13: (k+= ANY (k+= WORD )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:13: (k+= ANY (k+= WORD )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:14: k+= ANY (k+= WORD )?
- k=this.match(this.input,ANY,XQueryParser.FOLLOW_ANY_in_p_FTAnyallOption15267); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:22: (k+= WORD )?
- var alt220=2;
- var LA220_0 = this.input.LA(1);
-
- if ( (LA220_0==WORD) ) {
- alt220=1;
- }
- switch (alt220) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:22: k+= WORD
- k=this.match(this.input,WORD,XQueryParser.FOLLOW_WORD_in_p_FTAnyallOption15271); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:33: (k+= ALL ( WORDS )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:33: (k+= ALL ( WORDS )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:34: k+= ALL ( WORDS )?
- k=this.match(this.input,ALL,XQueryParser.FOLLOW_ALL_in_p_FTAnyallOption15280); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:41: ( WORDS )?
- var alt221=2;
- var LA221_0 = this.input.LA(1);
-
- if ( (LA221_0==WORDS) ) {
- alt221=1;
- }
- switch (alt221) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:41: WORDS
- WORDS670=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTAnyallOption15282); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- WORDS670_tree = this.adaptor.create(WORDS670);
- this.adaptor.addChild(root_0, WORDS670_tree);
- }
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:51: k+= PHRASE
- k=this.match(this.input,PHRASE,XQueryParser.FOLLOW_PHRASE_in_p_FTAnyallOption15290); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTTimes_return: (function() {
- XQueryParser.p_FTTimes_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTTimes_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1874:1: p_FTTimes : k+= OCCURS p_FTRange k+= TIMES ;
- // $ANTLR start "p_FTTimes"
- p_FTTimes: function() {
- var retval = new XQueryParser.p_FTTimes_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_FTRange671 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1875:9: (k+= OCCURS p_FTRange k+= TIMES )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1875:11: k+= OCCURS p_FTRange k+= TIMES
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,OCCURS,XQueryParser.FOLLOW_OCCURS_in_p_FTTimes15322); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTRange_in_p_FTTimes15324);
- p_FTRange671=this.p_FTRange();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTRange671.getTree());
- k=this.match(this.input,TIMES,XQueryParser.FOLLOW_TIMES_in_p_FTTimes15328); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTRange_return: (function() {
- XQueryParser.p_FTRange_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTRange_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1879:1: p_FTRange : ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) ) ;
- // $ANTLR start "p_FTRange"
- p_FTRange: function() {
- var retval = new XQueryParser.p_FTRange_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_AdditiveExpr672 = null;
- var p_AdditiveExpr673 = null;
- var p_AdditiveExpr674 = null;
- var p_AdditiveExpr675 = null;
- var p_AdditiveExpr676 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:9: ( ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:11: ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:11: ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) )
- var alt223=4;
- switch ( this.input.LA(1) ) {
- case EXACTLY:
- alt223=1;
- break;
- case AT:
- var LA223_2 = this.input.LA(2);
-
- if ( (LA223_2==LEAST) ) {
- alt223=2;
- }
- else if ( (LA223_2==MOST) ) {
- alt223=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 223, 2, this.input);
-
- throw nvae;
- }
- break;
- case FROM:
- alt223=4;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 223, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt223) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:13: (k+= EXACTLY p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:13: (k+= EXACTLY p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:14: k+= EXACTLY p_AdditiveExpr
- k=this.match(this.input,EXACTLY,XQueryParser.FOLLOW_EXACTLY_in_p_FTRange15361); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15363);
- p_AdditiveExpr672=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr672.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:13: (k+= AT k+= LEAST p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:13: (k+= AT k+= LEAST p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:14: k+= AT k+= LEAST p_AdditiveExpr
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTRange15381); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_FTRange15385); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15387);
- p_AdditiveExpr673=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr673.getTree());
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:13: (k+= AT k+= MOST p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:13: (k+= AT k+= MOST p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:14: k+= AT k+= MOST p_AdditiveExpr
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTRange15405); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,MOST,XQueryParser.FOLLOW_MOST_in_p_FTRange15409); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15411);
- p_AdditiveExpr674=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr674.getTree());
-
-
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:13: (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:13: (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:14: k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr
- k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_FTRange15429); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15431);
- p_AdditiveExpr675=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr675.getTree());
- k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_FTRange15435); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15437);
- p_AdditiveExpr676=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr676.getTree());
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTPosFilter_return: (function() {
- XQueryParser.p_FTPosFilter_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTPosFilter_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1887:1: p_FTPosFilter : ( p_FTOrder | p_FTWindow | p_FTDistance | p_FTScope | p_FTContent );
- // $ANTLR start "p_FTPosFilter"
- p_FTPosFilter: function() {
- var retval = new XQueryParser.p_FTPosFilter_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTOrder677 = null;
- var p_FTWindow678 = null;
- var p_FTDistance679 = null;
- var p_FTScope680 = null;
- var p_FTContent681 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:9: ( p_FTOrder | p_FTWindow | p_FTDistance | p_FTScope | p_FTContent )
- var alt224=5;
- switch ( this.input.LA(1) ) {
- case ORDERED:
- alt224=1;
- break;
- case WINDOW:
- alt224=2;
- break;
- case DISTANCE:
- alt224=3;
- break;
- case DIFFERENT:
- case SAME:
- alt224=4;
- break;
- case AT:
- case ENTIRE:
- alt224=5;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 224, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt224) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:11: p_FTOrder
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTOrder_in_p_FTPosFilter15468);
- p_FTOrder677=this.p_FTOrder();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTOrder677.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:23: p_FTWindow
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTWindow_in_p_FTPosFilter15472);
- p_FTWindow678=this.p_FTWindow();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWindow678.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:36: p_FTDistance
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTDistance_in_p_FTPosFilter15476);
- p_FTDistance679=this.p_FTDistance();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTDistance679.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:51: p_FTScope
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTScope_in_p_FTPosFilter15480);
- p_FTScope680=this.p_FTScope();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScope680.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:63: p_FTContent
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTContent_in_p_FTPosFilter15484);
- p_FTContent681=this.p_FTContent();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContent681.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTOrder_return: (function() {
- XQueryParser.p_FTOrder_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTOrder_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1892:1: p_FTOrder : ko= ORDERED ;
- // $ANTLR start "p_FTOrder"
- p_FTOrder: function() {
- var retval = new XQueryParser.p_FTOrder_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ko = null;
-
- var ko_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1893:9: (ko= ORDERED )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1893:11: ko= ORDERED
- root_0 = this.adaptor.nil();
-
- ko=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_p_FTOrder15512); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ko_tree = this.adaptor.create(ko);
- this.adaptor.addChild(root_0, ko_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ko);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTWindow_return: (function() {
- XQueryParser.p_FTWindow_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTWindow_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1897:1: p_FTWindow : kw= WINDOW p_AdditiveExpr p_FTUnit ;
- // $ANTLR start "p_FTWindow"
- p_FTWindow: function() {
- var retval = new XQueryParser.p_FTWindow_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var kw = null;
- var p_AdditiveExpr682 = null;
- var p_FTUnit683 = null;
-
- var kw_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1898:9: (kw= WINDOW p_AdditiveExpr p_FTUnit )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1898:11: kw= WINDOW p_AdditiveExpr p_FTUnit
- root_0 = this.adaptor.nil();
-
- kw=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_FTWindow15542); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kw_tree = this.adaptor.create(kw);
- this.adaptor.addChild(root_0, kw_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kw);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTWindow15546);
- p_AdditiveExpr682=this.p_AdditiveExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr682.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_FTUnit_in_p_FTWindow15548);
- p_FTUnit683=this.p_FTUnit();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnit683.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTDistance_return: (function() {
- XQueryParser.p_FTDistance_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTDistance_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1902:1: p_FTDistance : kd= DISTANCE p_FTRange p_FTUnit ;
- // $ANTLR start "p_FTDistance"
- p_FTDistance: function() {
- var retval = new XQueryParser.p_FTDistance_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var kd = null;
- var p_FTRange684 = null;
- var p_FTUnit685 = null;
-
- var kd_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1903:9: (kd= DISTANCE p_FTRange p_FTUnit )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1903:11: kd= DISTANCE p_FTRange p_FTUnit
- root_0 = this.adaptor.nil();
-
- kd=this.match(this.input,DISTANCE,XQueryParser.FOLLOW_DISTANCE_in_p_FTDistance15576); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kd_tree = this.adaptor.create(kd);
- this.adaptor.addChild(root_0, kd_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kd);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTRange_in_p_FTDistance15580);
- p_FTRange684=this.p_FTRange();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTRange684.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_FTUnit_in_p_FTDistance15582);
- p_FTUnit685=this.p_FTUnit();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnit685.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTUnit_return: (function() {
- XQueryParser.p_FTUnit_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTUnit_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1907:1: p_FTUnit : (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS ) ;
- // $ANTLR start "p_FTUnit"
- p_FTUnit: function() {
- var retval = new XQueryParser.p_FTUnit_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:9: ( (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:11: (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:11: (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS )
- var alt225=3;
- switch ( this.input.LA(1) ) {
- case WORDS:
- alt225=1;
- break;
- case SENTENCES:
- alt225=2;
- break;
- case PARAGRAPHS:
- alt225=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 225, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt225) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:13: k+= WORDS
- k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTUnit15612); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:24: k+= SENTENCES
- k=this.match(this.input,SENTENCES,XQueryParser.FOLLOW_SENTENCES_in_p_FTUnit15618); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:39: k+= PARAGRAPHS
- k=this.match(this.input,PARAGRAPHS,XQueryParser.FOLLOW_PARAGRAPHS_in_p_FTUnit15624); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTScope_return: (function() {
- XQueryParser.p_FTScope_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTScope_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1912:1: p_FTScope : (k+= SAME | k+= DIFFERENT ) p_FTBigUnit ;
- // $ANTLR start "p_FTScope"
- p_FTScope: function() {
- var retval = new XQueryParser.p_FTScope_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_FTBigUnit686 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:9: ( (k+= SAME | k+= DIFFERENT ) p_FTBigUnit )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:11: (k+= SAME | k+= DIFFERENT ) p_FTBigUnit
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:11: (k+= SAME | k+= DIFFERENT )
- var alt226=2;
- var LA226_0 = this.input.LA(1);
-
- if ( (LA226_0==SAME) ) {
- alt226=1;
- }
- else if ( (LA226_0==DIFFERENT) ) {
- alt226=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 226, 0, this.input);
-
- throw nvae;
- }
- switch (alt226) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:12: k+= SAME
- k=this.match(this.input,SAME,XQueryParser.FOLLOW_SAME_in_p_FTScope15657); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:22: k+= DIFFERENT
- k=this.match(this.input,DIFFERENT,XQueryParser.FOLLOW_DIFFERENT_in_p_FTScope15663); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTBigUnit_in_p_FTScope15668);
- p_FTBigUnit686=this.p_FTBigUnit();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTBigUnit686.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTBigUnit_return: (function() {
- XQueryParser.p_FTBigUnit_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTBigUnit_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1917:1: p_FTBigUnit : (k+= SENTENCE | k+= PARAGRAPH ) ;
- // $ANTLR start "p_FTBigUnit"
- p_FTBigUnit: function() {
- var retval = new XQueryParser.p_FTBigUnit_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:9: ( (k+= SENTENCE | k+= PARAGRAPH ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:11: (k+= SENTENCE | k+= PARAGRAPH )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:11: (k+= SENTENCE | k+= PARAGRAPH )
- var alt227=2;
- var LA227_0 = this.input.LA(1);
-
- if ( (LA227_0==SENTENCE) ) {
- alt227=1;
- }
- else if ( (LA227_0==PARAGRAPH) ) {
- alt227=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 227, 0, this.input);
-
- throw nvae;
- }
- switch (alt227) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:13: k+= SENTENCE
- k=this.match(this.input,SENTENCE,XQueryParser.FOLLOW_SENTENCE_in_p_FTBigUnit15698); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:27: k+= PARAGRAPH
- k=this.match(this.input,PARAGRAPH,XQueryParser.FOLLOW_PARAGRAPH_in_p_FTBigUnit15704); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTContent_return: (function() {
- XQueryParser.p_FTContent_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTContent_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1922:1: p_FTContent : ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) ) ;
- // $ANTLR start "p_FTContent"
- p_FTContent: function() {
- var retval = new XQueryParser.p_FTContent_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:9: ( ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:11: ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:11: ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) )
- var alt228=3;
- var LA228_0 = this.input.LA(1);
-
- if ( (LA228_0==AT) ) {
- var LA228_1 = this.input.LA(2);
-
- if ( (LA228_1==START) ) {
- alt228=1;
- }
- else if ( (LA228_1==END) ) {
- alt228=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 228, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA228_0==ENTIRE) ) {
- alt228=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 228, 0, this.input);
-
- throw nvae;
- }
- switch (alt228) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:13: (k+= AT k+= START )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:13: (k+= AT k+= START )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:14: k+= AT k+= START
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTContent15739); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,START,XQueryParser.FOLLOW_START_in_p_FTContent15743); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:32: (k+= AT k+= END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:32: (k+= AT k+= END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:33: k+= AT k+= END
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTContent15751); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,END,XQueryParser.FOLLOW_END_in_p_FTContent15755); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:49: (k+= ENTIRE k+= CONTENT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:49: (k+= ENTIRE k+= CONTENT )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:50: k+= ENTIRE k+= CONTENT
- k=this.match(this.input,ENTIRE,XQueryParser.FOLLOW_ENTIRE_in_p_FTContent15763); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,CONTENT,XQueryParser.FOLLOW_CONTENT_in_p_FTContent15767); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTMatchOptions_return: (function() {
- XQueryParser.p_FTMatchOptions_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTMatchOptions_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1927:1: p_FTMatchOptions : (ku= USING p_FTMatchOption )+ ;
- // $ANTLR start "p_FTMatchOptions"
- p_FTMatchOptions: function() {
- var retval = new XQueryParser.p_FTMatchOptions_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ku = null;
- var p_FTMatchOption687 = null;
-
- var ku_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:9: ( (ku= USING p_FTMatchOption )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:11: (ku= USING p_FTMatchOption )+
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:11: (ku= USING p_FTMatchOption )+
- var cnt229=0;
- loop229:
- do {
- var alt229=2;
- var LA229_0 = this.input.LA(1);
-
- if ( (LA229_0==USING) ) {
- alt229=1;
- }
-
-
- switch (alt229) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:12: ku= USING p_FTMatchOption
- ku=this.match(this.input,USING,XQueryParser.FOLLOW_USING_in_p_FTMatchOptions15801); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ku_tree = this.adaptor.create(ku);
- this.adaptor.addChild(root_0, ku_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ku);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOption_in_p_FTMatchOptions15805);
- p_FTMatchOption687=this.p_FTMatchOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOption687.getTree());
-
-
- break;
-
- default :
- if ( cnt229 >= 1 ) {
- break loop229;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(229, this.input);
- throw eee;
- }
- cnt229++;
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTMatchOption_return: (function() {
- XQueryParser.p_FTMatchOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTMatchOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1932:1: p_FTMatchOption : ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption );
- // $ANTLR start "p_FTMatchOption"
- p_FTMatchOption: function() {
- var retval = new XQueryParser.p_FTMatchOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_FTLanguageOption688 = null;
- var p_FTWildCardOption689 = null;
- var p_FTThesaurusOption690 = null;
- var p_FTStemOption691 = null;
- var p_FTCaseOption692 = null;
- var p_FTDiacriticsOption693 = null;
- var p_FTStopWordOption694 = null;
- var p_FTExtensionOption695 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1933:9: ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption )
- var alt230=8;
- alt230 = this.dfa230.predict(this.input);
- switch (alt230) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1933:11: p_FTLanguageOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTLanguageOption_in_p_FTMatchOption15833);
- p_FTLanguageOption688=this.p_FTLanguageOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTLanguageOption688.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1934:11: p_FTWildCardOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTWildCardOption_in_p_FTMatchOption15845);
- p_FTWildCardOption689=this.p_FTWildCardOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWildCardOption689.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1935:11: p_FTThesaurusOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusOption_in_p_FTMatchOption15857);
- p_FTThesaurusOption690=this.p_FTThesaurusOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusOption690.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1936:11: p_FTStemOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTStemOption_in_p_FTMatchOption15869);
- p_FTStemOption691=this.p_FTStemOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStemOption691.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1937:11: p_FTCaseOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTCaseOption_in_p_FTMatchOption15881);
- p_FTCaseOption692=this.p_FTCaseOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTCaseOption692.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1938:11: p_FTDiacriticsOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTDiacriticsOption_in_p_FTMatchOption15893);
- p_FTDiacriticsOption693=this.p_FTDiacriticsOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTDiacriticsOption693.getTree());
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1939:11: p_FTStopWordOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordOption_in_p_FTMatchOption15905);
- p_FTStopWordOption694=this.p_FTStopWordOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordOption694.getTree());
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1940:11: p_FTExtensionOption
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTExtensionOption_in_p_FTMatchOption15917);
- p_FTExtensionOption695=this.p_FTExtensionOption();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTExtensionOption695.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTCaseOption_return: (function() {
- XQueryParser.p_FTCaseOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTCaseOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1944:1: p_FTCaseOption : ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE ) ;
- // $ANTLR start "p_FTCaseOption"
- p_FTCaseOption: function() {
- var retval = new XQueryParser.p_FTCaseOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:9: ( ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:11: ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:11: ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE )
- var alt231=4;
- switch ( this.input.LA(1) ) {
- case CASE:
- var LA231_1 = this.input.LA(2);
-
- if ( (LA231_1==INSENSITIVE) ) {
- alt231=1;
- }
- else if ( (LA231_1==SENSITIVE) ) {
- alt231=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 231, 1, this.input);
-
- throw nvae;
- }
- break;
- case LOWERCASE:
- alt231=3;
- break;
- case UPPERCASE:
- alt231=4;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 231, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt231) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:13: (k+= CASE k+= INSENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:13: (k+= CASE k+= INSENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:14: k+= CASE k+= INSENSITIVE
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_FTCaseOption15948); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,INSENSITIVE,XQueryParser.FOLLOW_INSENSITIVE_in_p_FTCaseOption15952); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:13: (k+= CASE k+= SENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:13: (k+= CASE k+= SENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:14: k+= CASE k+= SENSITIVE
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_FTCaseOption15970); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,SENSITIVE,XQueryParser.FOLLOW_SENSITIVE_in_p_FTCaseOption15974); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1947:13: k+= LOWERCASE
- k=this.match(this.input,LOWERCASE,XQueryParser.FOLLOW_LOWERCASE_in_p_FTCaseOption15991); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1948:13: k+= UPPERCASE
- k=this.match(this.input,UPPERCASE,XQueryParser.FOLLOW_UPPERCASE_in_p_FTCaseOption16007); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTDiacriticsOption_return: (function() {
- XQueryParser.p_FTDiacriticsOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTDiacriticsOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1952:1: p_FTDiacriticsOption : ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) ) ;
- // $ANTLR start "p_FTDiacriticsOption"
- p_FTDiacriticsOption: function() {
- var retval = new XQueryParser.p_FTDiacriticsOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:9: ( ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:11: ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:11: ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) )
- var alt232=2;
- var LA232_0 = this.input.LA(1);
-
- if ( (LA232_0==DIACRITICS) ) {
- var LA232_1 = this.input.LA(2);
-
- if ( (LA232_1==INSENSITIVE) ) {
- alt232=1;
- }
- else if ( (LA232_1==SENSITIVE) ) {
- alt232=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 232, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 232, 0, this.input);
-
- throw nvae;
- }
- switch (alt232) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:13: (k+= DIACRITICS k+= INSENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:13: (k+= DIACRITICS k+= INSENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:14: k+= DIACRITICS k+= INSENSITIVE
- k=this.match(this.input,DIACRITICS,XQueryParser.FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16042); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,INSENSITIVE,XQueryParser.FOLLOW_INSENSITIVE_in_p_FTDiacriticsOption16046); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:13: (k+= DIACRITICS k+= SENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:13: (k+= DIACRITICS k+= SENSITIVE )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:14: k+= DIACRITICS k+= SENSITIVE
- k=this.match(this.input,DIACRITICS,XQueryParser.FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16064); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,SENSITIVE,XQueryParser.FOLLOW_SENSITIVE_in_p_FTDiacriticsOption16068); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTStemOption_return: (function() {
- XQueryParser.p_FTStemOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTStemOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1958:1: p_FTStemOption : (k+= STEMMING | (k+= NO k+= STEMMING ) ) ;
- // $ANTLR start "p_FTStemOption"
- p_FTStemOption: function() {
- var retval = new XQueryParser.p_FTStemOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:9: ( (k+= STEMMING | (k+= NO k+= STEMMING ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:11: (k+= STEMMING | (k+= NO k+= STEMMING ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:11: (k+= STEMMING | (k+= NO k+= STEMMING ) )
- var alt233=2;
- var LA233_0 = this.input.LA(1);
-
- if ( (LA233_0==STEMMING) ) {
- alt233=1;
- }
- else if ( (LA233_0==NO) ) {
- alt233=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 233, 0, this.input);
-
- throw nvae;
- }
- switch (alt233) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:13: k+= STEMMING
- k=this.match(this.input,STEMMING,XQueryParser.FOLLOW_STEMMING_in_p_FTStemOption16103); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:27: (k+= NO k+= STEMMING )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:27: (k+= NO k+= STEMMING )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:28: k+= NO k+= STEMMING
- k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTStemOption16110); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,STEMMING,XQueryParser.FOLLOW_STEMMING_in_p_FTStemOption16114); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTThesaurusOption_return: (function() {
- XQueryParser.p_FTThesaurusOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTThesaurusOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1963:1: p_FTThesaurusOption : ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) ) ;
- // $ANTLR start "p_FTThesaurusOption"
- p_FTThesaurusOption: function() {
- var retval = new XQueryParser.p_FTThesaurusOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LPAREN697 = null;
- var COMMA699 = null;
- var RPAREN701 = null;
- var k = null;
- var list_k=null;
- var p_FTThesaurusID696 = null;
- var p_FTThesaurusID698 = null;
- var p_FTThesaurusID700 = null;
-
- var LPAREN697_tree=null;
- var COMMA699_tree=null;
- var RPAREN701_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:9: ( ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:11: ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:11: ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) )
- var alt237=3;
- var LA237_0 = this.input.LA(1);
-
- if ( (LA237_0==THESAURUS) ) {
- var LA237_1 = this.input.LA(2);
-
- if ( (LA237_1==LPAREN) ) {
- alt237=2;
- }
- else if ( (LA237_1==AT||LA237_1==DEFAULT) ) {
- alt237=1;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 237, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA237_0==NO) ) {
- alt237=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 237, 0, this.input);
-
- throw nvae;
- }
- switch (alt237) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:13: (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:13: (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:14: k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT )
- k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16150); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:27: ( p_FTThesaurusID | k+= DEFAULT )
- var alt234=2;
- var LA234_0 = this.input.LA(1);
-
- if ( (LA234_0==AT) ) {
- alt234=1;
- }
- else if ( (LA234_0==DEFAULT) ) {
- alt234=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 234, 0, this.input);
-
- throw nvae;
- }
- switch (alt234) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:28: p_FTThesaurusID
- this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16153);
- p_FTThesaurusID696=this.p_FTThesaurusID();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID696.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:46: k+= DEFAULT
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTThesaurusOption16159); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:13: (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:13: (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:14: k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN
- k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16178); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- LPAREN697=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTThesaurusOption16180); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN697_tree = this.adaptor.create(LPAREN697);
- this.adaptor.addChild(root_0, LPAREN697_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:34: ( p_FTThesaurusID | k+= DEFAULT )
- var alt235=2;
- var LA235_0 = this.input.LA(1);
-
- if ( (LA235_0==AT) ) {
- alt235=1;
- }
- else if ( (LA235_0==DEFAULT) ) {
- alt235=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 235, 0, this.input);
-
- throw nvae;
- }
- switch (alt235) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:35: p_FTThesaurusID
- this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16183);
- p_FTThesaurusID698=this.p_FTThesaurusID();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID698.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:53: k+= DEFAULT
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTThesaurusOption16189); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:65: ( COMMA p_FTThesaurusID )*
- loop236:
- do {
- var alt236=2;
- var LA236_0 = this.input.LA(1);
-
- if ( (LA236_0==COMMA) ) {
- alt236=1;
- }
-
-
- switch (alt236) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:66: COMMA p_FTThesaurusID
- COMMA699=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_FTThesaurusOption16193); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA699_tree = this.adaptor.create(COMMA699);
- this.adaptor.addChild(root_0, COMMA699_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16195);
- p_FTThesaurusID700=this.p_FTThesaurusID();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID700.getTree());
-
-
- break;
-
- default :
- break loop236;
- }
- } while (true);
-
- RPAREN701=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTThesaurusOption16199); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN701_tree = this.adaptor.create(RPAREN701);
- this.adaptor.addChild(root_0, RPAREN701_tree);
- }
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:13: (k+= NO k+= THESAURUS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:13: (k+= NO k+= THESAURUS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:14: k+= NO k+= THESAURUS
- k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTThesaurusOption16217); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16221); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTThesaurusID_return: (function() {
- XQueryParser.p_FTThesaurusID_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTThesaurusID_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1970:1: p_FTThesaurusID : k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )? ;
- // $ANTLR start "p_FTThesaurusID"
- p_FTThesaurusID: function() {
- var retval = new XQueryParser.p_FTThesaurusID_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_StringLiteral702 = null;
- var p_StringLiteral703 = null;
- var p_FTLiteralRange704 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:9: (k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:11: k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTThesaurusID16254); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTThesaurusID16256);
- p_StringLiteral702=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral702.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:33: (k+= RELATIONSHIP p_StringLiteral )?
- var alt238=2;
- var LA238_0 = this.input.LA(1);
-
- if ( (LA238_0==RELATIONSHIP) ) {
- alt238=1;
- }
- switch (alt238) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:34: k+= RELATIONSHIP p_StringLiteral
- k=this.match(this.input,RELATIONSHIP,XQueryParser.FOLLOW_RELATIONSHIP_in_p_FTThesaurusID16261); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTThesaurusID16263);
- p_StringLiteral703=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral703.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:68: ( p_FTLiteralRange k+= LEVELS )?
- var alt239=2;
- var LA239_0 = this.input.LA(1);
-
- if ( ((LA239_0>=EXACTLY && LA239_0<=FROM)) ) {
- alt239=1;
- }
- else if ( (LA239_0==AT) ) {
- var LA239_2 = this.input.LA(2);
-
- if ( (LA239_2==LEAST||LA239_2==MOST) ) {
- alt239=1;
- }
- }
- switch (alt239) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:69: p_FTLiteralRange k+= LEVELS
- this.pushFollow(XQueryParser.FOLLOW_p_FTLiteralRange_in_p_FTThesaurusID16268);
- p_FTLiteralRange704=this.p_FTLiteralRange();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTLiteralRange704.getTree());
- k=this.match(this.input,LEVELS,XQueryParser.FOLLOW_LEVELS_in_p_FTThesaurusID16272); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTLiteralRange_return: (function() {
- XQueryParser.p_FTLiteralRange_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTLiteralRange_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1975:1: p_FTLiteralRange : ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) ) ;
- // $ANTLR start "p_FTLiteralRange"
- p_FTLiteralRange: function() {
- var retval = new XQueryParser.p_FTLiteralRange_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var L_IntegerLiteral705 = null;
- var L_IntegerLiteral706 = null;
- var L_IntegerLiteral707 = null;
- var L_IntegerLiteral708 = null;
- var TO709 = null;
- var L_IntegerLiteral710 = null;
- var k = null;
- var list_k=null;
-
- var L_IntegerLiteral705_tree=null;
- var L_IntegerLiteral706_tree=null;
- var L_IntegerLiteral707_tree=null;
- var L_IntegerLiteral708_tree=null;
- var TO709_tree=null;
- var L_IntegerLiteral710_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:9: ( ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:11: ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:11: ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) )
- var alt240=4;
- switch ( this.input.LA(1) ) {
- case EXACTLY:
- alt240=1;
- break;
- case AT:
- var LA240_2 = this.input.LA(2);
-
- if ( (LA240_2==LEAST) ) {
- alt240=2;
- }
- else if ( (LA240_2==MOST) ) {
- alt240=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 240, 2, this.input);
-
- throw nvae;
- }
- break;
- case FROM:
- alt240=4;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 240, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt240) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:13: (k+= EXACTLY L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:13: (k+= EXACTLY L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:14: k+= EXACTLY L_IntegerLiteral
- k=this.match(this.input,EXACTLY,XQueryParser.FOLLOW_EXACTLY_in_p_FTLiteralRange16307); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- L_IntegerLiteral705=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16309); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral705_tree = this.adaptor.create(L_IntegerLiteral705);
- this.adaptor.addChild(root_0, L_IntegerLiteral705_tree);
- }
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:13: (k+= AT k+= LEAST L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:13: (k+= AT k+= LEAST L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:14: k+= AT k+= LEAST L_IntegerLiteral
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTLiteralRange16327); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_FTLiteralRange16331); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- L_IntegerLiteral706=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16333); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral706_tree = this.adaptor.create(L_IntegerLiteral706);
- this.adaptor.addChild(root_0, L_IntegerLiteral706_tree);
- }
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:13: (k+= AT k+= MOST L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:13: (k+= AT k+= MOST L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:14: k+= AT k+= MOST L_IntegerLiteral
- k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTLiteralRange16351); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,MOST,XQueryParser.FOLLOW_MOST_in_p_FTLiteralRange16355); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- L_IntegerLiteral707=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16357); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral707_tree = this.adaptor.create(L_IntegerLiteral707);
- this.adaptor.addChild(root_0, L_IntegerLiteral707_tree);
- }
-
-
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:13: (k+= FROM L_IntegerLiteral TO L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:13: (k+= FROM L_IntegerLiteral TO L_IntegerLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:14: k+= FROM L_IntegerLiteral TO L_IntegerLiteral
- k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_FTLiteralRange16375); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- L_IntegerLiteral708=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16377); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral708_tree = this.adaptor.create(L_IntegerLiteral708);
- this.adaptor.addChild(root_0, L_IntegerLiteral708_tree);
- }
- TO709=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_FTLiteralRange16379); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- TO709_tree = this.adaptor.create(TO709);
- this.adaptor.addChild(root_0, TO709_tree);
- }
- L_IntegerLiteral710=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16381); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- L_IntegerLiteral710_tree = this.adaptor.create(L_IntegerLiteral710);
- this.adaptor.addChild(root_0, L_IntegerLiteral710_tree);
- }
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTStopWordOption_return: (function() {
- XQueryParser.p_FTStopWordOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTStopWordOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1983:1: p_FTStopWordOption : ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) ) ;
- // $ANTLR start "p_FTStopWordOption"
- p_FTStopWordOption: function() {
- var retval = new XQueryParser.p_FTStopWordOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_FTStopWords711 = null;
- var p_FTStopWordsInclExcl712 = null;
- var p_FTStopWordsInclExcl713 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:9: ( ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:11: ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:11: ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) )
- var alt243=3;
- var LA243_0 = this.input.LA(1);
-
- if ( (LA243_0==STOP) ) {
- var LA243_1 = this.input.LA(2);
-
- if ( (LA243_1==WORDS) ) {
- var LA243_3 = this.input.LA(3);
-
- if ( (LA243_3==DEFAULT) ) {
- alt243=2;
- }
- else if ( (LA243_3==AT||LA243_3==LPAREN) ) {
- alt243=1;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 243, 3, this.input);
-
- throw nvae;
- }
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 243, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA243_0==NO) ) {
- alt243=3;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 243, 0, this.input);
-
- throw nvae;
- }
- switch (alt243) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:13: (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:13: (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:14: k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )*
- k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16417); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16421); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTStopWords_in_p_FTStopWordOption16423);
- p_FTStopWords711=this.p_FTStopWords();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWords711.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:45: ( p_FTStopWordsInclExcl )*
- loop241:
- do {
- var alt241=2;
- var LA241_0 = this.input.LA(1);
-
- if ( (LA241_0==EXCEPT||LA241_0==UNION) ) {
- alt241=1;
- }
-
-
- switch (alt241) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:45: p_FTStopWordsInclExcl
- this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16425);
- p_FTStopWordsInclExcl712=this.p_FTStopWordsInclExcl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordsInclExcl712.getTree());
-
-
- break;
-
- default :
- break loop241;
- }
- } while (true);
-
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:13: (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:13: (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:14: k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )*
- k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16444); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16448); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTStopWordOption16452); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:42: ( p_FTStopWordsInclExcl )*
- loop242:
- do {
- var alt242=2;
- var LA242_0 = this.input.LA(1);
-
- if ( (LA242_0==EXCEPT||LA242_0==UNION) ) {
- alt242=1;
- }
-
-
- switch (alt242) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:42: p_FTStopWordsInclExcl
- this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16454);
- p_FTStopWordsInclExcl713=this.p_FTStopWordsInclExcl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordsInclExcl713.getTree());
-
-
- break;
-
- default :
- break loop242;
- }
- } while (true);
-
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:13: (k+= NO k+= STOP k+= WORDS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:13: (k+= NO k+= STOP k+= WORDS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:14: k+= NO k+= STOP k+= WORDS
- k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTStopWordOption16473); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16477); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16481); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTStopWords_return: (function() {
- XQueryParser.p_FTStopWords_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTStopWords_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1990:1: p_FTStopWords : ( (ka= AT p_StringLiteral ) | ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN ) );
- // $ANTLR start "p_FTStopWords"
- p_FTStopWords: function() {
- var retval = new XQueryParser.p_FTStopWords_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ka = null;
- var LPAREN715 = null;
- var COMMA717 = null;
- var RPAREN719 = null;
- var p_StringLiteral714 = null;
- var p_StringLiteral716 = null;
- var p_StringLiteral718 = null;
-
- var ka_tree=null;
- var LPAREN715_tree=null;
- var COMMA717_tree=null;
- var RPAREN719_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:9: ( (ka= AT p_StringLiteral ) | ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN ) )
- var alt245=2;
- var LA245_0 = this.input.LA(1);
-
- if ( (LA245_0==AT) ) {
- alt245=1;
- }
- else if ( (LA245_0==LPAREN) ) {
- alt245=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 245, 0, this.input);
-
- throw nvae;
- }
- switch (alt245) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:11: (ka= AT p_StringLiteral )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:11: (ka= AT p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:12: ka= AT p_StringLiteral
- ka=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTStopWords16515); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ka_tree = this.adaptor.create(ka);
- this.adaptor.addChild(root_0, ka_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ka);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16519);
- p_StringLiteral714=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral714.getTree());
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:11: ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:11: ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:12: LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN
- LPAREN715=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTStopWords16533); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN715_tree = this.adaptor.create(LPAREN715);
- this.adaptor.addChild(root_0, LPAREN715_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16535);
- p_StringLiteral716=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral716.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:35: ( COMMA p_StringLiteral )*
- loop244:
- do {
- var alt244=2;
- var LA244_0 = this.input.LA(1);
-
- if ( (LA244_0==COMMA) ) {
- alt244=1;
- }
-
-
- switch (alt244) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:36: COMMA p_StringLiteral
- COMMA717=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_FTStopWords16538); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA717_tree = this.adaptor.create(COMMA717);
- this.adaptor.addChild(root_0, COMMA717_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16540);
- p_StringLiteral718=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral718.getTree());
-
-
- break;
-
- default :
- break loop244;
- }
- } while (true);
-
- RPAREN719=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTStopWords16544); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN719_tree = this.adaptor.create(RPAREN719);
- this.adaptor.addChild(root_0, RPAREN719_tree);
- }
-
-
-
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTStopWordsInclExcl_return: (function() {
- XQueryParser.p_FTStopWordsInclExcl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTStopWordsInclExcl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1996:1: p_FTStopWordsInclExcl : ( (k+= UNION | k+= EXCEPT ) p_FTStopWords ) ;
- // $ANTLR start "p_FTStopWordsInclExcl"
- p_FTStopWordsInclExcl: function() {
- var retval = new XQueryParser.p_FTStopWordsInclExcl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_FTStopWords720 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:9: ( ( (k+= UNION | k+= EXCEPT ) p_FTStopWords ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:11: ( (k+= UNION | k+= EXCEPT ) p_FTStopWords )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:11: ( (k+= UNION | k+= EXCEPT ) p_FTStopWords )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:13: (k+= UNION | k+= EXCEPT ) p_FTStopWords
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:13: (k+= UNION | k+= EXCEPT )
- var alt246=2;
- var LA246_0 = this.input.LA(1);
-
- if ( (LA246_0==UNION) ) {
- alt246=1;
- }
- else if ( (LA246_0==EXCEPT) ) {
- alt246=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 246, 0, this.input);
-
- throw nvae;
- }
- switch (alt246) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:14: k+= UNION
- k=this.match(this.input,UNION,XQueryParser.FOLLOW_UNION_in_p_FTStopWordsInclExcl16576); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:25: k+= EXCEPT
- k=this.match(this.input,EXCEPT,XQueryParser.FOLLOW_EXCEPT_in_p_FTStopWordsInclExcl16582); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_FTStopWords_in_p_FTStopWordsInclExcl16585);
- p_FTStopWords720=this.p_FTStopWords();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWords720.getTree());
-
-
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTLanguageOption_return: (function() {
- XQueryParser.p_FTLanguageOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTLanguageOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2001:1: p_FTLanguageOption : kl= LANGUAGE p_StringLiteral ;
- // $ANTLR start "p_FTLanguageOption"
- p_FTLanguageOption: function() {
- var retval = new XQueryParser.p_FTLanguageOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var kl = null;
- var p_StringLiteral721 = null;
-
- var kl_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2002:9: (kl= LANGUAGE p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2002:11: kl= LANGUAGE p_StringLiteral
- root_0 = this.adaptor.nil();
-
- kl=this.match(this.input,LANGUAGE,XQueryParser.FOLLOW_LANGUAGE_in_p_FTLanguageOption16617); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- kl_tree = this.adaptor.create(kl);
- this.adaptor.addChild(root_0, kl_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(kl);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTLanguageOption16621);
- p_StringLiteral721=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral721.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTWildCardOption_return: (function() {
- XQueryParser.p_FTWildCardOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTWildCardOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2006:1: p_FTWildCardOption : (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) ) ;
- // $ANTLR start "p_FTWildCardOption"
- p_FTWildCardOption: function() {
- var retval = new XQueryParser.p_FTWildCardOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:9: ( (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:11: (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:11: (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) )
- var alt247=2;
- var LA247_0 = this.input.LA(1);
-
- if ( (LA247_0==WILDCARDS) ) {
- alt247=1;
- }
- else if ( (LA247_0==NO) ) {
- alt247=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 247, 0, this.input);
-
- throw nvae;
- }
- switch (alt247) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:13: k+= WILDCARDS
- k=this.match(this.input,WILDCARDS,XQueryParser.FOLLOW_WILDCARDS_in_p_FTWildCardOption16651); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:28: (k+= NO k+= WILDCARDS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:28: (k+= NO k+= WILDCARDS )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:29: k+= NO k+= WILDCARDS
- k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTWildCardOption16658); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,WILDCARDS,XQueryParser.FOLLOW_WILDCARDS_in_p_FTWildCardOption16662); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
-
-
-
-
-
- break;
-
- }
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTExtensionOption_return: (function() {
- XQueryParser.p_FTExtensionOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTExtensionOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2011:1: p_FTExtensionOption : ko= OPTION p_QName p_StringLiteral ;
- // $ANTLR start "p_FTExtensionOption"
- p_FTExtensionOption: function() {
- var retval = new XQueryParser.p_FTExtensionOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var ko = null;
- var p_QName722 = null;
- var p_StringLiteral723 = null;
-
- var ko_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2012:9: (ko= OPTION p_QName p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2012:11: ko= OPTION p_QName p_StringLiteral
- root_0 = this.adaptor.nil();
-
- ko=this.match(this.input,OPTION,XQueryParser.FOLLOW_OPTION_in_p_FTExtensionOption16695); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- ko_tree = this.adaptor.create(ko);
- this.adaptor.addChild(root_0, ko_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(ko);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_FTExtensionOption16699);
- p_QName722=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName722.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTExtensionOption16701);
- p_StringLiteral723=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral723.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FTIgnoreOption_return: (function() {
- XQueryParser.p_FTIgnoreOption_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FTIgnoreOption_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2016:1: p_FTIgnoreOption : k+= WITHOUT k+= CONTENT p_UnionExpr ;
- // $ANTLR start "p_FTIgnoreOption"
- p_FTIgnoreOption: function() {
- var retval = new XQueryParser.p_FTIgnoreOption_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var list_k=null;
- var p_UnionExpr724 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2017:9: (k+= WITHOUT k+= CONTENT p_UnionExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2017:11: k+= WITHOUT k+= CONTENT p_UnionExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,WITHOUT,XQueryParser.FOLLOW_WITHOUT_in_p_FTIgnoreOption16729); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- k=this.match(this.input,CONTENT,XQueryParser.FOLLOW_CONTENT_in_p_FTIgnoreOption16733); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if (org.antlr.lang.isNull(list_k)) list_k = [];
- list_k.push(k);
-
- if ( this.state.backtracking===0 ) {
- this.ak(list_k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_FTIgnoreOption16737);
- p_UnionExpr724=this.p_UnionExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr724.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Program_return: (function() {
- XQueryParser.p_Program_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Program_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2027:1: p_Program : p_StatementsAndOptionalExpr ;
- // $ANTLR start "p_Program"
- p_Program: function() {
- var retval = new XQueryParser.p_Program_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_StatementsAndOptionalExpr725 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2028:9: ( p_StatementsAndOptionalExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2028:11: p_StatementsAndOptionalExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_p_Program16769);
- p_StatementsAndOptionalExpr725=this.p_StatementsAndOptionalExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr725.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Statements_return: (function() {
- XQueryParser.p_Statements_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Statements_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2032:1: p_Statements[strict] : ( p_Hybrid[$strict,true] )* ;
- // $ANTLR start "p_Statements"
- p_Statements: function(strict) {
- var retval = new XQueryParser.p_Statements_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Hybrid726 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:9: ( ( p_Hybrid[$strict,true] )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: ( p_Hybrid[$strict,true] )*
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: ( p_Hybrid[$strict,true] )*
- loop248:
- do {
- var alt248=2;
- var LA248_0 = this.input.LA(1);
-
- if ( ((LA248_0>=ANCESTOR && LA248_0<=QUOT_ER)||LA248_0==LPAREN||(LA248_0>=DOLLAR && LA248_0<=L_UNION_BRACKET)||LA248_0==LBRACKET||LA248_0==LSQUARE||LA248_0==ANN_PERCENT||(LA248_0>=STAR && LA248_0<=SMALLER)||(LA248_0>=SLASH && LA248_0<=SLASH_SLASH)||(LA248_0>=DOT && LA248_0<=DOT_DOT)||(LA248_0>=ATTR_SIGN && LA248_0<=Q)||(LA248_0>=APOS && LA248_0<=QUOT)||LA248_0==L_NCName||(LA248_0>=L_Pragma && LA248_0<=L_DoubleLiteral)) ) {
- alt248=1;
- }
-
-
- switch (alt248) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: p_Hybrid[$strict,true]
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_Statements16796);
- p_Hybrid726=this.p_Hybrid(strict, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid726.getTree());
-
-
- break;
-
- default :
- break loop248;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StatementsAndExpr_return: (function() {
- XQueryParser.p_StatementsAndExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StatementsAndExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2037:1: p_StatementsAndExpr : p_Statements[false] ;
- // $ANTLR start "p_StatementsAndExpr"
- p_StatementsAndExpr: function() {
- var retval = new XQueryParser.p_StatementsAndExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Statements727 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2038:9: ( p_Statements[false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2038:11: p_Statements[false]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_StatementsAndExpr16824);
- p_Statements727=this.p_Statements(false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements727.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_StatementsAndOptionalExpr_return: (function() {
- XQueryParser.p_StatementsAndOptionalExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_StatementsAndOptionalExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2042:1: p_StatementsAndOptionalExpr : p_Statements[false] ;
- // $ANTLR start "p_StatementsAndOptionalExpr"
- p_StatementsAndOptionalExpr: function() {
- var retval = new XQueryParser.p_StatementsAndOptionalExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_Statements728 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2043:9: ( p_Statements[false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2043:11: p_Statements[false]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_StatementsAndOptionalExpr16851);
- p_Statements728=this.p_Statements(false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements728.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Hybrid_return: (function() {
- XQueryParser.p_Hybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Hybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2046:1: p_Hybrid[strict, allowConcat] : ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement );
- // $ANTLR start "p_Hybrid"
- p_Hybrid: function(strict, allowConcat) {
- var retval = new XQueryParser.p_Hybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_HybridExprSingle729 = null;
- var p_Statement730 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2047:9: ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement )
- var alt249=2;
- alt249 = this.dfa249.predict(this.input);
- switch (alt249) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2047:11: p_HybridExprSingle[$strict,$allowConcat]
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_HybridExprSingle_in_p_Hybrid16878);
- p_HybridExprSingle729=this.p_HybridExprSingle(strict, allowConcat);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_HybridExprSingle729.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2048:11: p_Statement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Statement_in_p_Hybrid16891);
- p_Statement730=this.p_Statement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statement730.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
-
- if(re instanceof org.antlr.runtime.RecognitionException) {
- //console.log("catch3");
- var v = this.p_StepExpr();
- root_0 = this.adaptor.nil();
- this.adaptor.addChild(root_0, v.getTree());
- retval.stop = this.input.LT(-1);
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- } else {
- throw re;
- }
-
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_Statement_return: (function() {
- XQueryParser.p_Statement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_Statement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2064:1: p_Statement : ( p_AssignStatement | p_BreakStatement | p_ContinueStatement | p_ExitStatement | p_VarDeclStatement | p_WhileStatement );
- // $ANTLR start "p_Statement"
- p_Statement: function() {
- var retval = new XQueryParser.p_Statement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_AssignStatement731 = null;
- var p_BreakStatement732 = null;
- var p_ContinueStatement733 = null;
- var p_ExitStatement734 = null;
- var p_VarDeclStatement735 = null;
- var p_WhileStatement736 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2065:9: ( p_AssignStatement | p_BreakStatement | p_ContinueStatement | p_ExitStatement | p_VarDeclStatement | p_WhileStatement )
- var alt250=6;
- switch ( this.input.LA(1) ) {
- case DOLLAR:
- alt250=1;
- break;
- case BREAK:
- alt250=2;
- break;
- case CONTINUE:
- alt250=3;
- break;
- case EXIT:
- alt250=4;
- break;
- case VARIABLE:
- case ANN_PERCENT:
- alt250=5;
- break;
- case WHILE:
- alt250=6;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 250, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt250) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2065:11: p_AssignStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_AssignStatement_in_p_Statement16922);
- p_AssignStatement731=this.p_AssignStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AssignStatement731.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2066:11: p_BreakStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_BreakStatement_in_p_Statement16934);
- p_BreakStatement732=this.p_BreakStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BreakStatement732.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2067:11: p_ContinueStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ContinueStatement_in_p_Statement16946);
- p_ContinueStatement733=this.p_ContinueStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ContinueStatement733.getTree());
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2068:11: p_ExitStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExitStatement_in_p_Statement16958);
- p_ExitStatement734=this.p_ExitStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExitStatement734.getTree());
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2069:11: p_VarDeclStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_VarDeclStatement_in_p_Statement16970);
- p_VarDeclStatement735=this.p_VarDeclStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDeclStatement735.getTree());
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2070:11: p_WhileStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_WhileStatement_in_p_Statement16982);
- p_WhileStatement736=this.p_WhileStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WhileStatement736.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_HybridExprSingle_return: (function() {
- XQueryParser.p_HybridExprSingle_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_HybridExprSingle_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2072:1: p_HybridExprSingle[strict, allowConcat] : e= p_Expr[$strict,$allowConcat] SEMICOLON ;
- // $ANTLR start "p_HybridExprSingle"
- p_HybridExprSingle: function(strict, allowConcat) {
- var retval = new XQueryParser.p_HybridExprSingle_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SEMICOLON737 = null;
- var e = null;
-
- var SEMICOLON737_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2073:9: (e= p_Expr[$strict,$allowConcat] SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2073:11: e= p_Expr[$strict,$allowConcat] SEMICOLON
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_HybridExprSingle17009);
- e=this.p_Expr(strict, allowConcat);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, e.getTree());
- if ( this.state.backtracking===0 ) {
- if (strict || this.input.LT(1).getType() != SEMICOLON) throw new org.antlr.runtime.RecognitionException(this.input);
- }
- SEMICOLON737=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_HybridExprSingle17024); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON737_tree = this.adaptor.create(SEMICOLON737);
- this.adaptor.addChild(root_0, SEMICOLON737_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
-
- if(re instanceof org.antlr.runtime.RecognitionException) {
- //console.log("catch4");
- if(this.input.LT(1).getType() == COLON) {
- var v = this.p_PairConstructor();
- root_0 = this.adaptor.nil();
- this.adaptor.addChild(root_0, v.getTree());
- retval.stop = this.input.LT(-1);
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- } else {
- root_0 = this.adaptor.nil();
- this.adaptor.addChild(root_0, e.getTree());
- retval.stop = this.input.LT(-1);
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- } else {
- throw re;
- }
-
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ApplyStatement_return: (function() {
- XQueryParser.p_ApplyStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ApplyStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2117:1: p_ApplyStatement : p_ExprSimple SEMICOLON ;
- // $ANTLR start "p_ApplyStatement"
- p_ApplyStatement: function() {
- var retval = new XQueryParser.p_ApplyStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var SEMICOLON739 = null;
- var p_ExprSimple738 = null;
-
- var SEMICOLON739_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2118:9: ( p_ExprSimple SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2118:11: p_ExprSimple SEMICOLON
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSimple_in_p_ApplyStatement17074);
- p_ExprSimple738=this.p_ExprSimple();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSimple738.getTree());
- SEMICOLON739=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ApplyStatement17076); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON739_tree = this.adaptor.create(SEMICOLON739);
- this.adaptor.addChild(root_0, SEMICOLON739_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AssignStatement_return: (function() {
- XQueryParser.p_AssignStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AssignStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2122:1: p_AssignStatement : d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON ;
- // $ANTLR start "p_AssignStatement"
- p_AssignStatement: function() {
- var retval = new XQueryParser.p_AssignStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var BIND740 = null;
- var SEMICOLON742 = null;
- var v = null;
- var p_ExprSingle741 = null;
-
- var d_tree=null;
- var BIND740_tree=null;
- var SEMICOLON742_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2123:9: (d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2123:11: d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_AssignStatement17104); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_AssignStatement17108);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- BIND740=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_AssignStatement17112); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND740_tree = this.adaptor.create(BIND740);
- this.adaptor.addChild(root_0, BIND740_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_AssignStatement17114);
- p_ExprSingle741=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle741.getTree());
- SEMICOLON742=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_AssignStatement17117); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON742_tree = this.adaptor.create(SEMICOLON742);
- this.adaptor.addChild(root_0, SEMICOLON742_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_BlockStatement_return: (function() {
- XQueryParser.p_BlockStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_BlockStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2127:1: p_BlockStatement : LBRACKET p_Statements[false] RBRACKET ;
- // $ANTLR start "p_BlockStatement"
- p_BlockStatement: function() {
- var retval = new XQueryParser.p_BlockStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET743 = null;
- var RBRACKET745 = null;
- var p_Statements744 = null;
-
- var LBRACKET743_tree=null;
- var RBRACKET745_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2128:9: ( LBRACKET p_Statements[false] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2128:11: LBRACKET p_Statements[false] RBRACKET
- root_0 = this.adaptor.nil();
-
- LBRACKET743=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockStatement17143); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET743_tree = this.adaptor.create(LBRACKET743);
- this.adaptor.addChild(root_0, LBRACKET743_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_BlockStatement17145);
- p_Statements744=this.p_Statements(false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements744.getTree());
- RBRACKET745=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockStatement17148); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET745_tree = this.adaptor.create(RBRACKET745);
- this.adaptor.addChild(root_0, RBRACKET745_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_BlockHybrid_return: (function() {
- XQueryParser.p_BlockHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_BlockHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2131:1: p_BlockHybrid[strict] : LBRACKET p_Statements[$strict] RBRACKET ;
- // $ANTLR start "p_BlockHybrid"
- p_BlockHybrid: function(strict) {
- var retval = new XQueryParser.p_BlockHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET746 = null;
- var RBRACKET748 = null;
- var p_Statements747 = null;
-
- var LBRACKET746_tree=null;
- var RBRACKET748_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2132:9: ( LBRACKET p_Statements[$strict] RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2132:11: LBRACKET p_Statements[$strict] RBRACKET
- root_0 = this.adaptor.nil();
-
- LBRACKET746=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockHybrid17174); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET746_tree = this.adaptor.create(LBRACKET746);
- this.adaptor.addChild(root_0, LBRACKET746_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_BlockHybrid17176);
- p_Statements747=this.p_Statements(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements747.getTree());
- RBRACKET748=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockHybrid17179); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET748_tree = this.adaptor.create(RBRACKET748);
- this.adaptor.addChild(root_0, RBRACKET748_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_BreakStatement_return: (function() {
- XQueryParser.p_BreakStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_BreakStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2136:1: p_BreakStatement : k= BREAK k= LOOP SEMICOLON ;
- // $ANTLR start "p_BreakStatement"
- p_BreakStatement: function() {
- var retval = new XQueryParser.p_BreakStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON749 = null;
-
- var k_tree=null;
- var SEMICOLON749_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2137:9: (k= BREAK k= LOOP SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2137:11: k= BREAK k= LOOP SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,BREAK,XQueryParser.FOLLOW_BREAK_in_p_BreakStatement17207); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,LOOP,XQueryParser.FOLLOW_LOOP_in_p_BreakStatement17213); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- SEMICOLON749=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_BreakStatement17217); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON749_tree = this.adaptor.create(SEMICOLON749);
- this.adaptor.addChild(root_0, SEMICOLON749_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ContinueStatement_return: (function() {
- XQueryParser.p_ContinueStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ContinueStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2141:1: p_ContinueStatement : k= CONTINUE k= LOOP SEMICOLON ;
- // $ANTLR start "p_ContinueStatement"
- p_ContinueStatement: function() {
- var retval = new XQueryParser.p_ContinueStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON750 = null;
-
- var k_tree=null;
- var SEMICOLON750_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2142:9: (k= CONTINUE k= LOOP SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2142:11: k= CONTINUE k= LOOP SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,CONTINUE,XQueryParser.FOLLOW_CONTINUE_in_p_ContinueStatement17245); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,LOOP,XQueryParser.FOLLOW_LOOP_in_p_ContinueStatement17251); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- SEMICOLON750=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ContinueStatement17255); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON750_tree = this.adaptor.create(SEMICOLON750);
- this.adaptor.addChild(root_0, SEMICOLON750_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ExitStatement_return: (function() {
- XQueryParser.p_ExitStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ExitStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2146:1: p_ExitStatement : k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON ;
- // $ANTLR start "p_ExitStatement"
- p_ExitStatement: function() {
- var retval = new XQueryParser.p_ExitStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var SEMICOLON752 = null;
- var p_ExprSingle751 = null;
-
- var k_tree=null;
- var SEMICOLON752_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2147:9: (k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2147:11: k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,EXIT,XQueryParser.FOLLOW_EXIT_in_p_ExitStatement17283); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,RETURNING,XQueryParser.FOLLOW_RETURNING_in_p_ExitStatement17289); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ExitStatement17293);
- p_ExprSingle751=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle751.getTree());
- SEMICOLON752=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ExitStatement17296); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON752_tree = this.adaptor.create(SEMICOLON752);
- this.adaptor.addChild(root_0, SEMICOLON752_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_FLWORStatement_return: (function() {
- XQueryParser.p_FLWORStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_FLWORStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2151:1: p_FLWORStatement : p_InitialClause ( p_IntermediateClause )* p_ReturnStatement ;
- // $ANTLR start "p_FLWORStatement"
- p_FLWORStatement: function() {
- var retval = new XQueryParser.p_FLWORStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_InitialClause753 = null;
- var p_IntermediateClause754 = null;
- var p_ReturnStatement755 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:9: ( p_InitialClause ( p_IntermediateClause )* p_ReturnStatement )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:11: p_InitialClause ( p_IntermediateClause )* p_ReturnStatement
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_FLWORStatement17322);
- p_InitialClause753=this.p_InitialClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause753.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:27: ( p_IntermediateClause )*
- loop251:
- do {
- var alt251=2;
- var LA251_0 = this.input.LA(1);
-
- if ( (LA251_0==FOR||LA251_0==LET||LA251_0==ORDER||LA251_0==STABLE||LA251_0==WHERE||LA251_0==COUNT||LA251_0==GROUP) ) {
- alt251=1;
- }
-
-
- switch (alt251) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:27: p_IntermediateClause
- this.pushFollow(XQueryParser.FOLLOW_p_IntermediateClause_in_p_FLWORStatement17324);
- p_IntermediateClause754=this.p_IntermediateClause();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntermediateClause754.getTree());
-
-
- break;
-
- default :
- break loop251;
- }
- } while (true);
-
- this.pushFollow(XQueryParser.FOLLOW_p_ReturnStatement_in_p_FLWORStatement17327);
- p_ReturnStatement755=this.p_ReturnStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReturnStatement755.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ReturnStatement_return: (function() {
- XQueryParser.p_ReturnStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ReturnStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2156:1: p_ReturnStatement : k= RETURN p_Hybrid[false,false] ;
- // $ANTLR start "p_ReturnStatement"
- p_ReturnStatement: function() {
- var retval = new XQueryParser.p_ReturnStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_Hybrid756 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2157:9: (k= RETURN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2157:11: k= RETURN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_ReturnStatement17359); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_ReturnStatement17363);
- p_Hybrid756=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid756.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IfStatement_return: (function() {
- XQueryParser.p_IfStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IfStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2161:1: p_IfStatement : k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false] ;
- // $ANTLR start "p_IfStatement"
- p_IfStatement: function() {
- var retval = new XQueryParser.p_IfStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN757 = null;
- var RPAREN759 = null;
- var p_Expr758 = null;
- var p_Hybrid760 = null;
- var p_Hybrid761 = null;
-
- var k_tree=null;
- var LPAREN757_tree=null;
- var RPAREN759_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2162:9: (k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2162:11: k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_p_IfStatement17392); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN757=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_IfStatement17396); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN757_tree = this.adaptor.create(LPAREN757);
- this.adaptor.addChild(root_0, LPAREN757_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_IfStatement17398);
- p_Expr758=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr758.getTree());
- RPAREN759=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_IfStatement17401); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN759_tree = this.adaptor.create(RPAREN759);
- this.adaptor.addChild(root_0, RPAREN759_tree);
- }
- k=this.match(this.input,THEN,XQueryParser.FOLLOW_THEN_in_p_IfStatement17405); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfStatement17409);
- p_Hybrid760=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid760.getTree());
- k=this.match(this.input,ELSE,XQueryParser.FOLLOW_ELSE_in_p_IfStatement17414); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfStatement17418);
- p_Hybrid761=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid761.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SwitchStatement_return: (function() {
- XQueryParser.p_SwitchStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SwitchStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2166:1: p_SwitchStatement : k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false] ;
- // $ANTLR start "p_SwitchStatement"
- p_SwitchStatement: function() {
- var retval = new XQueryParser.p_SwitchStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN762 = null;
- var RPAREN764 = null;
- var p_Expr763 = null;
- var p_SwitchCaseStatement765 = null;
- var p_Hybrid766 = null;
-
- var k_tree=null;
- var LPAREN762_tree=null;
- var RPAREN764_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:9: (k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:11: k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_p_SwitchStatement17447); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN762=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SwitchStatement17451); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN762_tree = this.adaptor.create(LPAREN762);
- this.adaptor.addChild(root_0, LPAREN762_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SwitchStatement17453);
- p_Expr763=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr763.getTree());
- RPAREN764=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SwitchStatement17456); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN764_tree = this.adaptor.create(RPAREN764);
- this.adaptor.addChild(root_0, RPAREN764_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:67: ( p_SwitchCaseStatement )+
- var cnt252=0;
- loop252:
- do {
- var alt252=2;
- var LA252_0 = this.input.LA(1);
-
- if ( (LA252_0==CASE) ) {
- alt252=1;
- }
-
-
- switch (alt252) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:67: p_SwitchCaseStatement
- this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseStatement_in_p_SwitchStatement17458);
- p_SwitchCaseStatement765=this.p_SwitchCaseStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseStatement765.getTree());
-
-
- break;
-
- default :
- if ( cnt252 >= 1 ) {
- break loop252;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(252, this.input);
- throw eee;
- }
- cnt252++;
- } while (true);
-
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SwitchStatement17463); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchStatement17469); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchStatement17473);
- p_Hybrid766=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid766.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_SwitchCaseStatement_return: (function() {
- XQueryParser.p_SwitchCaseStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_SwitchCaseStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2171:1: p_SwitchCaseStatement : (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false] ;
- // $ANTLR start "p_SwitchCaseStatement"
- p_SwitchCaseStatement: function() {
- var retval = new XQueryParser.p_SwitchCaseStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_SwitchCaseOperand767 = null;
- var p_Hybrid768 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:9: ( (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:11: (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:11: (k= CASE p_SwitchCaseOperand )+
- var cnt253=0;
- loop253:
- do {
- var alt253=2;
- var LA253_0 = this.input.LA(1);
-
- if ( (LA253_0==CASE) ) {
- alt253=1;
- }
-
-
- switch (alt253) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:12: k= CASE p_SwitchCaseOperand
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_SwitchCaseStatement17503); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseStatement17507);
- p_SwitchCaseOperand767=this.p_SwitchCaseOperand();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseOperand767.getTree());
-
-
- break;
-
- default :
- if ( cnt253 >= 1 ) {
- break loop253;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(253, this.input);
- throw eee;
- }
- cnt253++;
- } while (true);
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchCaseStatement17513); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchCaseStatement17517);
- p_Hybrid768=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid768.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TryCatchStatement_return: (function() {
- XQueryParser.p_TryCatchStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TryCatchStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2176:1: p_TryCatchStatement : k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+ ;
- // $ANTLR start "p_TryCatchStatement"
- p_TryCatchStatement: function() {
- var retval = new XQueryParser.p_TryCatchStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_BlockStatement769 = null;
- var p_CatchErrorList770 = null;
- var p_BlockStatement771 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:9: (k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:11: k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryCatchStatement17546); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_BlockStatement_in_p_TryCatchStatement17550);
- p_BlockStatement769=this.p_BlockStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockStatement769.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:49: (k= CATCH p_CatchErrorList p_BlockStatement )+
- var cnt254=0;
- loop254:
- do {
- var alt254=2;
- var LA254_0 = this.input.LA(1);
-
- if ( (LA254_0==CATCH) ) {
- alt254=1;
- }
-
-
- switch (alt254) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:50: k= CATCH p_CatchErrorList p_BlockStatement
- k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_TryCatchStatement17555); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_TryCatchStatement17559);
- p_CatchErrorList770=this.p_CatchErrorList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList770.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_BlockStatement_in_p_TryCatchStatement17561);
- p_BlockStatement771=this.p_BlockStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockStatement771.getTree());
-
-
- break;
-
- default :
- if ( cnt254 >= 1 ) {
- break loop254;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(254, this.input);
- throw eee;
- }
- cnt254++;
- } while (true);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TryCatchHybrid_return: (function() {
- XQueryParser.p_TryCatchHybrid_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TryCatchHybrid_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2180:1: p_TryCatchHybrid[strict] : k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+ ;
- // $ANTLR start "p_TryCatchHybrid"
- p_TryCatchHybrid: function(strict) {
- var retval = new XQueryParser.p_TryCatchHybrid_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_BlockHybrid772 = null;
- var p_CatchErrorList773 = null;
- var p_BlockHybrid774 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:9: (k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:11: k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryCatchHybrid17593); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17597);
- p_BlockHybrid772=this.p_BlockHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockHybrid772.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:55: (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+
- var cnt255=0;
- loop255:
- do {
- var alt255=2;
- var LA255_0 = this.input.LA(1);
-
- if ( (LA255_0==CATCH) ) {
- alt255=1;
- }
-
-
- switch (alt255) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:56: k= CATCH p_CatchErrorList p_BlockHybrid[$strict]
- k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_TryCatchHybrid17603); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_TryCatchHybrid17607);
- p_CatchErrorList773=this.p_CatchErrorList();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList773.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17609);
- p_BlockHybrid774=this.p_BlockHybrid(strict);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockHybrid774.getTree());
-
-
- break;
-
- default :
- if ( cnt255 >= 1 ) {
- break loop255;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(255, this.input);
- throw eee;
- }
- cnt255++;
- } while (true);
-
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_TypeswitchStatement_return: (function() {
- XQueryParser.p_TypeswitchStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_TypeswitchStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2185:1: p_TypeswitchStatement : k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false] ;
- // $ANTLR start "p_TypeswitchStatement"
- p_TypeswitchStatement: function() {
- var retval = new XQueryParser.p_TypeswitchStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var LPAREN775 = null;
- var RPAREN777 = null;
- var v = null;
- var p_Expr776 = null;
- var p_CaseStatement778 = null;
- var p_Hybrid779 = null;
-
- var k_tree=null;
- var d_tree=null;
- var LPAREN775_tree=null;
- var RPAREN777_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:9: (k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:11: k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_p_TypeswitchStatement17642); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN775=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypeswitchStatement17646); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN775_tree = this.adaptor.create(LPAREN775);
- this.adaptor.addChild(root_0, LPAREN775_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TypeswitchStatement17648);
- p_Expr776=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr776.getTree());
- RPAREN777=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypeswitchStatement17651); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN777_tree = this.adaptor.create(RPAREN777);
- this.adaptor.addChild(root_0, RPAREN777_tree);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:71: ( p_CaseStatement )+
- var cnt256=0;
- loop256:
- do {
- var alt256=2;
- var LA256_0 = this.input.LA(1);
-
- if ( (LA256_0==CASE) ) {
- alt256=1;
- }
-
-
- switch (alt256) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:71: p_CaseStatement
- this.pushFollow(XQueryParser.FOLLOW_p_CaseStatement_in_p_TypeswitchStatement17653);
- p_CaseStatement778=this.p_CaseStatement();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CaseStatement778.getTree());
-
-
- break;
-
- default :
- if ( cnt256 >= 1 ) {
- break loop256;
- }
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var eee = new org.antlr.runtime.EarlyExitException(256, this.input);
- throw eee;
- }
- cnt256++;
- } while (true);
-
- k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_TypeswitchStatement17658); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:113: (d= DOLLAR v= p_VarName )?
- var alt257=2;
- var LA257_0 = this.input.LA(1);
-
- if ( (LA257_0==DOLLAR) ) {
- alt257=1;
- }
- switch (alt257) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:114: d= DOLLAR v= p_VarName
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TypeswitchStatement17665); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TypeswitchStatement17669);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
-
-
- break;
-
- }
-
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TypeswitchStatement17677); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_TypeswitchStatement17681);
- p_Hybrid779=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid779.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CaseStatement_return: (function() {
- XQueryParser.p_CaseStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CaseStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2190:1: p_CaseStatement : k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false] ;
- // $ANTLR start "p_CaseStatement"
- p_CaseStatement: function() {
- var retval = new XQueryParser.p_CaseStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var AS780 = null;
- var v = null;
- var p_SequenceType781 = null;
- var p_Hybrid782 = null;
-
- var k_tree=null;
- var d_tree=null;
- var AS780_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:9: (k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:11: k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_CaseStatement17710); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:33: (d= DOLLAR v= p_VarName AS )?
- var alt258=2;
- var LA258_0 = this.input.LA(1);
-
- if ( (LA258_0==DOLLAR) ) {
- alt258=1;
- }
- switch (alt258) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:34: d= DOLLAR v= p_VarName AS
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CaseStatement17717); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CaseStatement17721);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- AS780=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CaseStatement17725); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- AS780_tree = this.adaptor.create(AS780);
- this.adaptor.addChild(root_0, AS780_tree);
- }
-
-
- break;
-
- }
-
- this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_CaseStatement17729);
- p_SequenceType781=this.p_SequenceType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType781.getTree());
- k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_CaseStatement17733); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_CaseStatement17737);
- p_Hybrid782=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid782.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_VarDeclStatement_return: (function() {
- XQueryParser.p_VarDeclStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_VarDeclStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2195:1: p_VarDeclStatement : ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON ;
- // $ANTLR start "p_VarDeclStatement"
- p_VarDeclStatement: function() {
- var retval = new XQueryParser.p_VarDeclStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var e = null;
- var BIND785 = null;
- var COMMA787 = null;
- var BIND789 = null;
- var SEMICOLON791 = null;
- var v = null;
- var w = null;
- var p_Annotation783 = null;
- var p_TypeDeclaration784 = null;
- var p_ExprSingle786 = null;
- var p_TypeDeclaration788 = null;
- var p_ExprSingle790 = null;
-
- var k_tree=null;
- var d_tree=null;
- var e_tree=null;
- var BIND785_tree=null;
- var COMMA787_tree=null;
- var BIND789_tree=null;
- var SEMICOLON791_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:9: ( ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: ( p_Annotation )*
- loop259:
- do {
- var alt259=2;
- var LA259_0 = this.input.LA(1);
-
- if ( (LA259_0==ANN_PERCENT) ) {
- alt259=1;
- }
-
-
- switch (alt259) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: p_Annotation
- this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_VarDeclStatement17764);
- p_Annotation783=this.p_Annotation();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation783.getTree());
-
-
- break;
-
- default :
- break loop259;
- }
- } while (true);
-
- k=this.match(this.input,VARIABLE,XQueryParser.FOLLOW_VARIABLE_in_p_VarDeclStatement17769); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDeclStatement17775); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarDeclStatement17779);
- v=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:98: ( p_TypeDeclaration )?
- var alt260=2;
- var LA260_0 = this.input.LA(1);
-
- if ( (LA260_0==AS) ) {
- alt260=1;
- }
- switch (alt260) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:98: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17783);
- p_TypeDeclaration784=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration784.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:117: ( BIND p_ExprSingle[true] )?
- var alt261=2;
- var LA261_0 = this.input.LA(1);
-
- if ( (LA261_0==BIND) ) {
- alt261=1;
- }
- switch (alt261) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:118: BIND p_ExprSingle[true]
- BIND785=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDeclStatement17787); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND785_tree = this.adaptor.create(BIND785);
- this.adaptor.addChild(root_0, BIND785_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDeclStatement17789);
- p_ExprSingle786=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle786.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:11: ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )*
- loop264:
- do {
- var alt264=2;
- var LA264_0 = this.input.LA(1);
-
- if ( (LA264_0==COMMA) ) {
- alt264=1;
- }
-
-
- switch (alt264) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:12: COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )?
- COMMA787=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_VarDeclStatement17805); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA787_tree = this.adaptor.create(COMMA787);
- this.adaptor.addChild(root_0, COMMA787_tree);
- }
- e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDeclStatement17809); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- e_tree = this.adaptor.create(e);
- this.adaptor.addChild(root_0, e_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarDeclStatement17813);
- w=this.p_VarName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(e, (w?w.stop:null));
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:65: ( p_TypeDeclaration )?
- var alt262=2;
- var LA262_0 = this.input.LA(1);
-
- if ( (LA262_0==AS) ) {
- alt262=1;
- }
- switch (alt262) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:65: p_TypeDeclaration
- this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17817);
- p_TypeDeclaration788=this.p_TypeDeclaration();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration788.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:84: ( BIND p_ExprSingle[true] )?
- var alt263=2;
- var LA263_0 = this.input.LA(1);
-
- if ( (LA263_0==BIND) ) {
- alt263=1;
- }
- switch (alt263) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:85: BIND p_ExprSingle[true]
- BIND789=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDeclStatement17821); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- BIND789_tree = this.adaptor.create(BIND789);
- this.adaptor.addChild(root_0, BIND789_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDeclStatement17823);
- p_ExprSingle790=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle790.getTree());
-
-
- break;
-
- }
-
-
-
- break;
-
- default :
- break loop264;
- }
- } while (true);
-
- SEMICOLON791=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_VarDeclStatement17840); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- SEMICOLON791_tree = this.adaptor.create(SEMICOLON791);
- this.adaptor.addChild(root_0, SEMICOLON791_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_WhileStatement_return: (function() {
- XQueryParser.p_WhileStatement_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_WhileStatement_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2202:1: p_WhileStatement : k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false] ;
- // $ANTLR start "p_WhileStatement"
- p_WhileStatement: function() {
- var retval = new XQueryParser.p_WhileStatement_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var LPAREN792 = null;
- var RPAREN794 = null;
- var p_Expr793 = null;
- var p_Hybrid795 = null;
-
- var k_tree=null;
- var LPAREN792_tree=null;
- var RPAREN794_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2203:9: (k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2203:11: k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,WHILE,XQueryParser.FOLLOW_WHILE_in_p_WhileStatement17868); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- LPAREN792=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_WhileStatement17872); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LPAREN792_tree = this.adaptor.create(LPAREN792);
- this.adaptor.addChild(root_0, LPAREN792_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_WhileStatement17874);
- p_Expr793=this.p_Expr(true, true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr793.getTree());
- RPAREN794=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_WhileStatement17877); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RPAREN794_tree = this.adaptor.create(RPAREN794);
- this.adaptor.addChild(root_0, RPAREN794_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_WhileStatement17879);
- p_Hybrid795=this.p_Hybrid(false, false);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid795.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ExprSimple_return: (function() {
- XQueryParser.p_ExprSimple_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ExprSimple_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2207:1: p_ExprSimple : ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr );
- // $ANTLR start "p_ExprSimple"
- p_ExprSimple: function() {
- var retval = new XQueryParser.p_ExprSimple_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_QuantifiedExpr796 = null;
- var p_OrExpr797 = null;
- var pg_UpdateExpr798 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2208:9: ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr )
- var alt265=3;
- alt265 = this.dfa265.predict(this.input);
- switch (alt265) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2208:11: p_QuantifiedExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_QuantifiedExpr_in_p_ExprSimple17906);
- p_QuantifiedExpr796=this.p_QuantifiedExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QuantifiedExpr796.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2209:11: p_OrExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_OrExpr_in_p_ExprSimple17918);
- p_OrExpr797=this.p_OrExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrExpr797.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2210:11: {...}? => pg_UpdateExpr
- root_0 = this.adaptor.nil();
-
- if ( !((this.lc(XQU))) ) {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- throw new org.antlr.runtime.FailedPredicateException(this.input, "p_ExprSimple", "this.lc(XQU)");
- }
- this.pushFollow(XQueryParser.FOLLOW_pg_UpdateExpr_in_p_ExprSimple17933);
- pg_UpdateExpr798=this.pg_UpdateExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_UpdateExpr798.getTree());
-
-
- break;
-
- }
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_BlockExpr_return: (function() {
- XQueryParser.p_BlockExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_BlockExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2214:1: p_BlockExpr : LBRACKET p_StatementsAndExpr RBRACKET ;
- // $ANTLR start "p_BlockExpr"
- p_BlockExpr: function() {
- var retval = new XQueryParser.p_BlockExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var LBRACKET799 = null;
- var RBRACKET801 = null;
- var p_StatementsAndExpr800 = null;
-
- var LBRACKET799_tree=null;
- var RBRACKET801_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2215:9: ( LBRACKET p_StatementsAndExpr RBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2215:11: LBRACKET p_StatementsAndExpr RBRACKET
- root_0 = this.adaptor.nil();
-
- LBRACKET799=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockExpr17959); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- LBRACKET799_tree = this.adaptor.create(LBRACKET799);
- this.adaptor.addChild(root_0, LBRACKET799_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndExpr_in_p_BlockExpr17961);
- p_StatementsAndExpr800=this.p_StatementsAndExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndExpr800.getTree());
- RBRACKET801=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockExpr17963); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- RBRACKET801_tree = this.adaptor.create(RBRACKET801);
- this.adaptor.addChild(root_0, RBRACKET801_tree);
- }
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CollectionDecl_return: (function() {
- XQueryParser.p_CollectionDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CollectionDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2222:1: p_CollectionDecl : k= COLLECTION p_QName ( p_CollectionTypeDecl )? ;
- // $ANTLR start "p_CollectionDecl"
- p_CollectionDecl: function() {
- var retval = new XQueryParser.p_CollectionDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_QName802 = null;
- var p_CollectionTypeDecl803 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:9: (k= COLLECTION p_QName ( p_CollectionTypeDecl )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:11: k= COLLECTION p_QName ( p_CollectionTypeDecl )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_CollectionDecl17994); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_CollectionDecl17998);
- p_QName802=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName802.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:47: ( p_CollectionTypeDecl )?
- var alt266=2;
- var LA266_0 = this.input.LA(1);
-
- if ( (LA266_0==AS) ) {
- alt266=1;
- }
- switch (alt266) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:47: p_CollectionTypeDecl
- this.pushFollow(XQueryParser.FOLLOW_p_CollectionTypeDecl_in_p_CollectionDecl18000);
- p_CollectionTypeDecl803=this.p_CollectionTypeDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CollectionTypeDecl803.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_CollectionTypeDecl_return: (function() {
- XQueryParser.p_CollectionTypeDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_CollectionTypeDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2226:1: p_CollectionTypeDecl : (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? ) ;
- // $ANTLR start "p_CollectionTypeDecl"
- p_CollectionTypeDecl: function() {
- var retval = new XQueryParser.p_CollectionTypeDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_KindTest804 = null;
- var p_OccurrenceIndicator805 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:9: ( (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:11: (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? )
- root_0 = this.adaptor.nil();
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:11: (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:12: k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )?
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CollectionTypeDecl18029); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_CollectionTypeDecl18033);
- p_KindTest804=this.p_KindTest();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_KindTest804.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:43: ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )?
- var alt267=2;
- var LA267_0 = this.input.LA(1);
-
- if ( ((LA267_0>=QUESTION && LA267_0<=PLUS)) && (this.synpred15_XQueryParser())) {
- alt267=1;
- }
- switch (alt267) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:44: ( p_OccurrenceIndicator )=> p_OccurrenceIndicator
- this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_CollectionTypeDecl18042);
- p_OccurrenceIndicator805=this.p_OccurrenceIndicator();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OccurrenceIndicator805.getTree());
-
-
- break;
-
- }
-
-
-
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexDecl_return: (function() {
- XQueryParser.p_IndexDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2230:1: p_IndexDecl : k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )* ;
- // $ANTLR start "p_IndexDecl"
- p_IndexDecl: function() {
- var retval = new XQueryParser.p_IndexDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var COMMA809 = null;
- var p_IndexName806 = null;
- var p_IndexDomainExpr807 = null;
- var p_IndexKeySpec808 = null;
- var p_IndexKeySpec810 = null;
-
- var k_tree=null;
- var COMMA809_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:9: (k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:11: k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )*
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,INDEX,XQueryParser.FOLLOW_INDEX_in_p_IndexDecl18072); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_IndexName_in_p_IndexDecl18076);
- p_IndexName806=this.p_IndexName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexName806.getTree());
- k=this.match(this.input,ON,XQueryParser.FOLLOW_ON_in_p_IndexDecl18080); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_IndexDecl18086); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_IndexDomainExpr_in_p_IndexDecl18090);
- p_IndexDomainExpr807=this.p_IndexDomainExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexDomainExpr807.getTree());
- k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_IndexDecl18094); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_IndexKeySpec_in_p_IndexDecl18098);
- p_IndexKeySpec808=this.p_IndexKeySpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeySpec808.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:142: ( COMMA p_IndexKeySpec )*
- loop268:
- do {
- var alt268=2;
- var LA268_0 = this.input.LA(1);
-
- if ( (LA268_0==COMMA) ) {
- alt268=1;
- }
-
-
- switch (alt268) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:143: COMMA p_IndexKeySpec
- COMMA809=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_IndexDecl18101); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- COMMA809_tree = this.adaptor.create(COMMA809);
- this.adaptor.addChild(root_0, COMMA809_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_IndexKeySpec_in_p_IndexDecl18103);
- p_IndexKeySpec810=this.p_IndexKeySpec();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeySpec810.getTree());
-
-
- break;
-
- default :
- break loop268;
- }
- } while (true);
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexName_return: (function() {
- XQueryParser.p_IndexName_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexName_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2234:1: p_IndexName : p_QName ;
- // $ANTLR start "p_IndexName"
- p_IndexName: function() {
- var retval = new XQueryParser.p_IndexName_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_QName811 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2235:9: ( p_QName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2235:11: p_QName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_IndexName18130);
- p_QName811=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName811.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexDomainExpr_return: (function() {
- XQueryParser.p_IndexDomainExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexDomainExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2238:1: p_IndexDomainExpr : p_PathExpr ;
- // $ANTLR start "p_IndexDomainExpr"
- p_IndexDomainExpr: function() {
- var retval = new XQueryParser.p_IndexDomainExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_PathExpr812 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2239:9: ( p_PathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2239:11: p_PathExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_IndexDomainExpr18155);
- p_PathExpr812=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr812.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexKeySpec_return: (function() {
- XQueryParser.p_IndexKeySpec_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexKeySpec_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2242:1: p_IndexKeySpec : p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )? ;
- // $ANTLR start "p_IndexKeySpec"
- p_IndexKeySpec: function() {
- var retval = new XQueryParser.p_IndexKeySpec_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_IndexKeyExpr813 = null;
- var p_IndexKeyTypeDecl814 = null;
- var p_IndexKeyCollation815 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:9: ( p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:11: p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )?
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyExpr_in_p_IndexKeySpec18180);
- p_IndexKeyExpr813=this.p_IndexKeyExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyExpr813.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:26: ( p_IndexKeyTypeDecl )?
- var alt269=2;
- var LA269_0 = this.input.LA(1);
-
- if ( (LA269_0==AS) ) {
- alt269=1;
- }
- switch (alt269) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:26: p_IndexKeyTypeDecl
- this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyTypeDecl_in_p_IndexKeySpec18182);
- p_IndexKeyTypeDecl814=this.p_IndexKeyTypeDecl();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyTypeDecl814.getTree());
-
-
- break;
-
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:46: ( p_IndexKeyCollation )?
- var alt270=2;
- var LA270_0 = this.input.LA(1);
-
- if ( (LA270_0==COLLATION) ) {
- alt270=1;
- }
- switch (alt270) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:46: p_IndexKeyCollation
- this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyCollation_in_p_IndexKeySpec18185);
- p_IndexKeyCollation815=this.p_IndexKeyCollation();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyCollation815.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexKeyExpr_return: (function() {
- XQueryParser.p_IndexKeyExpr_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexKeyExpr_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2246:1: p_IndexKeyExpr : p_PathExpr ;
- // $ANTLR start "p_IndexKeyExpr"
- p_IndexKeyExpr: function() {
- var retval = new XQueryParser.p_IndexKeyExpr_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_PathExpr816 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2247:9: ( p_PathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2247:11: p_PathExpr
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_IndexKeyExpr18211);
- p_PathExpr816=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr816.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexKeyTypeDecl_return: (function() {
- XQueryParser.p_IndexKeyTypeDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexKeyTypeDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2250:1: p_IndexKeyTypeDecl : k= AS p_AtomicType ( p_OccurrenceIndicator )? ;
- // $ANTLR start "p_IndexKeyTypeDecl"
- p_IndexKeyTypeDecl: function() {
- var retval = new XQueryParser.p_IndexKeyTypeDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_AtomicType817 = null;
- var p_OccurrenceIndicator818 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:9: (k= AS p_AtomicType ( p_OccurrenceIndicator )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:11: k= AS p_AtomicType ( p_OccurrenceIndicator )?
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_IndexKeyTypeDecl18238); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_AtomicType_in_p_IndexKeyTypeDecl18242);
- p_AtomicType817=this.p_AtomicType();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicType817.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:44: ( p_OccurrenceIndicator )?
- var alt271=2;
- var LA271_0 = this.input.LA(1);
-
- if ( ((LA271_0>=QUESTION && LA271_0<=PLUS)) ) {
- alt271=1;
- }
- switch (alt271) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:44: p_OccurrenceIndicator
- this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_IndexKeyTypeDecl18244);
- p_OccurrenceIndicator818=this.p_OccurrenceIndicator();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OccurrenceIndicator818.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_AtomicType_return: (function() {
- XQueryParser.p_AtomicType_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_AtomicType_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2254:1: p_AtomicType : p_QName ;
- // $ANTLR start "p_AtomicType"
- p_AtomicType: function() {
- var retval = new XQueryParser.p_AtomicType_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var p_QName819 = null;
-
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2255:9: ( p_QName )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2255:11: p_QName
- root_0 = this.adaptor.nil();
-
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_AtomicType18270);
- p_QName819=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName819.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_IndexKeyCollation_return: (function() {
- XQueryParser.p_IndexKeyCollation_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_IndexKeyCollation_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2258:1: p_IndexKeyCollation : k= COLLATION p_StringLiteral ;
- // $ANTLR start "p_IndexKeyCollation"
- p_IndexKeyCollation: function() {
- var retval = new XQueryParser.p_IndexKeyCollation_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_StringLiteral820 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2259:9: (k= COLLATION p_StringLiteral )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2259:11: k= COLLATION p_StringLiteral
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_IndexKeyCollation18297); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_IndexKeyCollation18301);
- p_StringLiteral820=this.p_StringLiteral();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral820.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICDecl_return: (function() {
- XQueryParser.p_ICDecl_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICDecl_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2262:1: p_ICDecl : k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey ) ;
- // $ANTLR start "p_ICDecl"
- p_ICDecl: function() {
- var retval = new XQueryParser.p_ICDecl_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_QName821 = null;
- var p_ICCollection822 = null;
- var p_ICForeignKey823 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:9: (k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:11: k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey )
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,INTEGRITY,XQueryParser.FOLLOW_INTEGRITY_in_p_ICDecl18328); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,CONSTRAINT,XQueryParser.FOLLOW_CONSTRAINT_in_p_ICDecl18334); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICDecl18338);
- p_QName821=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName821.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:74: ( p_ICCollection | p_ICForeignKey )
- var alt272=2;
- var LA272_0 = this.input.LA(1);
-
- if ( (LA272_0==ON) ) {
- alt272=1;
- }
- else if ( (LA272_0==FOREIGN) ) {
- alt272=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 272, 0, this.input);
-
- throw nvae;
- }
- switch (alt272) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:75: p_ICCollection
- this.pushFollow(XQueryParser.FOLLOW_p_ICCollection_in_p_ICDecl18341);
- p_ICCollection822=this.p_ICCollection();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollection822.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:92: p_ICForeignKey
- this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKey_in_p_ICDecl18345);
- p_ICForeignKey823=this.p_ICForeignKey();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKey823.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICCollection_return: (function() {
- XQueryParser.p_ICCollection_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICCollection_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2266:1: p_ICCollection : k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode ) ;
- // $ANTLR start "p_ICCollection"
- p_ICCollection: function() {
- var retval = new XQueryParser.p_ICCollection_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_QName824 = null;
- var p_ICCollSequence825 = null;
- var p_ICCollSequenceUnique826 = null;
- var p_ICCollNode827 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:9: (k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:11: k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode )
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,ON,XQueryParser.FOLLOW_ON_in_p_ICCollection18373); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_ICCollection18379); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollection18383);
- p_QName824=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName824.getTree());
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:67: ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode )
- var alt273=3;
- switch ( this.input.LA(1) ) {
- case DOLLAR:
- alt273=1;
- break;
- case NODE:
- alt273=2;
- break;
- case FOREACH:
- alt273=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return retval;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 273, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt273) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:68: p_ICCollSequence
- this.pushFollow(XQueryParser.FOLLOW_p_ICCollSequence_in_p_ICCollection18386);
- p_ICCollSequence825=this.p_ICCollSequence();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollSequence825.getTree());
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:87: p_ICCollSequenceUnique
- this.pushFollow(XQueryParser.FOLLOW_p_ICCollSequenceUnique_in_p_ICCollection18390);
- p_ICCollSequenceUnique826=this.p_ICCollSequenceUnique();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollSequenceUnique826.getTree());
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:112: p_ICCollNode
- this.pushFollow(XQueryParser.FOLLOW_p_ICCollNode_in_p_ICCollection18394);
- p_ICCollNode827=this.p_ICCollNode();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollNode827.getTree());
-
-
- break;
-
- }
-
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICCollSequence_return: (function() {
- XQueryParser.p_ICCollSequence_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICCollSequence_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2270:1: p_ICCollSequence : d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] ;
- // $ANTLR start "p_ICCollSequence"
- p_ICCollSequence: function() {
- var retval = new XQueryParser.p_ICCollSequence_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var d = null;
- var k = null;
- var v = null;
- var p_ExprSingle828 = null;
-
- var d_tree=null;
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2271:9: (d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2271:11: d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollSequence18422); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollSequence18426);
- v=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollSequence18432); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ICCollSequence18436);
- p_ExprSingle828=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle828.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICCollSequenceUnique_return: (function() {
- XQueryParser.p_ICCollSequenceUnique_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICCollSequenceUnique_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2274:1: p_ICCollSequenceUnique : k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr ;
- // $ANTLR start "p_ICCollSequenceUnique"
- p_ICCollSequenceUnique: function() {
- var retval = new XQueryParser.p_ICCollSequenceUnique_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_PathExpr829 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2275:9: (k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2275:11: k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICCollSequenceUnique18464); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollSequenceUnique18470); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollSequenceUnique18474);
- v=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollSequenceUnique18480); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,UNIQUE,XQueryParser.FOLLOW_UNIQUE_in_p_ICCollSequenceUnique18486); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICCollSequenceUnique18492); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_ICCollSequenceUnique18496);
- p_PathExpr829=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr829.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICCollNode_return: (function() {
- XQueryParser.p_ICCollNode_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICCollNode_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2278:1: p_ICCollNode : k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] ;
- // $ANTLR start "p_ICCollNode"
- p_ICCollNode: function() {
- var retval = new XQueryParser.p_ICCollNode_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_ExprSingle830 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2279:9: (k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2279:11: k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true]
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,FOREACH,XQueryParser.FOLLOW_FOREACH_in_p_ICCollNode18523); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICCollNode18529); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollNode18535); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollNode18539);
- v=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollNode18545); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ICCollNode18549);
- p_ExprSingle830=this.p_ExprSingle(true);
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle830.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICForeignKey_return: (function() {
- XQueryParser.p_ICForeignKey_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICForeignKey_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2282:1: p_ICForeignKey : k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget ;
- // $ANTLR start "p_ICForeignKey"
- p_ICForeignKey: function() {
- var retval = new XQueryParser.p_ICForeignKey_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_ICForeignKeySource831 = null;
- var p_ICForeignKeyTarget832 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2283:9: (k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2283:11: k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,FOREIGN,XQueryParser.FOLLOW_FOREIGN_in_p_ICForeignKey18577); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICForeignKey18583); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeySource_in_p_ICForeignKey18587);
- p_ICForeignKeySource831=this.p_ICForeignKeySource();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeySource831.getTree());
- this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyTarget_in_p_ICForeignKey18589);
- p_ICForeignKeyTarget832=this.p_ICForeignKeyTarget();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyTarget832.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICForeignKeySource_return: (function() {
- XQueryParser.p_ICForeignKeySource_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICForeignKeySource_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2286:1: p_ICForeignKeySource : k= FROM p_ICForeignKeyValues ;
- // $ANTLR start "p_ICForeignKeySource"
- p_ICForeignKeySource: function() {
- var retval = new XQueryParser.p_ICForeignKeySource_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_ICForeignKeyValues833 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2287:9: (k= FROM p_ICForeignKeyValues )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2287:11: k= FROM p_ICForeignKeyValues
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_ICForeignKeySource18616); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeySource18620);
- p_ICForeignKeyValues833=this.p_ICForeignKeyValues();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyValues833.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICForeignKeyTarget_return: (function() {
- XQueryParser.p_ICForeignKeyTarget_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICForeignKeyTarget_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2290:1: p_ICForeignKeyTarget : k= TO p_ICForeignKeyValues ;
- // $ANTLR start "p_ICForeignKeyTarget"
- p_ICForeignKeyTarget: function() {
- var retval = new XQueryParser.p_ICForeignKeyTarget_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var p_ICForeignKeyValues834 = null;
-
- var k_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2291:9: (k= TO p_ICForeignKeyValues )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2291:11: k= TO p_ICForeignKeyValues
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_ICForeignKeyTarget18647); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeyTarget18651);
- p_ICForeignKeyValues834=this.p_ICForeignKeyValues();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyValues834.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // inline static return class
- p_ICForeignKeyValues_return: (function() {
- XQueryParser.p_ICForeignKeyValues_return = function(){};
- org.antlr.lang.extend(XQueryParser.p_ICForeignKeyValues_return,
- org.antlr.runtime.ParserRuleReturnScope,
- {
- getTree: function() { return this.tree; }
- });
- return;
- })(),
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2294:1: p_ICForeignKeyValues : k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr ;
- // $ANTLR start "p_ICForeignKeyValues"
- p_ICForeignKeyValues: function() {
- var retval = new XQueryParser.p_ICForeignKeyValues_return();
- retval.start = this.input.LT(1);
-
- var root_0 = null;
-
- var k = null;
- var d = null;
- var v = null;
- var p_QName835 = null;
- var p_PathExpr836 = null;
-
- var k_tree=null;
- var d_tree=null;
-
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2295:9: (k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2295:11: k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr
- root_0 = this.adaptor.nil();
-
- k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_ICForeignKeyValues18678); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICForeignKeyValues18682);
- p_QName835=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName835.getTree());
- k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICForeignKeyValues18686); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICForeignKeyValues18692); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- d_tree = this.adaptor.create(d);
- this.adaptor.addChild(root_0, d_tree);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICForeignKeyValues18696);
- v=this.p_QName();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
- if ( this.state.backtracking===0 ) {
- this.av(d, (v?v.stop:null));
- }
- k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICForeignKeyValues18702); if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) {
- k_tree = this.adaptor.create(k);
- this.adaptor.addChild(root_0, k_tree);
- }
- if ( this.state.backtracking===0 ) {
- this.ak(k);
- }
- this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_ICForeignKeyValues18706);
- p_PathExpr836=this.p_PathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return retval;
- if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr836.getTree());
-
-
-
- retval.stop = this.input.LT(-1);
-
- if ( this.state.backtracking===0 ) {
-
- retval.tree = this.adaptor.rulePostProcessing(root_0);
- this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
- }
- }
- catch (re) {
- if (re instanceof org.antlr.runtime.RecognitionException) {
- this.reportError(re);
- this.recover(this.input,re);
- retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
- } else {
- throw re;
- }
- }
- finally {
- }
- return retval;
- },
-
- // $ANTLR start "synpred1_XQueryParser"
- synpred1_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:11: ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )
- var alt274=2;
- var LA274_0 = this.input.LA(1);
-
- if ( (LA274_0==FOR) ) {
- var LA274_1 = this.input.LA(2);
-
- if ( (LA274_1==DOLLAR) ) {
- alt274=1;
- }
- else if ( (LA274_1==SLIDING||LA274_1==TUMBLING) ) {
- alt274=2;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 274, 1, this.input);
-
- throw nvae;
- }
- }
- else if ( (LA274_0==LET) ) {
- alt274=1;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 274, 0, this.input);
-
- throw nvae;
- }
- switch (alt274) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:12: ( ( FOR | LET ) DOLLAR )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:12: ( ( FOR | LET ) DOLLAR )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:13: ( FOR | LET ) DOLLAR
- if ( this.input.LA(1)==FOR||this.input.LA(1)==LET ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
- this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_synpred1_XQueryParser3539); if (this.state.failed) return ;
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:35: ( FOR ( TUMBLING | SLIDING ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:35: ( FOR ( TUMBLING | SLIDING ) )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:36: FOR ( TUMBLING | SLIDING )
- this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_synpred1_XQueryParser3545); if (this.state.failed) return ;
- if ( this.input.LA(1)==SLIDING||this.input.LA(1)==TUMBLING ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
-
-
-
- break;
-
- }},
- // $ANTLR end "synpred1_XQueryParser",
-
- // $ANTLR start "synpred2_XQueryParser"
- synpred2_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:11: ( IF LPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:12: IF LPAREN
- this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_synpred2_XQueryParser3573); if (this.state.failed) return ;
- this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred2_XQueryParser3575); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred2_XQueryParser",
-
- // $ANTLR start "synpred3_XQueryParser"
- synpred3_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:11: ( SWITCH LPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:12: SWITCH LPAREN
- this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_synpred3_XQueryParser3603); if (this.state.failed) return ;
- this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred3_XQueryParser3605); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred3_XQueryParser",
-
- // $ANTLR start "synpred4_XQueryParser"
- synpred4_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:11: ( TYPESWITCH LPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:12: TYPESWITCH LPAREN
- this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_synpred4_XQueryParser3629); if (this.state.failed) return ;
- this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred4_XQueryParser3631); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred4_XQueryParser",
-
- // $ANTLR start "synpred5_XQueryParser"
- synpred5_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:11: ( TRY LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:12: TRY LBRACKET
- this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_synpred5_XQueryParser3651); if (this.state.failed) return ;
- this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred5_XQueryParser3653); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred5_XQueryParser",
-
- // $ANTLR start "synpred6_XQueryParser"
- synpred6_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:11: ( VALIDATE ( p_ValidationMode | TYPE )? )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:12: VALIDATE ( p_ValidationMode | TYPE )?
- this.match(this.input,VALIDATE,XQueryParser.FOLLOW_VALIDATE_in_synpred6_XQueryParser6204); if (this.state.failed) return ;
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:21: ( p_ValidationMode | TYPE )?
- var alt275=3;
- var LA275_0 = this.input.LA(1);
-
- if ( (LA275_0==LAX||LA275_0==STRICT) ) {
- alt275=1;
- }
- else if ( (LA275_0==TYPE) ) {
- alt275=2;
- }
- switch (alt275) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:23: p_ValidationMode
- this.pushFollow(XQueryParser.FOLLOW_p_ValidationMode_in_synpred6_XQueryParser6208);
- this.p_ValidationMode();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:42: TYPE
- this.match(this.input,TYPE,XQueryParser.FOLLOW_TYPE_in_synpred6_XQueryParser6212); if (this.state.failed) return ;
-
-
- break;
-
- }
-
-
-
- },
- // $ANTLR end "synpred6_XQueryParser",
-
- // $ANTLR start "synpred7_XQueryParser"
- synpred7_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:11: ( SLASH p_RelativePathExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:12: SLASH p_RelativePathExpr
- this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_synpred7_XQueryParser6600); if (this.state.failed) return ;
- this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_synpred7_XQueryParser6602);
- this.p_RelativePathExpr();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred7_XQueryParser",
-
- // $ANTLR start "synpred8_XQueryParser"
- synpred8_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:11: ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
- if ( this.input.LA(1)==LPAREN||this.input.LA(1)==DOLLAR||this.input.LA(1)==LBRACKET||this.input.LA(1)==SMALLER||(this.input.LA(1)>=APOS && this.input.LA(1)<=QUOT) ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
-
-
- },
- // $ANTLR end "synpred8_XQueryParser",
-
- // $ANTLR start "synpred9_XQueryParser"
- synpred9_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:927:11: ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )
- var alt278=3;
- switch ( this.input.LA(1) ) {
- case ATTRIBUTE:
- case ELEMENT:
- alt278=1;
- break;
- case NAMESPACE:
- case PROCESSING_INSTRUCTION:
- alt278=2;
- break;
- case COMMENT:
- case DOCUMENT:
- case TEXT:
- alt278=3;
- break;
- default:
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 278, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt278) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:13: ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:13: ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:14: ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET
- if ( this.input.LA(1)==ATTRIBUTE||this.input.LA(1)==ELEMENT ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:36: ( p_EQName )?
- var alt276=2;
- var LA276_0 = this.input.LA(1);
-
- if ( ((LA276_0>=ANCESTOR && LA276_0<=SKIP)||(LA276_0>=VALUE && LA276_0<=QUOT_ER)||LA276_0==Q||LA276_0==L_NCName) ) {
- alt276=1;
- }
- switch (alt276) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:36: p_EQName
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_synpred9_XQueryParser6777);
- this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- break;
-
- }
-
- this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6780); if (this.state.failed) return ;
-
-
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:13: ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:13: ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:14: ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET
- if ( this.input.LA(1)==NAMESPACE||this.input.LA(1)==PROCESSING_INSTRUCTION ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:51: ( p_NCName )?
- var alt277=2;
- var LA277_0 = this.input.LA(1);
-
- if ( ((LA277_0>=ANCESTOR && LA277_0<=SKIP)||(LA277_0>=VALUE && LA277_0<=QUOT_ER)||LA277_0==L_NCName) ) {
- alt277=1;
- }
- switch (alt277) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:51: p_NCName
- this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_synpred9_XQueryParser6806);
- this.p_NCName();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- break;
-
- }
-
- this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6809); if (this.state.failed) return ;
-
-
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:13: ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:13: ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:14: ( DOCUMENT | TEXT | COMMENT ) LBRACKET
- if ( this.input.LA(1)==COMMENT||this.input.LA(1)==DOCUMENT||this.input.LA(1)==TEXT ) {
- this.input.consume();
- this.state.errorRecovery=false;this.state.failed=false;
- }
- else {
- if (this.state.backtracking>0) {this.state.failed=true; return ;}
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- throw mse;
- }
-
- this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6839); if (this.state.failed) return ;
-
-
-
-
-
- break;
-
- }},
- // $ANTLR end "synpred9_XQueryParser",
-
- // $ANTLR start "synpred10_XQueryParser"
- synpred10_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:11: ( p_KindTest )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:12: p_KindTest
- this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_synpred10_XQueryParser6869);
- this.p_KindTest();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred10_XQueryParser",
-
- // $ANTLR start "synpred11_XQueryParser"
- synpred11_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:11: ( p_EQName LPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:12: p_EQName LPAREN
- this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_synpred11_XQueryParser6888);
- this.p_EQName();
-
- this.state._fsp--;
- if (this.state.failed) return ;
- this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred11_XQueryParser6890); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred11_XQueryParser",
-
- // $ANTLR start "synpred12_XQueryParser"
- synpred12_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:11: ( p_PrimaryExpr )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:12: p_PrimaryExpr
- this.pushFollow(XQueryParser.FOLLOW_p_PrimaryExpr_in_synpred12_XQueryParser6908);
- this.p_PrimaryExpr();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred12_XQueryParser",
-
- // $ANTLR start "synpred13_XQueryParser"
- synpred13_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:11: ( LPAREN )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:12: LPAREN
- this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred13_XQueryParser7593); if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred13_XQueryParser",
-
- // $ANTLR start "synpred14_XQueryParser"
- synpred14_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:26: ( p_OccurrenceIndicator )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:27: p_OccurrenceIndicator
- this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_synpred14_XQueryParser9871);
- this.p_OccurrenceIndicator();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred14_XQueryParser",
-
- // $ANTLR start "synpred15_XQueryParser"
- synpred15_XQueryParser_fragment: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:44: ( p_OccurrenceIndicator )
- // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:45: p_OccurrenceIndicator
- this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_synpred15_XQueryParser18037);
- this.p_OccurrenceIndicator();
-
- this.state._fsp--;
- if (this.state.failed) return ;
-
-
- },
- // $ANTLR end "synpred15_XQueryParser"
-
- // Delegated rules
-
-
-
- synpred3_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred3_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred15_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred15_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred7_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred7_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred9_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred9_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred10_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred10_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred5_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred5_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred12_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred12_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred14_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred14_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred6_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred6_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred8_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred8_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred4_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred4_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred11_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred11_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred13_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred13_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred1_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred1_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- },
- synpred2_XQueryParser: function() {
- this.state.backtracking++;
- var start = this.input.mark();
- try {
- this.synpred2_XQueryParser_fragment(); // can never throw exception
- } catch (re) {
- alert("impossible: "+re.toString());
- }
- var success = !this.state.failed;
- this.input.rewind(start);
- this.state.backtracking--;
- this.state.failed=false;
- return success;
- }
-
-}, true); // important to pass true to overwrite default implementations
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA1_eotS:
- "\u000a\uffff",
- DFA1_eofS:
- "\u0001\u0005\u0001\u0009\u0008\uffff",
- DFA1_minS:
- "\u0001\u0010\u0001\u0012\u0008\uffff",
- DFA1_maxS:
- "\u0001\u0122\u0001\u0107\u0008\uffff",
- DFA1_acceptS:
- "\u0002\uffff\u0004\u0002\u0001\u0001\u0003\u0002",
- DFA1_specialS:
- "\u0001\u0000\u0001\u0001\u0008\uffff}>",
- DFA1_transitionS: [
- "\u0002\u0002\u0004\u0004\u0001\u0002\u0006\u0004\u0001\u0002"+
- "\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002\u0001\u0004"+
- "\u0002\u0002\u0002\u0004\u0003\u0002\u0005\u0004\u0001\u0002"+
- "\u0002\u0004\u0003\u0002\u0005\u0004\u0002\u0002\u0009\u0004"+
- "\u0001\u0002\u0002\u0004\u0002\u0002\u0003\u0004\u0001\u0002"+
- "\u0005\u0004\u0001\u0002\u0001\u0004\u0003\u0002\u0001\u0004"+
- "\u0001\u0002\u0007\u0004\u0004\u0002\u0003\u0004\u0001\u0002"+
- "\u0003\u0004\u0001\u0002\u0001\u0004\u0003\u0002\u0002\u0004"+
- "\u0001\u0001\u000c\u0004\u0001\u0002\u0009\u0004\u0002\u0002"+
- "\u0007\u0004\u0002\u0002\u0001\u0004\u0001\u0002\u0002\u0004"+
- "\u0001\u0002\u0003\u0004\u0002\u0002\u0002\u0004\u0001\u0002"+
- "\u002c\u0004\u0003\u0002\u0002\u0004\u0001\u0002\u000d\u0004"+
- "\u0001\uffff\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff"+
- "\u0001\u0002\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003"+
- "\u0004\uffff\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff"+
- "\u0002\u0002\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002"+
- "\u0002\uffff\u0001\u0004\u0006\uffff\u0006\u0002",
- "\u0001\u0007\u0008\uffff\u0002\u0007\u000a\uffff\u0001\u0007"+
- "\u0006\uffff\u0001\u0006\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0005\uffff\u0001\u0007\u0001\uffff\u0002\u0007\u0004\uffff"+
- "\u0003\u0007\u0002\uffff\u0001\u0007\u0002\uffff\u0002\u0007"+
- "\u0002\uffff\u0001\u0007\u0006\uffff\u0001\u0007\u0018\uffff"+
- "\u0002\u0007\u0001\uffff\u0001\u0007\u0003\uffff\u0001\u0006"+
- "\u0034\uffff\u0001\u0007\u003a\uffff\u0002\u0007\u0006\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff\u0001\u0008"+
- "\u0001\u0007",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA1_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_eotS),
- DFA1_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_eofS),
- DFA1_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA1_minS),
- DFA1_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA1_maxS),
- DFA1_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_acceptS),
- DFA1_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_specialS),
- DFA1_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA1_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA1 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 1;
- this.eot = XQueryParser.DFA1_eot;
- this.eof = XQueryParser.DFA1_eof;
- this.min = XQueryParser.DFA1_min;
- this.max = XQueryParser.DFA1_max;
- this.accept = XQueryParser.DFA1_accept;
- this.special = XQueryParser.DFA1_special;
- this.transition = XQueryParser.DFA1_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA1, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "293:13: (vd= p_VersionDecl )?";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA1_0 = input.LA(1);
-
-
- var index1_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA1_0==XQUERY) ) {s = 1;}
-
- else if ( ((LA1_0>=ANCESTOR && LA1_0<=ANCESTOR_OR_SELF)||LA1_0==ATTRIBUTE||LA1_0==CHILD||LA1_0==COMMENT||LA1_0==DECLARE||(LA1_0>=DESCENDANT && LA1_0<=DESCENDANT_OR_SELF)||(LA1_0>=DOCUMENT && LA1_0<=ELEMENT)||LA1_0==EVERY||(LA1_0>=FOLLOWING && LA1_0<=FOR)||(LA1_0>=IF && LA1_0<=IMPORT)||LA1_0==LET||(LA1_0>=MODULE && LA1_0<=NAMESPACE)||LA1_0==NODE||LA1_0==ORDERED||(LA1_0>=PARENT && LA1_0<=PRECEDING_SIBLING)||LA1_0==PROCESSING_INSTRUCTION||(LA1_0>=SCHEMA_ATTRIBUTE && LA1_0<=SOME)||LA1_0==TEXT||LA1_0==TYPESWITCH||(LA1_0>=UNORDERED && LA1_0<=VARIABLE)||LA1_0==NAMESPACE_NODE||(LA1_0>=SWITCH && LA1_0<=TRY)||(LA1_0>=COPY && LA1_0<=DELETE)||LA1_0==INSERT||LA1_0==APPEND||(LA1_0>=RENAME && LA1_0<=REPLACE)||LA1_0==UPDATING||(LA1_0>=BREAK && LA1_0<=EXIT)||LA1_0==WHILE||LA1_0==LPAREN||(LA1_0>=DOLLAR && LA1_0<=L_UNION_BRACKET)||LA1_0==LBRACKET||LA1_0==LSQUARE||(LA1_0>=STAR && LA1_0<=SMALLER)||(LA1_0>=SLASH && LA1_0<=SLASH_SLASH)||(LA1_0>=DOT && LA1_0<=DOT_DOT)||(LA1_0>=ATTR_SIGN && LA1_0<=Q)||(LA1_0>=APOS && LA1_0<=QUOT)||(LA1_0>=L_Pragma && LA1_0<=L_DoubleLiteral)) ) {s = 2;}
-
- else if ( (LA1_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}
-
- else if ( ((LA1_0>=AND && LA1_0<=AT)||(LA1_0>=BASE_URI && LA1_0<=CASTABLE)||LA1_0==COLLATION||(LA1_0>=CONSTRUCTION && LA1_0<=COPY_NAMESPACES)||LA1_0==DEFAULT||(LA1_0>=DESCENDING && LA1_0<=DIV)||(LA1_0>=ELSE && LA1_0<=EQ)||(LA1_0>=EXCEPT && LA1_0<=EXTERNAL)||(LA1_0>=FUNCTION && LA1_0<=IDIV)||(LA1_0>=IN && LA1_0<=LEAST)||(LA1_0>=LT && LA1_0<=MOD)||(LA1_0>=NE && LA1_0<=NO_PRESERVE)||(LA1_0>=JSON && LA1_0<=ORDER)||LA1_0==ORDERING||LA1_0==PRESERVE||(LA1_0>=STRUCTURED_ITEM && LA1_0<=SCHEMA)||(LA1_0>=STABLE && LA1_0<=STRIP)||(LA1_0>=THEN && LA1_0<=TREAT)||LA1_0==UNION||(LA1_0>=VERSION && LA1_0<=WHERE)||(LA1_0>=ALLOWING && LA1_0<=MINUS_SIGN)||(LA1_0>=NAN && LA1_0<=START)||(LA1_0>=TUMBLING && LA1_0<=BEFORE)||LA1_0==FIRST||(LA1_0>=INTO && LA1_0<=POSITION)||(LA1_0>=LAST && LA1_0<=NODES)||(LA1_0>=REVALIDATION && LA1_0<=SKIP)||(LA1_0>=VALUE && LA1_0<=WORDS)||(LA1_0>=LOOP && LA1_0<=RETURNING)||(LA1_0>=CHECK && LA1_0<=QUOT_ER)||LA1_0==L_NCName) ) {s = 4;}
-
- else if ( (LA1_0==EOF) && ((this.lc(XQS)))) {s = 5;}
-
-
- input.seek(index1_0);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA1_1 = input.LA(1);
-
-
- var index1_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA1_1==ENCODING||LA1_1==VERSION) ) {s = 6;}
-
- else if ( (LA1_1==AND||(LA1_1>=CAST && LA1_1<=CASTABLE)||LA1_1==DIV||LA1_1==EQ||LA1_1==EXCEPT||LA1_1==GE||(LA1_1>=GT && LA1_1<=IDIV)||(LA1_1>=INSTANCE && LA1_1<=IS)||LA1_1==LE||(LA1_1>=LT && LA1_1<=MOD)||LA1_1==NE||LA1_1==OR||(LA1_1>=TO && LA1_1<=TREAT)||LA1_1==UNION||LA1_1==CONTAINS||(LA1_1>=CONCAT && LA1_1<=LPAREN)||LA1_1==LSQUARE||LA1_1==EQUAL||LA1_1==NOTEQUAL||LA1_1==HASH||LA1_1==COMMA||(LA1_1>=STAR && LA1_1<=BANG)||LA1_1==COLON||LA1_1==VBAR) ) {s = 7;}
-
- else if ( (LA1_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}
-
- else if ( (LA1_1==EOF) ) {s = 9;}
-
-
- input.seek(index1_1);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 1, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA2_eotS:
- "\u000a\uffff",
- DFA2_eofS:
- "\u0001\u0005\u0001\u0009\u0008\uffff",
- DFA2_minS:
- "\u0001\u0010\u0001\u0012\u0008\uffff",
- DFA2_maxS:
- "\u0001\u0122\u0001\u0107\u0008\uffff",
- DFA2_acceptS:
- "\u0002\uffff\u0004\u0002\u0001\u0001\u0003\u0002",
- DFA2_specialS:
- "\u0001\u0001\u0001\u0000\u0008\uffff}>",
- DFA2_transitionS: [
- "\u0002\u0002\u0004\u0004\u0001\u0002\u0006\u0004\u0001\u0002"+
- "\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002\u0001\u0004"+
- "\u0002\u0002\u0002\u0004\u0003\u0002\u0005\u0004\u0001\u0002"+
- "\u0002\u0004\u0003\u0002\u0005\u0004\u0002\u0002\u0009\u0004"+
- "\u0001\u0002\u0002\u0004\u0001\u0001\u0001\u0002\u0003\u0004"+
- "\u0001\u0002\u0005\u0004\u0001\u0002\u0001\u0004\u0003\u0002"+
- "\u0001\u0004\u0001\u0002\u0007\u0004\u0004\u0002\u0003\u0004"+
- "\u0001\u0002\u0003\u0004\u0001\u0002\u0001\u0004\u0003\u0002"+
- "\u000f\u0004\u0001\u0002\u0009\u0004\u0002\u0002\u0007\u0004"+
- "\u0002\u0002\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002"+
- "\u0003\u0004\u0002\u0002\u0002\u0004\u0001\u0002\u002c\u0004"+
- "\u0003\u0002\u0002\u0004\u0001\u0002\u000d\u0004\u0001\uffff"+
- "\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff\u0001\u0002"+
- "\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003\u0004\uffff"+
- "\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff\u0002\u0002"+
- "\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002\u0002\uffff"+
- "\u0001\u0004\u0006\uffff\u0006\u0002",
- "\u0001\u0007\u0008\uffff\u0002\u0007\u000a\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0005\uffff"+
- "\u0001\u0007\u0001\uffff\u0002\u0007\u0004\uffff\u0003\u0007"+
- "\u0002\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0001\uffff"+
- "\u0001\u0006\u0001\u0007\u0006\uffff\u0001\u0007\u0018\uffff"+
- "\u0002\u0007\u0001\uffff\u0001\u0007\u0038\uffff\u0001\u0007"+
- "\u003a\uffff\u0002\u0007\u0006\uffff\u0001\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007\u0002\uffff"+
- "\u0001\u0007\u0003\uffff\u0001\u0008\u0001\u0007",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA2_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_eotS),
- DFA2_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_eofS),
- DFA2_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA2_minS),
- DFA2_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA2_maxS),
- DFA2_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_acceptS),
- DFA2_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_specialS),
- DFA2_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA2_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA2 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 2;
- this.eot = XQueryParser.DFA2_eot;
- this.eof = XQueryParser.DFA2_eof;
- this.min = XQueryParser.DFA2_min;
- this.max = XQueryParser.DFA2_max;
- this.accept = XQueryParser.DFA2_accept;
- this.special = XQueryParser.DFA2_special;
- this.transition = XQueryParser.DFA2_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA2, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "294:13: (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->)";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA2_1 = input.LA(1);
-
-
- var index2_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA2_1==NAMESPACE) ) {s = 6;}
-
- else if ( (LA2_1==AND||(LA2_1>=CAST && LA2_1<=CASTABLE)||LA2_1==DIV||LA2_1==EQ||LA2_1==EXCEPT||LA2_1==GE||(LA2_1>=GT && LA2_1<=IDIV)||(LA2_1>=INSTANCE && LA2_1<=IS)||LA2_1==LE||(LA2_1>=LT && LA2_1<=MOD)||LA2_1==NE||LA2_1==OR||(LA2_1>=TO && LA2_1<=TREAT)||LA2_1==UNION||LA2_1==CONTAINS||(LA2_1>=CONCAT && LA2_1<=LPAREN)||LA2_1==LSQUARE||LA2_1==EQUAL||LA2_1==NOTEQUAL||LA2_1==HASH||LA2_1==COMMA||(LA2_1>=STAR && LA2_1<=BANG)||LA2_1==COLON||LA2_1==VBAR) ) {s = 7;}
-
- else if ( (LA2_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}
-
- else if ( (LA2_1==EOF) ) {s = 9;}
-
-
- input.seek(index2_1);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA2_0 = input.LA(1);
-
-
- var index2_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA2_0==MODULE) ) {s = 1;}
-
- else if ( ((LA2_0>=ANCESTOR && LA2_0<=ANCESTOR_OR_SELF)||LA2_0==ATTRIBUTE||LA2_0==CHILD||LA2_0==COMMENT||LA2_0==DECLARE||(LA2_0>=DESCENDANT && LA2_0<=DESCENDANT_OR_SELF)||(LA2_0>=DOCUMENT && LA2_0<=ELEMENT)||LA2_0==EVERY||(LA2_0>=FOLLOWING && LA2_0<=FOR)||(LA2_0>=IF && LA2_0<=IMPORT)||LA2_0==LET||LA2_0==NAMESPACE||LA2_0==NODE||LA2_0==ORDERED||(LA2_0>=PARENT && LA2_0<=PRECEDING_SIBLING)||LA2_0==PROCESSING_INSTRUCTION||(LA2_0>=SCHEMA_ATTRIBUTE && LA2_0<=SOME)||LA2_0==TEXT||LA2_0==TYPESWITCH||(LA2_0>=UNORDERED && LA2_0<=VARIABLE)||LA2_0==NAMESPACE_NODE||(LA2_0>=SWITCH && LA2_0<=TRY)||(LA2_0>=COPY && LA2_0<=DELETE)||LA2_0==INSERT||LA2_0==APPEND||(LA2_0>=RENAME && LA2_0<=REPLACE)||LA2_0==UPDATING||(LA2_0>=BREAK && LA2_0<=EXIT)||LA2_0==WHILE||LA2_0==LPAREN||(LA2_0>=DOLLAR && LA2_0<=L_UNION_BRACKET)||LA2_0==LBRACKET||LA2_0==LSQUARE||(LA2_0>=STAR && LA2_0<=SMALLER)||(LA2_0>=SLASH && LA2_0<=SLASH_SLASH)||(LA2_0>=DOT && LA2_0<=DOT_DOT)||(LA2_0>=ATTR_SIGN && LA2_0<=Q)||(LA2_0>=APOS && LA2_0<=QUOT)||(LA2_0>=L_Pragma && LA2_0<=L_DoubleLiteral)) ) {s = 2;}
-
- else if ( (LA2_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}
-
- else if ( ((LA2_0>=AND && LA2_0<=AT)||(LA2_0>=BASE_URI && LA2_0<=CASTABLE)||LA2_0==COLLATION||(LA2_0>=CONSTRUCTION && LA2_0<=COPY_NAMESPACES)||LA2_0==DEFAULT||(LA2_0>=DESCENDING && LA2_0<=DIV)||(LA2_0>=ELSE && LA2_0<=EQ)||(LA2_0>=EXCEPT && LA2_0<=EXTERNAL)||(LA2_0>=FUNCTION && LA2_0<=IDIV)||(LA2_0>=IN && LA2_0<=LEAST)||(LA2_0>=LT && LA2_0<=MOD)||(LA2_0>=NE && LA2_0<=NO_PRESERVE)||(LA2_0>=JSON && LA2_0<=ORDER)||LA2_0==ORDERING||LA2_0==PRESERVE||(LA2_0>=STRUCTURED_ITEM && LA2_0<=SCHEMA)||(LA2_0>=STABLE && LA2_0<=STRIP)||(LA2_0>=THEN && LA2_0<=TREAT)||LA2_0==UNION||(LA2_0>=VERSION && LA2_0<=MINUS_SIGN)||(LA2_0>=NAN && LA2_0<=START)||(LA2_0>=TUMBLING && LA2_0<=BEFORE)||LA2_0==FIRST||(LA2_0>=INTO && LA2_0<=POSITION)||(LA2_0>=LAST && LA2_0<=NODES)||(LA2_0>=REVALIDATION && LA2_0<=SKIP)||(LA2_0>=VALUE && LA2_0<=WORDS)||(LA2_0>=LOOP && LA2_0<=RETURNING)||(LA2_0>=CHECK && LA2_0<=QUOT_ER)||LA2_0==L_NCName) ) {s = 4;}
-
- else if ( (LA2_0==EOF) && ((this.lc(XQS)))) {s = 5;}
-
-
- input.seek(index2_0);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 2, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA6_eotS:
- "\u000a\uffff",
- DFA6_eofS:
- "\u0001\u0005\u0001\u0009\u0002\uffff\u0001\u0009\u0005\uffff",
- DFA6_minS:
- "\u0001\u0010\u0001\u0012\u0002\uffff\u0001\u0012\u0005\uffff",
- DFA6_maxS:
- "\u0001\u0122\u0001\u0107\u0002\uffff\u0001\u0107\u0005\uffff",
- DFA6_acceptS:
- "\u0002\uffff\u0002\u0002\u0001\uffff\u0001\u0002\u0002\u0001\u0002"+
- "\u0002",
- DFA6_specialS:
- "\u0001\u0000\u0001\u0002\u0002\uffff\u0001\u0001\u0005\uffff}>",
- DFA6_transitionS: [
- "\u0002\u0002\u0004\u0005\u0001\u0002\u0006\u0005\u0001\u0002"+
- "\u0001\u0005\u0001\u0002\u0002\u0005\u0001\u0001\u0001\u0005"+
- "\u0002\u0002\u0002\u0005\u0003\u0002\u0005\u0005\u0001\u0002"+
- "\u0002\u0005\u0003\u0002\u0005\u0005\u0001\u0002\u0001\u0004"+
- "\u0009\u0005\u0001\u0002\u0003\u0005\u0001\u0002\u0003\u0005"+
- "\u0001\u0002\u0005\u0005\u0001\u0002\u0001\u0005\u0003\u0002"+
- "\u0001\u0005\u0001\u0002\u0007\u0005\u0004\u0002\u0003\u0005"+
- "\u0001\u0002\u0003\u0005\u0001\u0002\u0001\u0005\u0003\u0002"+
- "\u000f\u0005\u0001\u0002\u0009\u0005\u0002\u0002\u0007\u0005"+
- "\u0002\u0002\u0001\u0005\u0001\u0002\u0002\u0005\u0001\u0002"+
- "\u0003\u0005\u0002\u0002\u0002\u0005\u0001\u0002\u002c\u0005"+
- "\u0003\u0002\u0002\u0005\u0001\u0002\u000d\u0005\u0001\uffff"+
- "\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff\u0001\u0002"+
- "\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003\u0004\uffff"+
- "\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff\u0002\u0002"+
- "\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002\u0002\uffff"+
- "\u0001\u0005\u0006\uffff\u0006\u0002",
- "\u0001\u0005\u0004\uffff\u0002\u0007\u0002\uffff\u0002\u0005"+
- "\u0003\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0003\uffff"+
- "\u0001\u0005\u0007\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
- "\u0004\uffff\u0002\u0005\u0001\uffff\u0002\u0005\u0004\uffff"+
- "\u0003\u0005\u0002\uffff\u0001\u0005\u0002\uffff\u0002\u0005"+
- "\u0001\uffff\u0001\u0007\u0001\u0005\u0005\uffff\u0002\u0005"+
- "\u0002\uffff\u0001\u0007\u0015\uffff\u0002\u0005\u0001\uffff"+
- "\u0001\u0005\u0002\uffff\u0001\u0005\u0005\uffff\u0001\u0005"+
- "\u0001\uffff\u0001\u0007\u0026\uffff\u0001\u0006\u0001\uffff"+
- "\u0001\u0005\u0004\uffff\u0001\u0005\u0007\uffff\u0001\u0007"+
- "\u0026\uffff\u0001\u0005\u0003\uffff\u0002\u0005\u0006\uffff"+
- "\u0002\u0005\u0006\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
- "\u0001\uffff\u0003\u0005\u0001\uffff\u0001\u0005\u0001\uffff"+
- "\u000c\u0005\u0002\uffff\u0001\u0005\u0003\uffff\u0001\u0008"+
- "\u0001\u0005",
- "",
- "",
- "\u0001\u0009\u0008\uffff\u0002\u0009\u000a\uffff\u0001\u0009"+
- "\u0007\uffff\u0001\u0009\u0001\uffff\u0001\u0009\u0005\uffff"+
- "\u0001\u0009\u0001\uffff\u0002\u0009\u0004\uffff\u0003\u0009"+
- "\u0002\uffff\u0001\u0009\u0002\uffff\u0002\u0009\u0001\u0007"+
- "\u0001\uffff\u0001\u0009\u0006\uffff\u0001\u0009\u000e\uffff"+
- "\u0001\u0007\u0009\uffff\u0002\u0009\u0001\uffff\u0001\u0009"+
- "\u0038\uffff\u0001\u0009\u003a\uffff\u0002\u0009\u0006\uffff"+
- "\u0001\u0009\u0001\uffff\u0001\u0009\u0001\uffff\u0001\u0009"+
- "\u0001\uffff\u0001\u0009\u0001\uffff\u0001\u0009\u0001\uffff"+
- "\u000c\u0009\u0002\uffff\u0001\u0009\u0003\uffff\u0001\u0008"+
- "\u0001\u0009",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA6_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_eotS),
- DFA6_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_eofS),
- DFA6_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA6_minS),
- DFA6_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA6_maxS),
- DFA6_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_acceptS),
- DFA6_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_specialS),
- DFA6_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA6_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA6 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 6;
- this.eot = XQueryParser.DFA6_eot;
- this.eof = XQueryParser.DFA6_eof;
- this.min = XQueryParser.DFA6_min;
- this.max = XQueryParser.DFA6_max;
- this.accept = XQueryParser.DFA6_accept;
- this.special = XQueryParser.DFA6_special;
- this.transition = XQueryParser.DFA6_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA6, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "()* loopback of 329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )*";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA6_0 = input.LA(1);
-
-
- var index6_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA6_0==DECLARE) ) {s = 1;}
-
- else if ( ((LA6_0>=ANCESTOR && LA6_0<=ANCESTOR_OR_SELF)||LA6_0==ATTRIBUTE||LA6_0==CHILD||LA6_0==COMMENT||(LA6_0>=DESCENDANT && LA6_0<=DESCENDANT_OR_SELF)||(LA6_0>=DOCUMENT && LA6_0<=ELEMENT)||LA6_0==EVERY||(LA6_0>=FOLLOWING && LA6_0<=FOR)||LA6_0==IF||LA6_0==LET||LA6_0==NAMESPACE||LA6_0==NODE||LA6_0==ORDERED||(LA6_0>=PARENT && LA6_0<=PRECEDING_SIBLING)||LA6_0==PROCESSING_INSTRUCTION||(LA6_0>=SCHEMA_ATTRIBUTE && LA6_0<=SOME)||LA6_0==TEXT||LA6_0==TYPESWITCH||(LA6_0>=UNORDERED && LA6_0<=VARIABLE)||LA6_0==NAMESPACE_NODE||(LA6_0>=SWITCH && LA6_0<=TRY)||(LA6_0>=COPY && LA6_0<=DELETE)||LA6_0==INSERT||LA6_0==APPEND||(LA6_0>=RENAME && LA6_0<=REPLACE)||LA6_0==UPDATING||(LA6_0>=BREAK && LA6_0<=EXIT)||LA6_0==WHILE||LA6_0==LPAREN||(LA6_0>=DOLLAR && LA6_0<=L_UNION_BRACKET)||LA6_0==LBRACKET||LA6_0==LSQUARE||(LA6_0>=STAR && LA6_0<=SMALLER)||(LA6_0>=SLASH && LA6_0<=SLASH_SLASH)||(LA6_0>=DOT && LA6_0<=DOT_DOT)||(LA6_0>=ATTR_SIGN && LA6_0<=Q)||(LA6_0>=APOS && LA6_0<=QUOT)||(LA6_0>=L_Pragma && LA6_0<=L_DoubleLiteral)) ) {s = 2;}
-
- else if ( (LA6_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}
-
- else if ( (LA6_0==IMPORT) ) {s = 4;}
-
- else if ( (LA6_0==EOF||(LA6_0>=AND && LA6_0<=AT)||(LA6_0>=BASE_URI && LA6_0<=CASTABLE)||LA6_0==COLLATION||(LA6_0>=CONSTRUCTION && LA6_0<=COPY_NAMESPACES)||LA6_0==DEFAULT||(LA6_0>=DESCENDING && LA6_0<=DIV)||(LA6_0>=ELSE && LA6_0<=EQ)||(LA6_0>=EXCEPT && LA6_0<=EXTERNAL)||(LA6_0>=FUNCTION && LA6_0<=IDIV)||(LA6_0>=IN && LA6_0<=LEAST)||(LA6_0>=LT && LA6_0<=MODULE)||(LA6_0>=NE && LA6_0<=NO_PRESERVE)||(LA6_0>=JSON && LA6_0<=ORDER)||LA6_0==ORDERING||LA6_0==PRESERVE||(LA6_0>=STRUCTURED_ITEM && LA6_0<=SCHEMA)||(LA6_0>=STABLE && LA6_0<=STRIP)||(LA6_0>=THEN && LA6_0<=TREAT)||LA6_0==UNION||(LA6_0>=VERSION && LA6_0<=MINUS_SIGN)||(LA6_0>=NAN && LA6_0<=START)||(LA6_0>=TUMBLING && LA6_0<=BEFORE)||LA6_0==FIRST||(LA6_0>=INTO && LA6_0<=POSITION)||(LA6_0>=LAST && LA6_0<=NODES)||(LA6_0>=REVALIDATION && LA6_0<=SKIP)||(LA6_0>=VALUE && LA6_0<=WORDS)||(LA6_0>=LOOP && LA6_0<=RETURNING)||(LA6_0>=CHECK && LA6_0<=QUOT_ER)||LA6_0==L_NCName) ) {s = 5;}
-
-
- input.seek(index6_0);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA6_4 = input.LA(1);
-
-
- var index6_4 = input.index();
- input.rewind();
- s = -1;
- if ( (LA6_4==EOF||LA6_4==AND||(LA6_4>=CAST && LA6_4<=CASTABLE)||LA6_4==DIV||LA6_4==EQ||LA6_4==EXCEPT||LA6_4==GE||(LA6_4>=GT && LA6_4<=IDIV)||(LA6_4>=INSTANCE && LA6_4<=IS)||LA6_4==LE||(LA6_4>=LT && LA6_4<=MOD)||LA6_4==NE||LA6_4==OR||(LA6_4>=TO && LA6_4<=TREAT)||LA6_4==UNION||LA6_4==CONTAINS||(LA6_4>=CONCAT && LA6_4<=LPAREN)||LA6_4==LSQUARE||LA6_4==EQUAL||LA6_4==NOTEQUAL||LA6_4==HASH||LA6_4==COMMA||(LA6_4>=STAR && LA6_4<=BANG)||LA6_4==COLON||LA6_4==VBAR) ) {s = 9;}
-
- else if ( (LA6_4==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}
-
- else if ( (LA6_4==MODULE||LA6_4==SCHEMA) ) {s = 7;}
-
-
- input.seek(index6_4);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA6_1 = input.LA(1);
-
-
- var index6_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA6_1==REVALIDATION) && ((this.lc(XQU)))) {s = 6;}
-
- else if ( ((LA6_1>=BASE_URI && LA6_1<=BOUNDARY_SPACE)||(LA6_1>=CONSTRUCTION && LA6_1<=COPY_NAMESPACES)||LA6_1==DEFAULT||LA6_1==NAMESPACE||LA6_1==ORDERING||LA6_1==DECIMAL_FORMAT||LA6_1==FT_OPTION) ) {s = 7;}
-
- else if ( (LA6_1==AND||(LA6_1>=CAST && LA6_1<=CASTABLE)||LA6_1==DIV||LA6_1==EQ||LA6_1==EXCEPT||(LA6_1>=FUNCTION && LA6_1<=GE)||(LA6_1>=GT && LA6_1<=IDIV)||(LA6_1>=INSTANCE && LA6_1<=IS)||LA6_1==LE||(LA6_1>=LT && LA6_1<=MOD)||LA6_1==NE||(LA6_1>=OPTION && LA6_1<=OR)||(LA6_1>=TO && LA6_1<=TREAT)||LA6_1==UNION||LA6_1==VARIABLE||LA6_1==CONTEXT||LA6_1==UPDATING||LA6_1==CONTAINS||LA6_1==COLLECTION||(LA6_1>=INDEX && LA6_1<=INTEGRITY)||(LA6_1>=CONCAT && LA6_1<=LPAREN)||LA6_1==LSQUARE||LA6_1==EQUAL||(LA6_1>=NOTEQUAL && LA6_1<=HASH)||LA6_1==COMMA||(LA6_1>=STAR && LA6_1<=BANG)||LA6_1==COLON||LA6_1==VBAR) ) {s = 5;}
-
- else if ( (LA6_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}
-
- else if ( (LA6_1==EOF) ) {s = 9;}
-
-
- input.seek(index6_1);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 6, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA9_eotS:
- "\u000c\uffff",
- DFA9_eofS:
- "\u000c\uffff",
- DFA9_minS:
- "\u0001\u0022\u0001\u0017\u0002\uffff\u0001\u001e\u0007\uffff",
- DFA9_maxS:
- "\u0001\u0022\u0001\u00a0\u0002\uffff\u0001\u0079\u0007\uffff",
- DFA9_acceptS:
- "\u0002\uffff\u0001\u0007\u0001\u0001\u0001\uffff\u0001\u0003\u0001"+
- "\u0004\u0001\u0005\u0001\u0008\u0001\u0009\u0001\u0002\u0001\u0006",
- DFA9_specialS:
- "\u0001\uffff\u0001\u0000\u000a\uffff}>",
- DFA9_transitionS: [
- "\u0001\u0001",
- "\u0001\u0005\u0001\u0003\u0007\uffff\u0001\u0006\u0001\u0008"+
- "\u0001\uffff\u0001\u0004\u0031\uffff\u0001\u0007\u0023\uffff"+
- "\u0001\u0009\u0026\uffff\u0001\u0002",
- "",
- "",
- "\u0001\u000a\u0034\uffff\u0001\u000b\u0025\uffff\u0001\u0009",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA9_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_eotS),
- DFA9_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_eofS),
- DFA9_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA9_minS),
- DFA9_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA9_maxS),
- DFA9_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_acceptS),
- DFA9_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_specialS),
- DFA9_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA9_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA9 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 9;
- this.eot = XQueryParser.DFA9_eot;
- this.eof = XQueryParser.DFA9_eof;
- this.min = XQueryParser.DFA9_min;
- this.max = XQueryParser.DFA9_max;
- this.accept = XQueryParser.DFA9_accept;
- this.special = XQueryParser.DFA9_special;
- this.transition = XQueryParser.DFA9_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA9, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "355:1: p_Setter : ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA9_1 = input.LA(1);
-
-
- var index9_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA9_1==REVALIDATION) && ((this.lc(XQU)))) {s = 2;}
-
- else if ( (LA9_1==BOUNDARY_SPACE) ) {s = 3;}
-
- else if ( (LA9_1==DEFAULT) ) {s = 4;}
-
- else if ( (LA9_1==BASE_URI) ) {s = 5;}
-
- else if ( (LA9_1==CONSTRUCTION) ) {s = 6;}
-
- else if ( (LA9_1==ORDERING) ) {s = 7;}
-
- else if ( (LA9_1==COPY_NAMESPACES) ) {s = 8;}
-
- else if ( (LA9_1==DECIMAL_FORMAT) ) {s = 9;}
-
-
- input.seek(index9_1);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 9, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA44_eotS:
- "\u004b\uffff",
- DFA44_eofS:
- "\u0001\u0046\u004a\uffff",
- DFA44_minS:
- "\u0001\u0010\u0045\u0000\u0001\uffff\u0002\u0000\u0002\uffff",
- DFA44_maxS:
- "\u0001\u0122\u0045\u0000\u0001\uffff\u0002\u0000\u0002\uffff",
- DFA44_acceptS:
- "\u0046\uffff\u0001\u0001\u0003\uffff\u0001\u0002",
- DFA44_specialS:
- "\u0001\u0000\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001"+
- "\u0005\u0001\u0006\u0001\u0007\u0001\u0008\u0001\u0009\u0001\u000a\u0001"+
- "\u000b\u0001\u000c\u0001\u000d\u0001\u000e\u0001\u000f\u0001\u0010\u0001"+
- "\u0011\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001\u0016\u0001"+
- "\u0017\u0001\u0018\u0001\u0019\u0001\u001a\u0001\u001b\u0001\u001c\u0001"+
- "\u001d\u0001\u001e\u0001\u001f\u0001\u0020\u0001\u0021\u0001\u0022\u0001"+
- "\u0023\u0001\u0024\u0001\u0025\u0001\u0026\u0001\u0027\u0001\u0028\u0001"+
- "\u0029\u0001\u002a\u0001\u002b\u0001\u002c\u0001\u002d\u0001\u002e\u0001"+
- "\u002f\u0001\u0030\u0001\u0031\u0001\u0032\u0001\u0033\u0001\u0034\u0001"+
- "\u0035\u0001\u0036\u0001\u0037\u0001\u0038\u0001\u0039\u0001\u003a\u0001"+
- "\u003b\u0001\u003c\u0001\u003d\u0001\u003e\u0001\u003f\u0001\u0040\u0001"+
- "\u0041\u0001\u0042\u0001\u0043\u0001\u0044\u0001\u0045\u0001\uffff\u0001"+
- "\u0046\u0001\u0047\u0002\uffff}>",
- DFA44_transitionS: [
- "\u0001\u0029\u0001\u002c\u0004\u0047\u0001\u001f\u0006\u0047"+
- "\u0001\u002d\u0001\u0047\u0001\u0022\u0004\u0047\u0001\u002f"+
- "\u0001\u0031\u0002\u0047\u0001\u001a\u0001\u0024\u0001\u0017"+
- "\u0002\u0047\u0001\u0048\u0002\u0047\u0001\u0008\u0002\u0047"+
- "\u0001\u0033\u0001\u0032\u0001\u0001\u0005\u0047\u0001\u0003"+
- "\u0006\u0047\u0001\u0048\u0003\u0047\u0001\u0002\u0003\u0047"+
- "\u0001\u001e\u0003\u0047\u0001\u0039\u0005\u0047\u0001\u0016"+
- "\u0001\u0047\u0001\u0021\u0001\u002b\u0001\u002a\u0001\u0047"+
- "\u0001\u0023\u0004\u0048\u0003\u0047\u0001\u0037\u0001\u0036"+
- "\u0001\u0030\u0001\u0007\u0003\u0047\u0001\u0020\u0003\u0047"+
- "\u0001\u0005\u0001\u0047\u0001\u0019\u0001\u000b\u0001\u0045"+
- "\u000f\u0047\u0001\u0038\u0009\u0047\u0001\u0004\u0001\u0006"+
- "\u0007\u0047\u0001\u0040\u0001\u003d\u0001\u0047\u0001\u0034"+
- "\u0002\u0047\u0001\u0041\u0003\u0047\u0001\u003e\u0001\u003f"+
- "\u0002\u0047\u0001\u0018\u002c\u0047\u0001\u0042\u0001\u0043"+
- "\u0001\u0044\u0002\u0047\u0001\u003a\u000d\u0047\u0001\uffff"+
- "\u0001\u000e\u0001\uffff\u0001\u0014\u0001\u0028\u0001\uffff"+
- "\u0001\u0025\u0001\uffff\u0001\u0027\u0004\uffff\u0001\u0046"+
- "\u0004\uffff\u0001\u003b\u0001\u0009\u0001\u000a\u0001\u001b"+
- "\u0005\uffff\u0001\u000c\u0001\u000d\u0001\uffff\u0001\u0015"+
- "\u0001\u002e\u000c\uffff\u0001\u0035\u0001\u0026\u0002\uffff"+
- "\u0001\u0013\u0001\u0012\u0002\uffff\u0001\u0047\u0006\uffff"+
- "\u0001\u003c\u0001\u001c\u0001\u001d\u0001\u000f\u0001\u0010"+
- "\u0001\u0011",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "",
- "\u0001\uffff",
- "\u0001\uffff",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA44_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_eotS),
- DFA44_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_eofS),
- DFA44_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA44_minS),
- DFA44_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA44_maxS),
- DFA44_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_acceptS),
- DFA44_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_specialS),
- DFA44_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA44_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA44 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 44;
- this.eot = XQueryParser.DFA44_eot;
- this.eof = XQueryParser.DFA44_eof;
- this.min = XQueryParser.DFA44_min;
- this.max = XQueryParser.DFA44_max;
- this.accept = XQueryParser.DFA44_accept;
- this.special = XQueryParser.DFA44_special;
- this.transition = XQueryParser.DFA44_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA44, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "534:1: pm_QueryBody : ({...}? => p_Program | p_Expr[true,true] );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA44_0 = input.LA(1);
-
-
- var index44_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA44_0==FOR) ) {s = 1;}
-
- else if ( (LA44_0==LET) ) {s = 2;}
-
- else if ( (LA44_0==IF) ) {s = 3;}
-
- else if ( (LA44_0==SWITCH) ) {s = 4;}
-
- else if ( (LA44_0==TYPESWITCH) ) {s = 5;}
-
- else if ( (LA44_0==TRY) ) {s = 6;}
-
- else if ( (LA44_0==SOME) ) {s = 7;}
-
- else if ( (LA44_0==EVERY) ) {s = 8;}
-
- else if ( (LA44_0==PLUS) ) {s = 9;}
-
- else if ( (LA44_0==MINUS) ) {s = 10;}
-
- else if ( (LA44_0==VALIDATE) ) {s = 11;}
-
- else if ( (LA44_0==SLASH) ) {s = 12;}
-
- else if ( (LA44_0==SLASH_SLASH) ) {s = 13;}
-
- else if ( (LA44_0==LPAREN) ) {s = 14;}
-
- else if ( (LA44_0==L_IntegerLiteral) ) {s = 15;}
-
- else if ( (LA44_0==L_DecimalLiteral) ) {s = 16;}
-
- else if ( (LA44_0==L_DoubleLiteral) ) {s = 17;}
-
- else if ( (LA44_0==QUOT) ) {s = 18;}
-
- else if ( (LA44_0==APOS) ) {s = 19;}
-
- else if ( (LA44_0==DOLLAR) ) {s = 20;}
-
- else if ( (LA44_0==DOT) ) {s = 21;}
-
- else if ( (LA44_0==ORDERED) ) {s = 22;}
-
- else if ( (LA44_0==ELEMENT) ) {s = 23;}
-
- else if ( (LA44_0==UPDATING) ) {s = 24;}
-
- else if ( (LA44_0==UNORDERED) ) {s = 25;}
-
- else if ( (LA44_0==DOCUMENT) ) {s = 26;}
-
- else if ( (LA44_0==SMALLER) ) {s = 27;}
-
- else if ( (LA44_0==L_DirCommentConstructor) ) {s = 28;}
-
- else if ( (LA44_0==L_DirPIConstructor) ) {s = 29;}
-
- else if ( (LA44_0==NAMESPACE) ) {s = 30;}
-
- else if ( (LA44_0==ATTRIBUTE) ) {s = 31;}
-
- else if ( (LA44_0==TEXT) ) {s = 32;}
-
- else if ( (LA44_0==PARENT) ) {s = 33;}
-
- else if ( (LA44_0==COMMENT) ) {s = 34;}
-
- else if ( (LA44_0==PROCESSING_INSTRUCTION) ) {s = 35;}
-
- else if ( (LA44_0==DOCUMENT_NODE) ) {s = 36;}
-
- else if ( (LA44_0==LBRACKET) ) {s = 37;}
-
- else if ( (LA44_0==Q) ) {s = 38;}
-
- else if ( (LA44_0==LSQUARE) ) {s = 39;}
-
- else if ( (LA44_0==L_UNION_BRACKET) ) {s = 40;}
-
- else if ( (LA44_0==ANCESTOR) ) {s = 41;}
-
- else if ( (LA44_0==PRECEDING_SIBLING) ) {s = 42;}
-
- else if ( (LA44_0==PRECEDING) ) {s = 43;}
-
- else if ( (LA44_0==ANCESTOR_OR_SELF) ) {s = 44;}
-
- else if ( (LA44_0==CHILD) ) {s = 45;}
-
- else if ( (LA44_0==DOT_DOT) ) {s = 46;}
-
- else if ( (LA44_0==DESCENDANT) ) {s = 47;}
-
- else if ( (LA44_0==SELF) ) {s = 48;}
-
- else if ( (LA44_0==DESCENDANT_OR_SELF) ) {s = 49;}
-
- else if ( (LA44_0==FOLLOWING_SIBLING) ) {s = 50;}
-
- else if ( (LA44_0==FOLLOWING) ) {s = 51;}
-
- else if ( (LA44_0==INSERT) ) {s = 52;}
-
- else if ( (LA44_0==ATTR_SIGN) ) {s = 53;}
-
- else if ( (LA44_0==SCHEMA_ELEMENT) ) {s = 54;}
-
- else if ( (LA44_0==SCHEMA_ATTRIBUTE) ) {s = 55;}
-
- else if ( (LA44_0==NAMESPACE_NODE) ) {s = 56;}
-
- else if ( (LA44_0==NODE) ) {s = 57;}
-
- else if ( (LA44_0==WHILE) ) {s = 58;}
-
- else if ( (LA44_0==STAR) ) {s = 59;}
-
- else if ( (LA44_0==L_Pragma) ) {s = 60;}
-
- else if ( (LA44_0==DELETE) ) {s = 61;}
-
- else if ( (LA44_0==RENAME) ) {s = 62;}
-
- else if ( (LA44_0==REPLACE) ) {s = 63;}
-
- else if ( (LA44_0==COPY) ) {s = 64;}
-
- else if ( (LA44_0==APPEND) ) {s = 65;}
-
- else if ( (LA44_0==BREAK) ) {s = 66;}
-
- else if ( (LA44_0==CONTINUE) ) {s = 67;}
-
- else if ( (LA44_0==EXIT) ) {s = 68;}
-
- else if ( (LA44_0==VARIABLE) ) {s = 69;}
-
- else if ( (LA44_0==EOF||LA44_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 70;}
-
- else if ( ((LA44_0>=AND && LA44_0<=AT)||(LA44_0>=BASE_URI && LA44_0<=CASTABLE)||LA44_0==COLLATION||(LA44_0>=CONSTRUCTION && LA44_0<=DEFAULT)||(LA44_0>=DESCENDING && LA44_0<=DIV)||(LA44_0>=ELSE && LA44_0<=EMPTY)||(LA44_0>=ENCODING && LA44_0<=EQ)||(LA44_0>=EXCEPT && LA44_0<=EXTERNAL)||(LA44_0>=FUNCTION && LA44_0<=IDIV)||(LA44_0>=IMPORT && LA44_0<=IS)||(LA44_0>=LAX && LA44_0<=LEAST)||(LA44_0>=LT && LA44_0<=MODULE)||(LA44_0>=NE && LA44_0<=NO_PRESERVE)||(LA44_0>=JSON && LA44_0<=ORDER)||LA44_0==ORDERING||LA44_0==PRESERVE||(LA44_0>=RETURN && LA44_0<=SCHEMA)||(LA44_0>=STABLE && LA44_0<=STRIP)||(LA44_0>=THEN && LA44_0<=TREAT)||LA44_0==UNION||(LA44_0>=VERSION && LA44_0<=MINUS_SIGN)||(LA44_0>=NAN && LA44_0<=START)||(LA44_0>=TUMBLING && LA44_0<=BEFORE)||LA44_0==FIRST||(LA44_0>=INTO && LA44_0<=POSITION)||(LA44_0>=LAST && LA44_0<=NODES)||(LA44_0>=REVALIDATION && LA44_0<=SKIP)||(LA44_0>=VALUE && LA44_0<=WORDS)||(LA44_0>=LOOP && LA44_0<=RETURNING)||(LA44_0>=CHECK && LA44_0<=QUOT_ER)||LA44_0==L_NCName) ) {s = 71;}
-
- else if ( (LA44_0==EMPTY_SEQUENCE||LA44_0==ITEM||(LA44_0>=STRUCTURED_ITEM && LA44_0<=ARRAY)) ) {s = 72;}
-
-
- input.seek(index44_0);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA44_1 = input.LA(1);
-
-
- var index44_1 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_1);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA44_2 = input.LA(1);
-
-
- var index44_2 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_2);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA44_3 = input.LA(1);
-
-
- var index44_3 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_3);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA44_4 = input.LA(1);
-
-
- var index44_4 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_4);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA44_5 = input.LA(1);
-
-
- var index44_5 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_5);
- if ( s>=0 ) return s;
- break;
- case 6 :
- var LA44_6 = input.LA(1);
-
-
- var index44_6 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_6);
- if ( s>=0 ) return s;
- break;
- case 7 :
- var LA44_7 = input.LA(1);
-
-
- var index44_7 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_7);
- if ( s>=0 ) return s;
- break;
- case 8 :
- var LA44_8 = input.LA(1);
-
-
- var index44_8 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_8);
- if ( s>=0 ) return s;
- break;
- case 9 :
- var LA44_9 = input.LA(1);
-
-
- var index44_9 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_9);
- if ( s>=0 ) return s;
- break;
- case 10 :
- var LA44_10 = input.LA(1);
-
-
- var index44_10 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_10);
- if ( s>=0 ) return s;
- break;
- case 11 :
- var LA44_11 = input.LA(1);
-
-
- var index44_11 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_11);
- if ( s>=0 ) return s;
- break;
- case 12 :
- var LA44_12 = input.LA(1);
-
-
- var index44_12 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_12);
- if ( s>=0 ) return s;
- break;
- case 13 :
- var LA44_13 = input.LA(1);
-
-
- var index44_13 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_13);
- if ( s>=0 ) return s;
- break;
- case 14 :
- var LA44_14 = input.LA(1);
-
-
- var index44_14 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_14);
- if ( s>=0 ) return s;
- break;
- case 15 :
- var LA44_15 = input.LA(1);
-
-
- var index44_15 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_15);
- if ( s>=0 ) return s;
- break;
- case 16 :
- var LA44_16 = input.LA(1);
-
-
- var index44_16 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_16);
- if ( s>=0 ) return s;
- break;
- case 17 :
- var LA44_17 = input.LA(1);
-
-
- var index44_17 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_17);
- if ( s>=0 ) return s;
- break;
- case 18 :
- var LA44_18 = input.LA(1);
-
-
- var index44_18 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_18);
- if ( s>=0 ) return s;
- break;
- case 19 :
- var LA44_19 = input.LA(1);
-
-
- var index44_19 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_19);
- if ( s>=0 ) return s;
- break;
- case 20 :
- var LA44_20 = input.LA(1);
-
-
- var index44_20 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_20);
- if ( s>=0 ) return s;
- break;
- case 21 :
- var LA44_21 = input.LA(1);
-
-
- var index44_21 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_21);
- if ( s>=0 ) return s;
- break;
- case 22 :
- var LA44_22 = input.LA(1);
-
-
- var index44_22 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_22);
- if ( s>=0 ) return s;
- break;
- case 23 :
- var LA44_23 = input.LA(1);
-
-
- var index44_23 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_23);
- if ( s>=0 ) return s;
- break;
- case 24 :
- var LA44_24 = input.LA(1);
-
-
- var index44_24 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_24);
- if ( s>=0 ) return s;
- break;
- case 25 :
- var LA44_25 = input.LA(1);
-
-
- var index44_25 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_25);
- if ( s>=0 ) return s;
- break;
- case 26 :
- var LA44_26 = input.LA(1);
-
-
- var index44_26 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_26);
- if ( s>=0 ) return s;
- break;
- case 27 :
- var LA44_27 = input.LA(1);
-
-
- var index44_27 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_27);
- if ( s>=0 ) return s;
- break;
- case 28 :
- var LA44_28 = input.LA(1);
-
-
- var index44_28 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_28);
- if ( s>=0 ) return s;
- break;
- case 29 :
- var LA44_29 = input.LA(1);
-
-
- var index44_29 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_29);
- if ( s>=0 ) return s;
- break;
- case 30 :
- var LA44_30 = input.LA(1);
-
-
- var index44_30 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_30);
- if ( s>=0 ) return s;
- break;
- case 31 :
- var LA44_31 = input.LA(1);
-
-
- var index44_31 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_31);
- if ( s>=0 ) return s;
- break;
- case 32 :
- var LA44_32 = input.LA(1);
-
-
- var index44_32 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_32);
- if ( s>=0 ) return s;
- break;
- case 33 :
- var LA44_33 = input.LA(1);
-
-
- var index44_33 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_33);
- if ( s>=0 ) return s;
- break;
- case 34 :
- var LA44_34 = input.LA(1);
-
-
- var index44_34 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_34);
- if ( s>=0 ) return s;
- break;
- case 35 :
- var LA44_35 = input.LA(1);
-
-
- var index44_35 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_35);
- if ( s>=0 ) return s;
- break;
- case 36 :
- var LA44_36 = input.LA(1);
-
-
- var index44_36 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_36);
- if ( s>=0 ) return s;
- break;
- case 37 :
- var LA44_37 = input.LA(1);
-
-
- var index44_37 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_37);
- if ( s>=0 ) return s;
- break;
- case 38 :
- var LA44_38 = input.LA(1);
-
-
- var index44_38 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_38);
- if ( s>=0 ) return s;
- break;
- case 39 :
- var LA44_39 = input.LA(1);
-
-
- var index44_39 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_39);
- if ( s>=0 ) return s;
- break;
- case 40 :
- var LA44_40 = input.LA(1);
-
-
- var index44_40 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_40);
- if ( s>=0 ) return s;
- break;
- case 41 :
- var LA44_41 = input.LA(1);
-
-
- var index44_41 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_41);
- if ( s>=0 ) return s;
- break;
- case 42 :
- var LA44_42 = input.LA(1);
-
-
- var index44_42 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_42);
- if ( s>=0 ) return s;
- break;
- case 43 :
- var LA44_43 = input.LA(1);
-
-
- var index44_43 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_43);
- if ( s>=0 ) return s;
- break;
- case 44 :
- var LA44_44 = input.LA(1);
-
-
- var index44_44 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_44);
- if ( s>=0 ) return s;
- break;
- case 45 :
- var LA44_45 = input.LA(1);
-
-
- var index44_45 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_45);
- if ( s>=0 ) return s;
- break;
- case 46 :
- var LA44_46 = input.LA(1);
-
-
- var index44_46 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_46);
- if ( s>=0 ) return s;
- break;
- case 47 :
- var LA44_47 = input.LA(1);
-
-
- var index44_47 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_47);
- if ( s>=0 ) return s;
- break;
- case 48 :
- var LA44_48 = input.LA(1);
-
-
- var index44_48 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_48);
- if ( s>=0 ) return s;
- break;
- case 49 :
- var LA44_49 = input.LA(1);
-
-
- var index44_49 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_49);
- if ( s>=0 ) return s;
- break;
- case 50 :
- var LA44_50 = input.LA(1);
-
-
- var index44_50 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_50);
- if ( s>=0 ) return s;
- break;
- case 51 :
- var LA44_51 = input.LA(1);
-
-
- var index44_51 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_51);
- if ( s>=0 ) return s;
- break;
- case 52 :
- var LA44_52 = input.LA(1);
-
-
- var index44_52 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_52);
- if ( s>=0 ) return s;
- break;
- case 53 :
- var LA44_53 = input.LA(1);
-
-
- var index44_53 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_53);
- if ( s>=0 ) return s;
- break;
- case 54 :
- var LA44_54 = input.LA(1);
-
-
- var index44_54 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_54);
- if ( s>=0 ) return s;
- break;
- case 55 :
- var LA44_55 = input.LA(1);
-
-
- var index44_55 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_55);
- if ( s>=0 ) return s;
- break;
- case 56 :
- var LA44_56 = input.LA(1);
-
-
- var index44_56 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_56);
- if ( s>=0 ) return s;
- break;
- case 57 :
- var LA44_57 = input.LA(1);
-
-
- var index44_57 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_57);
- if ( s>=0 ) return s;
- break;
- case 58 :
- var LA44_58 = input.LA(1);
-
-
- var index44_58 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_58);
- if ( s>=0 ) return s;
- break;
- case 59 :
- var LA44_59 = input.LA(1);
-
-
- var index44_59 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_59);
- if ( s>=0 ) return s;
- break;
- case 60 :
- var LA44_60 = input.LA(1);
-
-
- var index44_60 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_60);
- if ( s>=0 ) return s;
- break;
- case 61 :
- var LA44_61 = input.LA(1);
-
-
- var index44_61 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_61);
- if ( s>=0 ) return s;
- break;
- case 62 :
- var LA44_62 = input.LA(1);
-
-
- var index44_62 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_62);
- if ( s>=0 ) return s;
- break;
- case 63 :
- var LA44_63 = input.LA(1);
-
-
- var index44_63 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_63);
- if ( s>=0 ) return s;
- break;
- case 64 :
- var LA44_64 = input.LA(1);
-
-
- var index44_64 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_64);
- if ( s>=0 ) return s;
- break;
- case 65 :
- var LA44_65 = input.LA(1);
-
-
- var index44_65 = input.index();
- input.rewind();
- s = -1;
- if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_65);
- if ( s>=0 ) return s;
- break;
- case 66 :
- var LA44_66 = input.LA(1);
-
-
- var index44_66 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_66);
- if ( s>=0 ) return s;
- break;
- case 67 :
- var LA44_67 = input.LA(1);
-
-
- var index44_67 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_67);
- if ( s>=0 ) return s;
- break;
- case 68 :
- var LA44_68 = input.LA(1);
-
-
- var index44_68 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_68);
- if ( s>=0 ) return s;
- break;
- case 69 :
- var LA44_69 = input.LA(1);
-
-
- var index44_69 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_69);
- if ( s>=0 ) return s;
- break;
- case 70 :
- var LA44_71 = input.LA(1);
-
-
- var index44_71 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_71);
- if ( s>=0 ) return s;
- break;
- case 71 :
- var LA44_72 = input.LA(1);
-
-
- var index44_72 = input.index();
- input.rewind();
- s = -1;
- if ( ((this.lc(XQS))) ) {s = 70;}
-
- else if ( (true) ) {s = 74;}
-
-
- input.seek(index44_72);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 44, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA46_eotS:
- "\u0011\uffff",
- DFA46_eofS:
- "\u0001\uffff\u0006\u0007\u000a\uffff",
- DFA46_minS:
- "\u0001\u0010\u0006\u0012\u000a\uffff",
- DFA46_maxS:
- "\u0001\u0122\u0006\u0107\u000a\uffff",
- DFA46_acceptS:
- "\u0007\uffff\u0001\u0006\u0005\u0001\u0001\u0002\u0001\u0003\u0001"+
- "\u0004\u0001\u0005",
- DFA46_specialS:
- "\u0001\uffff\u0001\u0002\u0001\u0005\u0001\u0004\u0001\u0001\u0001"+
- "\u0003\u0001\u0000\u000a\uffff}>",
- DFA46_transitionS: [
- "\u0025\u0007\u0001\u0001\u0005\u0007\u0001\u0003\u000a\u0007"+
- "\u0001\u0002\u0026\u0007\u0001\u0005\u001d\u0007\u0001\u0004"+
- "\u0001\u0006\u0055\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0009\uffff\u0004\u0007\u0005\uffff\u0002\u0007\u0001\uffff"+
- "\u0002\u0007\u000c\uffff\u0002\u0007\u0002\uffff\u0002\u0007"+
- "\u0002\uffff\u0001\u0007\u0006\uffff\u0006\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0004\uffff\u0001\u000a\u0001\u0007"+
- "\u0002\uffff\u0001\u0009\u0004\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0003\uffff\u0001\u0007\u0007\uffff\u0001\u0007"+
- "\u0002\uffff\u0001\u0007\u003a\uffff\u0003\u0007\u0001\u0008"+
- "\u0001\uffff\u0001\u0007\u0001\uffff\u0004\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0001\uffff\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff"+
- "\u0002\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
- "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u0018\uffff"+
- "\u0001\u000c\u0021\uffff\u0003\u0007\u0001\u000b\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007"+
- "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
- "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
- "\u0001\u0007\u0001\u000d\u0001\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
- "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
- "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
- "\u0001\u0007\u0001\u000e\u0001\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
- "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
- "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
- "\u0001\u0007\u0001\u000f\u0001\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
- "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
- "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
- "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
- "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
- "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
- "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
- "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
- "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
- "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
- "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
- "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
- "\u0003\u0007\u0002\uffff\u0001\u0007\u0001\u0010\u0004\u0007"+
- "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
- "\u0001\u0007\u0001\uffff\u000c\u0007\u0002\uffff\u0001\u0007"+
- "\u0003\uffff\u0002\u0007",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA46_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_eotS),
- DFA46_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_eofS),
- DFA46_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA46_minS),
- DFA46_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA46_maxS),
- DFA46_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_acceptS),
- DFA46_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_specialS),
- DFA46_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA46_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA46 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 46;
- this.eot = XQueryParser.DFA46_eot;
- this.eof = XQueryParser.DFA46_eof;
- this.min = XQueryParser.DFA46_min;
- this.max = XQueryParser.DFA46_max;
- this.accept = XQueryParser.DFA46_accept;
- this.special = XQueryParser.DFA46_special;
- this.transition = XQueryParser.DFA46_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA46, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "570:1: p_ExprSingle[strict] : ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA46_6 = input.LA(1);
-
-
- var index46_6 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_6==LBRACKET) && (this.synpred5_XQueryParser())) {s = 16;}
-
- else if ( (LA46_6==EOF||(LA46_6>=AND && LA46_6<=AT)||(LA46_6>=CASE && LA46_6<=CASTABLE)||LA46_6==COLLATION||LA46_6==DEFAULT||(LA46_6>=DESCENDING && LA46_6<=DIV)||LA46_6==EMPTY||LA46_6==EQ||LA46_6==EXCEPT||LA46_6==FOR||LA46_6==GE||(LA46_6>=GT && LA46_6<=IDIV)||(LA46_6>=INSTANCE && LA46_6<=IS)||LA46_6==LE||(LA46_6>=LET && LA46_6<=MOD)||LA46_6==NE||(LA46_6>=OR && LA46_6<=ORDER)||(LA46_6>=RETURN && LA46_6<=SATISFIES)||LA46_6==STABLE||(LA46_6>=TO && LA46_6<=TREAT)||LA46_6==UNION||LA46_6==WHERE||LA46_6==COUNT||(LA46_6>=END && LA46_6<=GROUP)||LA46_6==ONLY||LA46_6==START||(LA46_6>=AFTER && LA46_6<=BEFORE)||LA46_6==INTO||LA46_6==MODIFY||LA46_6==WITH||LA46_6==CONTAINS||(LA46_6>=CONCAT && LA46_6<=RPAREN)||LA46_6==R_UNION_BRACKET||(LA46_6>=RBRACKET && LA46_6<=EQUAL)||LA46_6==NOTEQUAL||LA46_6==HASH||LA46_6==COMMA||(LA46_6>=STAR && LA46_6<=BANG)||LA46_6==COLON||(LA46_6>=SEMICOLON && LA46_6<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_6);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA46_4 = input.LA(1);
-
-
- var index46_4 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_4==LPAREN) && (this.synpred3_XQueryParser())) {s = 14;}
-
- else if ( (LA46_4==EOF||(LA46_4>=AND && LA46_4<=AT)||(LA46_4>=CASE && LA46_4<=CASTABLE)||LA46_4==COLLATION||LA46_4==DEFAULT||(LA46_4>=DESCENDING && LA46_4<=DIV)||LA46_4==EMPTY||LA46_4==EQ||LA46_4==EXCEPT||LA46_4==FOR||LA46_4==GE||(LA46_4>=GT && LA46_4<=IDIV)||(LA46_4>=INSTANCE && LA46_4<=IS)||LA46_4==LE||(LA46_4>=LET && LA46_4<=MOD)||LA46_4==NE||(LA46_4>=OR && LA46_4<=ORDER)||(LA46_4>=RETURN && LA46_4<=SATISFIES)||LA46_4==STABLE||(LA46_4>=TO && LA46_4<=TREAT)||LA46_4==UNION||LA46_4==WHERE||LA46_4==COUNT||(LA46_4>=END && LA46_4<=GROUP)||LA46_4==ONLY||LA46_4==START||(LA46_4>=AFTER && LA46_4<=BEFORE)||LA46_4==INTO||LA46_4==MODIFY||LA46_4==WITH||LA46_4==CONTAINS||LA46_4==CONCAT||LA46_4==RPAREN||LA46_4==R_UNION_BRACKET||(LA46_4>=RBRACKET && LA46_4<=EQUAL)||LA46_4==NOTEQUAL||LA46_4==HASH||LA46_4==COMMA||(LA46_4>=STAR && LA46_4<=BANG)||LA46_4==COLON||(LA46_4>=SEMICOLON && LA46_4<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_4);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA46_1 = input.LA(1);
-
-
- var index46_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_1==DOLLAR) && (this.synpred1_XQueryParser())) {s = 8;}
-
- else if ( (LA46_1==TUMBLING) && (this.synpred1_XQueryParser())) {s = 9;}
-
- else if ( (LA46_1==SLIDING) && (this.synpred1_XQueryParser())) {s = 10;}
-
- else if ( (LA46_1==EOF||(LA46_1>=AND && LA46_1<=AT)||(LA46_1>=CASE && LA46_1<=CASTABLE)||LA46_1==COLLATION||LA46_1==DEFAULT||(LA46_1>=DESCENDING && LA46_1<=DIV)||LA46_1==EMPTY||LA46_1==EQ||LA46_1==EXCEPT||LA46_1==FOR||LA46_1==GE||(LA46_1>=GT && LA46_1<=IDIV)||(LA46_1>=INSTANCE && LA46_1<=IS)||LA46_1==LE||(LA46_1>=LET && LA46_1<=MOD)||LA46_1==NE||(LA46_1>=OR && LA46_1<=ORDER)||(LA46_1>=RETURN && LA46_1<=SATISFIES)||LA46_1==STABLE||(LA46_1>=TO && LA46_1<=TREAT)||LA46_1==UNION||LA46_1==WHERE||LA46_1==COUNT||(LA46_1>=END && LA46_1<=GROUP)||LA46_1==ONLY||LA46_1==START||(LA46_1>=AFTER && LA46_1<=BEFORE)||LA46_1==INTO||LA46_1==MODIFY||LA46_1==WITH||LA46_1==CONTAINS||(LA46_1>=CONCAT && LA46_1<=RPAREN)||LA46_1==R_UNION_BRACKET||(LA46_1>=RBRACKET && LA46_1<=EQUAL)||LA46_1==NOTEQUAL||LA46_1==HASH||LA46_1==COMMA||(LA46_1>=STAR && LA46_1<=BANG)||LA46_1==COLON||(LA46_1>=SEMICOLON && LA46_1<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_1);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA46_5 = input.LA(1);
-
-
- var index46_5 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_5==LPAREN) && (this.synpred4_XQueryParser())) {s = 15;}
-
- else if ( (LA46_5==EOF||(LA46_5>=AND && LA46_5<=AT)||(LA46_5>=CASE && LA46_5<=CASTABLE)||LA46_5==COLLATION||LA46_5==DEFAULT||(LA46_5>=DESCENDING && LA46_5<=DIV)||LA46_5==EMPTY||LA46_5==EQ||LA46_5==EXCEPT||LA46_5==FOR||LA46_5==GE||(LA46_5>=GT && LA46_5<=IDIV)||(LA46_5>=INSTANCE && LA46_5<=IS)||LA46_5==LE||(LA46_5>=LET && LA46_5<=MOD)||LA46_5==NE||(LA46_5>=OR && LA46_5<=ORDER)||(LA46_5>=RETURN && LA46_5<=SATISFIES)||LA46_5==STABLE||(LA46_5>=TO && LA46_5<=TREAT)||LA46_5==UNION||LA46_5==WHERE||LA46_5==COUNT||(LA46_5>=END && LA46_5<=GROUP)||LA46_5==ONLY||LA46_5==START||(LA46_5>=AFTER && LA46_5<=BEFORE)||LA46_5==INTO||LA46_5==MODIFY||LA46_5==WITH||LA46_5==CONTAINS||LA46_5==CONCAT||LA46_5==RPAREN||LA46_5==R_UNION_BRACKET||(LA46_5>=RBRACKET && LA46_5<=EQUAL)||LA46_5==NOTEQUAL||LA46_5==HASH||LA46_5==COMMA||(LA46_5>=STAR && LA46_5<=BANG)||LA46_5==COLON||(LA46_5>=SEMICOLON && LA46_5<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_5);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA46_3 = input.LA(1);
-
-
- var index46_3 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_3==LPAREN) && (this.synpred2_XQueryParser())) {s = 13;}
-
- else if ( (LA46_3==EOF||(LA46_3>=AND && LA46_3<=AT)||(LA46_3>=CASE && LA46_3<=CASTABLE)||LA46_3==COLLATION||LA46_3==DEFAULT||(LA46_3>=DESCENDING && LA46_3<=DIV)||LA46_3==EMPTY||LA46_3==EQ||LA46_3==EXCEPT||LA46_3==FOR||LA46_3==GE||(LA46_3>=GT && LA46_3<=IDIV)||(LA46_3>=INSTANCE && LA46_3<=IS)||LA46_3==LE||(LA46_3>=LET && LA46_3<=MOD)||LA46_3==NE||(LA46_3>=OR && LA46_3<=ORDER)||(LA46_3>=RETURN && LA46_3<=SATISFIES)||LA46_3==STABLE||(LA46_3>=TO && LA46_3<=TREAT)||LA46_3==UNION||LA46_3==WHERE||LA46_3==COUNT||(LA46_3>=END && LA46_3<=GROUP)||LA46_3==ONLY||LA46_3==START||(LA46_3>=AFTER && LA46_3<=BEFORE)||LA46_3==INTO||LA46_3==MODIFY||LA46_3==WITH||LA46_3==CONTAINS||LA46_3==CONCAT||LA46_3==RPAREN||LA46_3==R_UNION_BRACKET||(LA46_3>=RBRACKET && LA46_3<=EQUAL)||LA46_3==NOTEQUAL||LA46_3==HASH||LA46_3==COMMA||(LA46_3>=STAR && LA46_3<=BANG)||LA46_3==COLON||(LA46_3>=SEMICOLON && LA46_3<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_3);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA46_2 = input.LA(1);
-
-
- var index46_2 = input.index();
- input.rewind();
- s = -1;
- if ( (LA46_2==DOLLAR) && (this.synpred1_XQueryParser())) {s = 11;}
-
- else if ( (LA46_2==SCORE) && (this.synpred1_XQueryParser())) {s = 12;}
-
- else if ( (LA46_2==EOF||(LA46_2>=AND && LA46_2<=AT)||(LA46_2>=CASE && LA46_2<=CASTABLE)||LA46_2==COLLATION||LA46_2==DEFAULT||(LA46_2>=DESCENDING && LA46_2<=DIV)||LA46_2==EMPTY||LA46_2==EQ||LA46_2==EXCEPT||LA46_2==FOR||LA46_2==GE||(LA46_2>=GT && LA46_2<=IDIV)||(LA46_2>=INSTANCE && LA46_2<=IS)||LA46_2==LE||(LA46_2>=LET && LA46_2<=MOD)||LA46_2==NE||(LA46_2>=OR && LA46_2<=ORDER)||(LA46_2>=RETURN && LA46_2<=SATISFIES)||LA46_2==STABLE||(LA46_2>=TO && LA46_2<=TREAT)||LA46_2==UNION||LA46_2==WHERE||LA46_2==COUNT||(LA46_2>=END && LA46_2<=GROUP)||LA46_2==ONLY||LA46_2==START||(LA46_2>=AFTER && LA46_2<=BEFORE)||LA46_2==INTO||LA46_2==MODIFY||LA46_2==WITH||LA46_2==CONTAINS||(LA46_2>=CONCAT && LA46_2<=RPAREN)||LA46_2==R_UNION_BRACKET||(LA46_2>=RBRACKET && LA46_2<=EQUAL)||LA46_2==NOTEQUAL||LA46_2==HASH||LA46_2==COMMA||(LA46_2>=STAR && LA46_2<=BANG)||LA46_2==COLON||(LA46_2>=SEMICOLON && LA46_2<=VBAR)) ) {s = 7;}
-
-
- input.seek(index46_2);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 46, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA119_eotS:
- "\u0033\uffff",
- DFA119_eofS:
- "\u0033\uffff",
- DFA119_minS:
- "\u0001\u0010\u0001\u0000\u0031\uffff",
- DFA119_maxS:
- "\u0001\u0122\u0001\u0000\u0031\uffff",
- DFA119_acceptS:
- "\u0002\uffff\u0001\u0003\u0001\u0004\u002d\uffff\u0001\u0001\u0001"+
- "\u0002",
- DFA119_specialS:
- "\u0001\uffff\u0001\u0000\u0031\uffff}>",
- DFA119_transitionS: [
- "\u00d2\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0002\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0009\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0005\uffff\u0001\u0001"+
- "\u0001\u0002\u0001\uffff\u0002\u0003\u000c\uffff\u0002\u0003"+
- "\u0002\uffff\u0002\u0003\u0002\uffff\u0001\u0003\u0007\uffff"+
- "\u0005\u0003",
- "\u0001\uffff",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA119_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_eotS),
- DFA119_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_eofS),
- DFA119_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA119_minS),
- DFA119_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA119_maxS),
- DFA119_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_acceptS),
- DFA119_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_specialS),
- DFA119_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA119_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA119 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 119;
- this.eot = XQueryParser.DFA119_eot;
- this.eof = XQueryParser.DFA119_eof;
- this.min = XQueryParser.DFA119_min;
- this.max = XQueryParser.DFA119_max;
- this.accept = XQueryParser.DFA119_accept;
- this.special = XQueryParser.DFA119_special;
- this.transition = XQueryParser.DFA119_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA119, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "912:1: p_PathExpr : ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA119_1 = input.LA(1);
-
-
- var index119_1 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred7_XQueryParser()) ) {s = 49;}
-
- else if ( (true) ) {s = 50;}
-
-
- input.seek(index119_1);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 119, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA121_eotS:
- "\u0035\uffff",
- DFA121_eofS:
- "\u0035\uffff",
- DFA121_minS:
- "\u0001\u0010\u002e\u0000\u0006\uffff",
- DFA121_maxS:
- "\u0001\u0122\u002e\u0000\u0006\uffff",
- DFA121_acceptS:
- "\u002f\uffff\u0001\u0001\u0001\u0002\u0001\u0004\u0001\u0005\u0001"+
- "\u0003\u0001\u0006",
- DFA121_specialS:
- "\u0001\uffff\u0001\u0000\u0001\u0001\u0001\u0002\u0001\u0003\u0001"+
- "\u0004\u0001\u0005\u0001\u0006\u0001\u0007\u0001\u0008\u0001\u0009\u0001"+
- "\u000a\u0001\u000b\u0001\u000c\u0001\u000d\u0001\u000e\u0001\u000f\u0001"+
- "\u0010\u0001\u0011\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001"+
- "\u0016\u0001\u0017\u0001\u0018\u0001\u0019\u0001\u001a\u0001\u001b\u0001"+
- "\u001c\u0001\u001d\u0001\u001e\u0001\u001f\u0001\u0020\u0001\u0021\u0001"+
- "\u0022\u0001\u0023\u0001\u0024\u0001\u0025\u0001\u0026\u0001\u0027\u0001"+
- "\u0028\u0001\u0029\u0001\u002a\u0001\u002b\u0001\u002c\u0001\u002d\u0006"+
- "\uffff}>",
- DFA121_transitionS: [
- "\u0001\u001c\u0001\u001f\u0004\u0027\u0001\u0012\u0006\u0027"+
- "\u0001\u0020\u0001\u0027\u0001\u0015\u0004\u0027\u0001\u0022"+
- "\u0001\u0024\u0002\u0027\u0001\u000d\u0001\u0017\u0001\u000a"+
- "\u0002\u0027\u0001\u002d\u0005\u0027\u0001\u0026\u0001\u0025"+
- "\u0006\u0027\u0001\u002d\u0006\u0027\u0001\u002d\u0007\u0027"+
- "\u0001\u0011\u0003\u0027\u0001\u002c\u0005\u0027\u0001\u0009"+
- "\u0001\u0027\u0001\u0014\u0001\u001e\u0001\u001d\u0001\u0027"+
- "\u0001\u0016\u0004\u002d\u0003\u0027\u0001\u002a\u0001\u0029"+
- "\u0001\u0023\u0004\u0027\u0001\u0013\u0003\u0027\u0001\u002d"+
- "\u0001\u0027\u0001\u000c\u0011\u0027\u0001\u002b\u0009\u0027"+
- "\u0001\u002d\u0016\u0027\u0001\u000b\u0031\u0027\u0001\u002d"+
- "\u000d\u0027\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0007"+
- "\u0001\u001b\u0001\uffff\u0001\u0018\u0001\uffff\u0001\u001a"+
- "\u0009\uffff\u0001\u002e\u0002\uffff\u0001\u000e\u0008\uffff"+
- "\u0001\u0008\u0001\u0021\u000c\uffff\u0001\u0028\u0001\u0019"+
- "\u0002\uffff\u0001\u0006\u0001\u0005\u0002\uffff\u0001\u0027"+
- "\u0007\uffff\u0001\u000f\u0001\u0010\u0001\u0002\u0001\u0003"+
- "\u0001\u0004",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA121_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_eotS),
- DFA121_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_eofS),
- DFA121_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA121_minS),
- DFA121_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA121_maxS),
- DFA121_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_acceptS),
- DFA121_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_specialS),
- DFA121_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA121_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA121 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 121;
- this.eot = XQueryParser.DFA121_eot;
- this.eof = XQueryParser.DFA121_eof;
- this.min = XQueryParser.DFA121_min;
- this.max = XQueryParser.DFA121_max;
- this.accept = XQueryParser.DFA121_accept;
- this.special = XQueryParser.DFA121_special;
- this.transition = XQueryParser.DFA121_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA121, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "925:1: p_StepExpr : ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA121_1 = input.LA(1);
-
-
- var index121_1 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_1);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA121_2 = input.LA(1);
-
-
- var index121_2 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_2);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA121_3 = input.LA(1);
-
-
- var index121_3 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_3);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA121_4 = input.LA(1);
-
-
- var index121_4 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_4);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA121_5 = input.LA(1);
-
-
- var index121_5 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_5);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA121_6 = input.LA(1);
-
-
- var index121_6 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_6);
- if ( s>=0 ) return s;
- break;
- case 6 :
- var LA121_7 = input.LA(1);
-
-
- var index121_7 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_7);
- if ( s>=0 ) return s;
- break;
- case 7 :
- var LA121_8 = input.LA(1);
-
-
- var index121_8 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_8);
- if ( s>=0 ) return s;
- break;
- case 8 :
- var LA121_9 = input.LA(1);
-
-
- var index121_9 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_9);
- if ( s>=0 ) return s;
- break;
- case 9 :
- var LA121_10 = input.LA(1);
-
-
- var index121_10 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_10);
- if ( s>=0 ) return s;
- break;
- case 10 :
- var LA121_11 = input.LA(1);
-
-
- var index121_11 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_11);
- if ( s>=0 ) return s;
- break;
- case 11 :
- var LA121_12 = input.LA(1);
-
-
- var index121_12 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_12);
- if ( s>=0 ) return s;
- break;
- case 12 :
- var LA121_13 = input.LA(1);
-
-
- var index121_13 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_13);
- if ( s>=0 ) return s;
- break;
- case 13 :
- var LA121_14 = input.LA(1);
-
-
- var index121_14 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_14);
- if ( s>=0 ) return s;
- break;
- case 14 :
- var LA121_15 = input.LA(1);
-
-
- var index121_15 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_15);
- if ( s>=0 ) return s;
- break;
- case 15 :
- var LA121_16 = input.LA(1);
-
-
- var index121_16 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_16);
- if ( s>=0 ) return s;
- break;
- case 16 :
- var LA121_17 = input.LA(1);
-
-
- var index121_17 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_17);
- if ( s>=0 ) return s;
- break;
- case 17 :
- var LA121_18 = input.LA(1);
-
-
- var index121_18 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_18);
- if ( s>=0 ) return s;
- break;
- case 18 :
- var LA121_19 = input.LA(1);
-
-
- var index121_19 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_19);
- if ( s>=0 ) return s;
- break;
- case 19 :
- var LA121_20 = input.LA(1);
-
-
- var index121_20 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_20);
- if ( s>=0 ) return s;
- break;
- case 20 :
- var LA121_21 = input.LA(1);
-
-
- var index121_21 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_21);
- if ( s>=0 ) return s;
- break;
- case 21 :
- var LA121_22 = input.LA(1);
-
-
- var index121_22 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_22);
- if ( s>=0 ) return s;
- break;
- case 22 :
- var LA121_23 = input.LA(1);
-
-
- var index121_23 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_23);
- if ( s>=0 ) return s;
- break;
- case 23 :
- var LA121_24 = input.LA(1);
-
-
- var index121_24 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_24);
- if ( s>=0 ) return s;
- break;
- case 24 :
- var LA121_25 = input.LA(1);
-
-
- var index121_25 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_25);
- if ( s>=0 ) return s;
- break;
- case 25 :
- var LA121_26 = input.LA(1);
-
-
- var index121_26 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_26);
- if ( s>=0 ) return s;
- break;
- case 26 :
- var LA121_27 = input.LA(1);
-
-
- var index121_27 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
-
- input.seek(index121_27);
- if ( s>=0 ) return s;
- break;
- case 27 :
- var LA121_28 = input.LA(1);
-
-
- var index121_28 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_28);
- if ( s>=0 ) return s;
- break;
- case 28 :
- var LA121_29 = input.LA(1);
-
-
- var index121_29 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_29);
- if ( s>=0 ) return s;
- break;
- case 29 :
- var LA121_30 = input.LA(1);
-
-
- var index121_30 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_30);
- if ( s>=0 ) return s;
- break;
- case 30 :
- var LA121_31 = input.LA(1);
-
-
- var index121_31 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_31);
- if ( s>=0 ) return s;
- break;
- case 31 :
- var LA121_32 = input.LA(1);
-
-
- var index121_32 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_32);
- if ( s>=0 ) return s;
- break;
- case 32 :
- var LA121_33 = input.LA(1);
-
-
- var index121_33 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_33);
- if ( s>=0 ) return s;
- break;
- case 33 :
- var LA121_34 = input.LA(1);
-
-
- var index121_34 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_34);
- if ( s>=0 ) return s;
- break;
- case 34 :
- var LA121_35 = input.LA(1);
-
-
- var index121_35 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_35);
- if ( s>=0 ) return s;
- break;
- case 35 :
- var LA121_36 = input.LA(1);
-
-
- var index121_36 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_36);
- if ( s>=0 ) return s;
- break;
- case 36 :
- var LA121_37 = input.LA(1);
-
-
- var index121_37 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_37);
- if ( s>=0 ) return s;
- break;
- case 37 :
- var LA121_38 = input.LA(1);
-
-
- var index121_38 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_38);
- if ( s>=0 ) return s;
- break;
- case 38 :
- var LA121_39 = input.LA(1);
-
-
- var index121_39 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_39);
- if ( s>=0 ) return s;
- break;
- case 39 :
- var LA121_40 = input.LA(1);
-
-
- var index121_40 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_40);
- if ( s>=0 ) return s;
- break;
- case 40 :
- var LA121_41 = input.LA(1);
-
-
- var index121_41 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_41);
- if ( s>=0 ) return s;
- break;
- case 41 :
- var LA121_42 = input.LA(1);
-
-
- var index121_42 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_42);
- if ( s>=0 ) return s;
- break;
- case 42 :
- var LA121_43 = input.LA(1);
-
-
- var index121_43 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_43);
- if ( s>=0 ) return s;
- break;
- case 43 :
- var LA121_44 = input.LA(1);
-
-
- var index121_44 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_44);
- if ( s>=0 ) return s;
- break;
- case 44 :
- var LA121_45 = input.LA(1);
-
-
- var index121_45 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred8_XQueryParser()) ) {s = 47;}
-
- else if ( (this.synpred9_XQueryParser()) ) {s = 48;}
-
- else if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (this.synpred11_XQueryParser()) ) {s = 49;}
-
- else if ( (this.synpred12_XQueryParser()) ) {s = 50;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_45);
- if ( s>=0 ) return s;
- break;
- case 45 :
- var LA121_46 = input.LA(1);
-
-
- var index121_46 = input.index();
- input.rewind();
- s = -1;
- if ( (this.synpred10_XQueryParser()) ) {s = 51;}
-
- else if ( (true) ) {s = 52;}
-
-
- input.seek(index121_46);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 121, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA123_eotS:
- "\u000a\uffff",
- DFA123_eofS:
- "\u0001\uffff\u0007\u0008\u0002\uffff",
- DFA123_minS:
- "\u0001\u0010\u0007\u0012\u0002\uffff",
- DFA123_maxS:
- "\u0001\u0116\u0007\u0107\u0002\uffff",
- DFA123_acceptS:
- "\u0008\uffff\u0001\u0002\u0001\u0001",
- DFA123_specialS:
- "\u000a\uffff}>",
- DFA123_transitionS: [
- "\u0006\u0008\u0001\u0003\u0006\u0008\u0001\u0001\u0006\u0008"+
- "\u0001\u0002\u0001\u0005\u000d\u0008\u0001\u0007\u0001\u0006"+
- "\u002f\u0008\u0001\u0004\u003d\u0008\u0001\uffff\u003f\u0008"+
- "\u0012\uffff\u0001\u0008\u0019\uffff\u0002\u0008\u0006\uffff"+
- "\u0001\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0003\u0008\u0002\uffff"+
- "\u0001\u0008\u0001\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u000c\u0008\u0002\uffff"+
- "\u0001\u0008\u0001\u0009\u0002\uffff\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
- "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
- "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
- "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
- "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
- "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
- "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
- "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
- "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
- "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
- "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
- "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
- "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
- "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
- "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
- "\u0002\u0008",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA123_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_eotS),
- DFA123_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_eofS),
- DFA123_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA123_minS),
- DFA123_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA123_maxS),
- DFA123_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_acceptS),
- DFA123_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_specialS),
- DFA123_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA123_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA123 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 123;
- this.eot = XQueryParser.DFA123_eot;
- this.eof = XQueryParser.DFA123_eof;
- this.min = XQueryParser.DFA123_min;
- this.max = XQueryParser.DFA123_max;
- this.accept = XQueryParser.DFA123_accept;
- this.special = XQueryParser.DFA123_special;
- this.transition = XQueryParser.DFA123_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA123, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "944:1: p_ForwardStep : ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA128_eotS:
- "\u000d\uffff",
- DFA128_eofS:
- "\u0001\uffff\u000a\u000b\u0002\uffff",
- DFA128_minS:
- "\u0001\u0010\u000a\u0012\u0002\uffff",
- DFA128_maxS:
- "\u0001\u0116\u000a\u0107\u0002\uffff",
- DFA128_acceptS:
- "\u000b\uffff\u0001\u0002\u0001\u0001",
- DFA128_specialS:
- "\u000d\uffff}>",
- DFA128_transitionS: [
- "\u0006\u000b\u0001\u0003\u0008\u000b\u0001\u0007\u0009\u000b"+
- "\u0001\u0001\u0001\u0002\u0023\u000b\u0001\u000a\u000b\u000b"+
- "\u0001\u0006\u0007\u000b\u0001\u0005\u0001\u0004\u0005\u000b"+
- "\u0001\u0008\u0017\u000b\u0001\u0009\u0020\u000b\u0001\uffff"+
- "\u003f\u000b\u0012\uffff\u0001\u000b\u001a\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
- "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
- "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
- "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
- "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
- "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
- "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
- "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
- "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
- "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
- "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
- "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
- "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
- "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
- "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA128_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_eotS),
- DFA128_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_eofS),
- DFA128_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA128_minS),
- DFA128_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA128_maxS),
- DFA128_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_acceptS),
- DFA128_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_specialS),
- DFA128_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA128_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA128 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 128;
- this.eot = XQueryParser.DFA128_eot;
- this.eof = XQueryParser.DFA128_eof;
- this.min = XQueryParser.DFA128_min;
- this.max = XQueryParser.DFA128_max;
- this.accept = XQueryParser.DFA128_accept;
- this.special = XQueryParser.DFA128_special;
- this.transition = XQueryParser.DFA128_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA128, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "986:1: p_NodeTest : ( p_KindTest | p_NameTest );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA129_eotS:
- "\u0009\uffff",
- DFA129_eofS:
- "\u0001\uffff\u0001\u0005\u0007\uffff",
- DFA129_minS:
- "\u0001\u0010\u0001\u0012\u0001\u00e8\u0001\uffff\u0001\u0010\u0001"+
- "\uffff\u0002\u0004\u0001\u0010",
- DFA129_maxS:
- "\u0001\u0116\u0001\u0107\u0001\u00e8\u0001\uffff\u0001\u0116\u0001"+
- "\uffff\u0002\u015c\u0001\u0116",
- DFA129_acceptS:
- "\u0003\uffff\u0001\u0002\u0001\uffff\u0001\u0001\u0003\uffff",
- DFA129_specialS:
- "\u0009\uffff}>",
- DFA129_transitionS: [
- "\u0092\u0001\u0001\uffff\u003f\u0001\u0012\uffff\u0001\u0003"+
- "\u001a\uffff\u0001\u0002\u0006\uffff\u0001\u0001",
- "\u0004\u0005\u0003\uffff\u0004\u0005\u0001\uffff\u0001\u0005"+
- "\u0004\uffff\u0001\u0005\u0002\uffff\u0002\u0005\u0004\uffff"+
- "\u0001\u0005\u0002\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
- "\u0003\uffff\u0001\u0005\u0001\uffff\u0001\u0005\u0001\uffff"+
- "\u0002\u0005\u0004\uffff\u0003\u0005\u0002\uffff\u0001\u0005"+
- "\u0001\uffff\u0003\u0005\u0002\uffff\u0001\u0005\u0006\uffff"+
- "\u0002\u0005\u000b\uffff\u0002\u0005\u0005\uffff\u0001\u0005"+
- "\u0004\uffff\u0002\u0005\u0001\uffff\u0001\u0005\u0004\uffff"+
- "\u0001\u0005\u0004\uffff\u0001\u0005\u0003\uffff\u0002\u0005"+
- "\u0006\uffff\u0001\u0005\u0005\uffff\u0001\u0005\u0007\uffff"+
- "\u0002\u0005\u0004\uffff\u0001\u0005\u0003\uffff\u0001\u0005"+
- "\u0007\uffff\u0001\u0005\u0002\uffff\u0001\u0005\u0014\uffff"+
- "\u0001\u0005\u0006\uffff\u0001\u0005\u0003\uffff\u0001\u0005"+
- "\u0006\uffff\u0001\u0005\u0013\uffff\u0001\u0005\u0001\uffff"+
- "\u0001\u0005\u0002\uffff\u0006\u0005\u0001\uffff\u0001\u0005"+
- "\u0003\uffff\u0001\u0005\u0001\uffff\u000c\u0005\u0002\uffff"+
- "\u0001\u0004\u0003\uffff\u0002\u0005",
- "\u0001\u0006",
- "",
- "\u0092\u0005\u0001\uffff\u003f\u0005\u0012\uffff\u0001\u0003"+
- "\u0021\uffff\u0001\u0005",
- "",
- "\u00e4\u0007\u0001\uffff\u0001\u0008\u0007\u0007\u0001\uffff"+
- "\u006b\u0007",
- "\u00e4\u0007\u0001\uffff\u0001\u0008\u0007\u0007\u0001\uffff"+
- "\u006b\u0007",
- "\u0092\u0005\u0001\uffff\u003f\u0005\u0012\uffff\u0001\u0003"+
- "\u0021\uffff\u0001\u0005"
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA129_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_eotS),
- DFA129_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_eofS),
- DFA129_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA129_minS),
- DFA129_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA129_maxS),
- DFA129_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_acceptS),
- DFA129_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_specialS),
- DFA129_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA129_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA129 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 129;
- this.eot = XQueryParser.DFA129_eot;
- this.eof = XQueryParser.DFA129_eof;
- this.min = XQueryParser.DFA129_min;
- this.max = XQueryParser.DFA129_max;
- this.accept = XQueryParser.DFA129_accept;
- this.special = XQueryParser.DFA129_special;
- this.transition = XQueryParser.DFA129_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA129, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "991:1: p_NameTest : ( p_EQName | p_Wildcard );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA136_eotS:
- "\u001a\uffff",
- DFA136_eofS:
- "\u001a\uffff",
- DFA136_minS:
- "\u0001\u0010\u0004\uffff\u0001\u00e3\u0001\u0010\u0001\uffff\u0002"+
- "\u00e3\u0001\uffff\u0002\u0010\u0001\u00e8\u0001\u00e3\u0001\u00e8\u0001"+
- "\u0010\u0001\u00f0\u0004\uffff\u0001\u0010\u0002\uffff\u0001\u00e3",
- DFA136_maxS:
- "\u0001\u0122\u0004\uffff\u0001\u0102\u0001\u0116\u0001\uffff\u0002"+
- "\u0102\u0001\uffff\u0002\u0116\u0003\u0102\u0001\u0116\u0001\u0102\u0004"+
- "\uffff\u0001\u0116\u0002\uffff\u0001\u00f0",
- DFA136_acceptS:
- "\u0001\uffff\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0002"+
- "\uffff\u0001\u0005\u0002\uffff\u0001\u0008\u0007\uffff\u0001\u0009\u0001"+
- "\u000a\u0001\u000b\u0001\u000c\u0001\uffff\u0001\u0006\u0001\u0007\u0001"+
- "\uffff",
- DFA136_specialS:
- "\u0001\u0000\u0019\uffff}>",
- DFA136_transitionS: [
- "\u0006\u000e\u0001\u000c\u0008\u000e\u0001\u000f\u0008\u000e"+
- "\u0001\u0009\u0001\u0011\u0001\u0006\u0002\u000e\u0001\u0011"+
- "\u000d\u000e\u0001\u0011\u0006\u000e\u0001\u0011\u0007\u000e"+
- "\u0001\u000b\u0003\u000e\u0001\u0011\u0005\u000e\u0001\u0005"+
- "\u0005\u000e\u0001\u0010\u0004\u0011\u0003\u000e\u0002\u0011"+
- "\u0005\u000e\u0001\u000d\u0003\u000e\u0001\u0011\u0001\u000e"+
- "\u0001\u0008\u0011\u000e\u0001\u0011\u0009\u000e\u0001\u0011"+
- "\u0016\u000e\u0001\u0007\u0031\u000e\u0001\u0011\u000d\u000e"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0003\u0001\u0015"+
- "\u0001\uffff\u0001\u0012\u0001\uffff\u0001\u0014\u000c\uffff"+
- "\u0001\u000a\u0008\uffff\u0001\u0004\u000e\uffff\u0001\u0013"+
- "\u0002\uffff\u0002\u0002\u0002\uffff\u0001\u000e\u0007\uffff"+
- "\u0002\u000a\u0003\u0002",
- "",
- "",
- "",
- "",
- "\u0001\u0007\u0004\uffff\u0001\u0017\u0007\uffff\u0001\u0013"+
- "\u0011\uffff\u0001\u0016",
- "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
- "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u000c\uffff"+
- "\u0001\u000a\u0006\uffff\u0001\u000a",
- "",
- "\u0001\u0007\u0004\uffff\u0001\u0018\u0007\uffff\u0001\u0013"+
- "\u0011\uffff\u0001\u0016",
- "\u0001\u0007\u0004\uffff\u0001\u000a\u0007\uffff\u0001\u0013"+
- "\u0011\uffff\u0001\u0016",
- "",
- "\u0092\u000a\u0001\uffff\u003f\u000a\u0001\uffff\u0001\u0007"+
- "\u0004\uffff\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff"+
- "\u0001\u0016\u0013\uffff\u0001\u000a",
- "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
- "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u000c\uffff"+
- "\u0001\u000a\u0006\uffff\u0001\u000a",
- "\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
- "\u0001\u0007\u000c\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
- "\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
- "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
- "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u0013\uffff"+
- "\u0001\u000a",
- "\u0001\u0013\u0011\uffff\u0001\u0016",
- "",
- "",
- "",
- "",
- "\u0092\u0019\u0001\uffff\u003f\u0019\u0034\uffff\u0001\u0019",
- "",
- "",
- "\u0001\u0007\u000c\uffff\u0001\u0013"
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA136_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_eotS),
- DFA136_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_eofS),
- DFA136_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA136_minS),
- DFA136_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA136_maxS),
- DFA136_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_acceptS),
- DFA136_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_specialS),
- DFA136_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA136_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA136 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 136;
- this.eot = XQueryParser.DFA136_eot;
- this.eof = XQueryParser.DFA136_eof;
- this.min = XQueryParser.DFA136_min;
- this.max = XQueryParser.DFA136_max;
- this.accept = XQueryParser.DFA136_accept;
- this.special = XQueryParser.DFA136_special;
- this.transition = XQueryParser.DFA136_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA136, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1028:1: p_PrimaryExpr : ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA136_0 = input.LA(1);
-
-
- var index136_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA136_0==LPAREN) && (this.synpred13_XQueryParser())) {s = 1;}
-
- else if ( ((LA136_0>=APOS && LA136_0<=QUOT)||(LA136_0>=L_IntegerLiteral && LA136_0<=L_DoubleLiteral)) ) {s = 2;}
-
- else if ( (LA136_0==DOLLAR) ) {s = 3;}
-
- else if ( (LA136_0==DOT) ) {s = 4;}
-
- else if ( (LA136_0==ORDERED) ) {s = 5;}
-
- else if ( (LA136_0==ELEMENT) ) {s = 6;}
-
- else if ( (LA136_0==UPDATING) ) {s = 7;}
-
- else if ( (LA136_0==UNORDERED) ) {s = 8;}
-
- else if ( (LA136_0==DOCUMENT) ) {s = 9;}
-
- else if ( (LA136_0==SMALLER||(LA136_0>=L_DirCommentConstructor && LA136_0<=L_DirPIConstructor)) ) {s = 10;}
-
- else if ( (LA136_0==NAMESPACE) ) {s = 11;}
-
- else if ( (LA136_0==ATTRIBUTE) ) {s = 12;}
-
- else if ( (LA136_0==TEXT) ) {s = 13;}
-
- else if ( ((LA136_0>=ANCESTOR && LA136_0<=AT)||(LA136_0>=BASE_URI && LA136_0<=COLLATION)||(LA136_0>=CONSTRUCTION && LA136_0<=DIV)||(LA136_0>=ELSE && LA136_0<=EMPTY)||(LA136_0>=ENCODING && LA136_0<=IDIV)||(LA136_0>=IMPORT && LA136_0<=IS)||(LA136_0>=LAX && LA136_0<=MODULE)||(LA136_0>=NE && LA136_0<=NO_PRESERVE)||(LA136_0>=JSON && LA136_0<=ORDER)||(LA136_0>=ORDERING && LA136_0<=PRESERVE)||(LA136_0>=RETURN && LA136_0<=SCHEMA)||(LA136_0>=SELF && LA136_0<=STRIP)||(LA136_0>=THEN && LA136_0<=TREAT)||LA136_0==UNION||(LA136_0>=VALIDATE && LA136_0<=MINUS_SIGN)||(LA136_0>=NAN && LA136_0<=START)||(LA136_0>=TRY && LA136_0<=SKIP)||(LA136_0>=VALUE && LA136_0<=RETURNING)||(LA136_0>=CHECK && LA136_0<=QUOT_ER)||LA136_0==L_NCName) ) {s = 14;}
-
- else if ( (LA136_0==COMMENT) ) {s = 15;}
-
- else if ( (LA136_0==PROCESSING_INSTRUCTION) ) {s = 16;}
-
- else if ( (LA136_0==DOCUMENT_NODE||LA136_0==EMPTY_SEQUENCE||LA136_0==IF||LA136_0==ITEM||LA136_0==NODE||(LA136_0>=STRUCTURED_ITEM && LA136_0<=ARRAY)||(LA136_0>=SCHEMA_ATTRIBUTE && LA136_0<=SCHEMA_ELEMENT)||LA136_0==TYPESWITCH||LA136_0==NAMESPACE_NODE||LA136_0==SWITCH||LA136_0==WHILE) ) {s = 17;}
-
- else if ( (LA136_0==LBRACKET) ) {s = 18;}
-
- else if ( (LA136_0==Q) ) {s = 19;}
-
- else if ( (LA136_0==LSQUARE) ) {s = 20;}
-
- else if ( (LA136_0==L_UNION_BRACKET) ) {s = 21;}
-
-
- input.seek(index136_0);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 136, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA172_eotS:
- "\u0018\uffff",
- DFA172_eofS:
- "\u0001\uffff\u000b\u000f\u0001\uffff\u0002\u000f\u0002\uffff\u0003"+
- "\u000f\u0004\uffff",
- DFA172_minS:
- "\u0001\u0010\u000b\u0012\u0001\uffff\u0002\u0012\u0002\uffff\u0003"+
- "\u0012\u0004\uffff",
- DFA172_maxS:
- "\u0001\u0116\u000b\u0107\u0001\uffff\u0002\u0107\u0002\uffff\u0003"+
- "\u0107\u0004\uffff",
- DFA172_acceptS:
- "\u000c\uffff\u0001\u0003\u0002\uffff\u0001\u0004\u0001\u0005\u0003"+
- "\uffff\u0001\u0001\u0001\u0002\u0001\u0006\u0001\u0007",
- DFA172_specialS:
- "\u0018\uffff}>",
- DFA172_transitionS: [
- "\u0006\u000f\u0001\u0003\u0008\u000f\u0001\u0007\u0009\u000f"+
- "\u0001\u0001\u0001\u0002\u000b\u000f\u0001\u000d\u000b\u000f"+
- "\u0001\u000b\u000b\u000f\u0001\u000a\u000b\u000f\u0001\u0006"+
- "\u0001\u0013\u0001\u000e\u0001\u0011\u0001\u0012\u0003\u000f"+
- "\u0001\u0005\u0001\u0004\u0005\u000f\u0001\u0008\u0017\u000f"+
- "\u0001\u0009\u0020\u000f\u0001\uffff\u003f\u000f\u0001\uffff"+
- "\u0001\u0010\u000b\uffff\u0001\u000c\u001f\uffff\u0001\u000f"+
- "\u0006\uffff\u0001\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0015\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u000c\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "",
- "",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
- "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
- "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
- "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
- "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
- "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
- "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
- "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
- "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
- "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
- "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
- "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
- "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
- "\u0001\u0017\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
- "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
- "\u0003\uffff\u0002\u000f",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA172_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_eotS),
- DFA172_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_eofS),
- DFA172_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA172_minS),
- DFA172_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA172_maxS),
- DFA172_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_acceptS),
- DFA172_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_specialS),
- DFA172_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA172_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA172 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 172;
- this.eot = XQueryParser.DFA172_eot;
- this.eof = XQueryParser.DFA172_eof;
- this.min = XQueryParser.DFA172_min;
- this.max = XQueryParser.DFA172_max;
- this.accept = XQueryParser.DFA172_accept;
- this.special = XQueryParser.DFA172_special;
- this.transition = XQueryParser.DFA172_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA172, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1337:1: p_ItemType : ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA195_eotS:
- "\u000f\uffff",
- DFA195_eofS:
- "\u000f\uffff",
- DFA195_minS:
- "\u0001\u0094\u0004\u004e\u000a\uffff",
- DFA195_maxS:
- "\u0001\u009f\u0002\u009d\u0001\u004f\u0001\u00a3\u000a\uffff",
- DFA195_acceptS:
- "\u0005\uffff\u0001\u0005\u0001\u000a\u0001\u0007\u0001\u0001\u0001"+
- "\u0006\u0001\u0002\u0001\u0003\u0001\u0008\u0001\u0009\u0001\u0004",
- DFA195_specialS:
- "\u000f\uffff}>",
- DFA195_transitionS: [
- "\u0001\u0005\u0001\u0002\u0001\uffff\u0001\u0001\u0002\uffff"+
- "\u0001\u0006\u0003\uffff\u0001\u0003\u0001\u0004",
- "\u0001\u0008\u0001\u0007\u004d\uffff\u0001\u0008",
- "\u0001\u000a\u0001\u0009\u004d\uffff\u0001\u000a",
- "\u0001\u000b\u0001\u000c",
- "\u0001\u000e\u0001\u000d\u0053\uffff\u0001\u000e",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA195_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_eotS),
- DFA195_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_eofS),
- DFA195_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA195_minS),
- DFA195_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA195_maxS),
- DFA195_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_acceptS),
- DFA195_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_specialS),
- DFA195_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA195_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA195 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 195;
- this.eot = XQueryParser.DFA195_eot;
- this.eof = XQueryParser.DFA195_eof;
- this.min = XQueryParser.DFA195_min;
- this.max = XQueryParser.DFA195_max;
- this.accept = XQueryParser.DFA195_accept;
- this.special = XQueryParser.DFA195_special;
- this.transition = XQueryParser.DFA195_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA195, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1697:1: pg_UpdateExpr : ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA230_eotS:
- "\u000a\uffff",
- DFA230_eofS:
- "\u000a\uffff",
- DFA230_minS:
- "\u0001\u001a\u0002\uffff\u0001\u00c4\u0006\uffff",
- DFA230_maxS:
- "\u0001\u00cb\u0002\uffff\u0001\u00cb\u0006\uffff",
- DFA230_acceptS:
- "\u0001\uffff\u0001\u0001\u0001\u0002\u0001\uffff\u0001\u0003\u0001"+
- "\u0004\u0001\u0005\u0001\u0006\u0001\u0007\u0001\u0008",
- DFA230_specialS:
- "\u000a\uffff}>",
- DFA230_transitionS: [
- "\u0001\u0006\u0036\uffff\u0001\u0009\u0057\uffff\u0001\u0007"+
- "\u000a\uffff\u0001\u0001\u0001\uffff\u0001\u0006\u0001\uffff"+
- "\u0001\u0003\u000b\uffff\u0001\u0005\u0001\u0008\u0001\u0004"+
- "\u0001\uffff\u0001\u0006\u0002\uffff\u0001\u0002",
- "",
- "",
- "\u0001\u0005\u0001\u0008\u0001\u0004\u0004\uffff\u0001\u0002",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA230_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_eotS),
- DFA230_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_eofS),
- DFA230_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA230_minS),
- DFA230_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA230_maxS),
- DFA230_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_acceptS),
- DFA230_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_specialS),
- DFA230_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA230_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA230 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 230;
- this.eot = XQueryParser.DFA230_eot;
- this.eof = XQueryParser.DFA230_eof;
- this.min = XQueryParser.DFA230_min;
- this.max = XQueryParser.DFA230_max;
- this.accept = XQueryParser.DFA230_accept;
- this.special = XQueryParser.DFA230_special;
- this.transition = XQueryParser.DFA230_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA230, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1932:1: p_FTMatchOption : ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA249_eotS:
- "\u0011\uffff",
- DFA249_eofS:
- "\u0011\uffff",
- DFA249_minS:
- "\u0001\u0010\u0001\uffff\u0001\u0010\u0005\u0012\u0001\uffff\u0001"+
- "\u0012\u0001\u00e8\u0001\u0010\u0001\u0004\u0001\u0012\u0001\u0004\u0001"+
- "\u0010\u0001\u0012",
- DFA249_maxS:
- "\u0001\u0122\u0001\uffff\u0001\u0116\u0005\u0107\u0001\uffff\u0001"+
- "\u0107\u0001\u00e8\u0001\u0116\u0001\u015c\u0001\u0107\u0001\u015c\u0001"+
- "\u0116\u0001\u0107",
- DFA249_acceptS:
- "\u0001\uffff\u0001\u0001\u0006\uffff\u0001\u0002\u0008\uffff",
- DFA249_specialS:
- "\u0011\uffff}>",
- DFA249_transitionS: [
- "\u0061\u0001\u0001\u0007\u005d\u0001\u0001\u0004\u0001\u0005"+
- "\u0001\u0006\u0002\u0001\u0001\u0003\u000d\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0002\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0004\uffff\u0001\u0008"+
- "\u0004\uffff\u0004\u0001\u0005\uffff\u0002\u0001\u0001\uffff"+
- "\u0002\u0001\u000c\uffff\u0002\u0001\u0002\uffff\u0002\u0001"+
- "\u0002\uffff\u0001\u0001\u0006\uffff\u0006\u0001",
- "",
- "\u0092\u0009\u0001\uffff\u003f\u0009\u002d\uffff\u0001\u000a"+
- "\u0006\uffff\u0001\u0009",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
- "\u0001\u0001\u0001\u0008\u0006\uffff\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001\u0002\uffff"+
- "\u0001\u0001\u0003\uffff\u0002\u0001",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002a\uffff"+
- "\u0001\u0008\u000f\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
- "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002a\uffff"+
- "\u0001\u0008\u000f\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
- "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002b\uffff"+
- "\u0001\u0008\u000e\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
- "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
- "\u0002\u0001\u0001\uffff\u0001\u0008\u0004\uffff\u0001\u0001"+
- "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
- "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
- "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
- "",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
- "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
- "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
- "\u000c\u0001\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u0001",
- "\u0001\u000c",
- "\u0092\u000d\u0001\uffff\u003f\u000d\u0034\uffff\u0001\u000d",
- "\u00e4\u000e\u0001\uffff\u0001\u000f\u0007\u000e\u0001\uffff"+
- "\u006b\u000e",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
- "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
- "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
- "\u000c\u0001\u0006\uffff\u0002\u0001",
- "\u00e4\u000e\u0001\uffff\u0001\u000f\u0007\u000e\u0001\uffff"+
- "\u006b\u000e",
- "\u0092\u0010\u0001\uffff\u003f\u0010\u0034\uffff\u0001\u0010",
- "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
- "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
- "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
- "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
- "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
- "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
- "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
- "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
- "\u000c\u0001\u0006\uffff\u0002\u0001"
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA249_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_eotS),
- DFA249_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_eofS),
- DFA249_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA249_minS),
- DFA249_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA249_maxS),
- DFA249_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_acceptS),
- DFA249_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_specialS),
- DFA249_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA249_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA249 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 249;
- this.eot = XQueryParser.DFA249_eot;
- this.eof = XQueryParser.DFA249_eof;
- this.min = XQueryParser.DFA249_min;
- this.max = XQueryParser.DFA249_max;
- this.accept = XQueryParser.DFA249_accept;
- this.special = XQueryParser.DFA249_special;
- this.transition = XQueryParser.DFA249_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA249, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "2046:1: p_Hybrid[strict, allowConcat] : ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement );";
- },
- dummy: null
-});
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA265_eotS:
- "\u000c\uffff",
- DFA265_eofS:
- "\u0001\uffff\u0002\u0003\u0001\uffff\u0006\u0003\u0002\uffff",
- DFA265_minS:
- "\u0001\u0010\u0002\u0012\u0001\uffff\u0006\u0012\u0002\uffff",
- DFA265_maxS:
- "\u0001\u0122\u0002\u0107\u0001\uffff\u0006\u0107\u0002\uffff",
- DFA265_acceptS:
- "\u0003\uffff\u0001\u0002\u0006\uffff\u0001\u0001\u0001\u0003",
- DFA265_specialS:
- "\u0004\uffff\u0001\u0002\u0001\u0004\u0001\u0005\u0001\u0001\u0001"+
- "\u0003\u0001\u0000\u0002\uffff}>",
- DFA265_transitionS: [
- "\u0020\u0003\u0001\u0002\u0034\u0003\u0001\u0001\u002e\u0003"+
- "\u0001\u0008\u0001\u0005\u0001\u0003\u0001\u0004\u0002\u0003"+
- "\u0001\u0009\u0003\u0003\u0001\u0006\u0001\u0007\u0042\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0001\uffff\u0001\u0003\u0009\uffff\u0004\u0003"+
- "\u0005\uffff\u0002\u0003\u0001\uffff\u0002\u0003\u000c\uffff"+
- "\u0002\u0003\u0002\uffff\u0002\u0003\u0002\uffff\u0001\u0003"+
- "\u0006\uffff\u0006\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
- "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
- "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
- "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
- "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
- "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
- "\u0003\u0003\u0001\u000a\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
- "\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
- "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
- "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
- "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
- "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
- "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
- "\u0003\u0003\u0001\u000a\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
- "\u0001\u0003\u0003\uffff\u0002\u0003",
- "",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
- "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
- "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
- "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\u000b\u0006\uffff\u0001\u0003"+
- "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
- "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
- "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
- "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
- "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\u000b\u0006\uffff\u0001\u0003"+
- "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
- "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
- "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
- "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
- "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0007\uffff\u0001\u0003\u0002\uffff"+
- "\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003"+
- "\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
- "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
- "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
- "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0006\uffff\u0001\u000b\u0001\u0003"+
- "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
- "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
- "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
- "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
- "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
- "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
- "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
- "\u0003\u0003\u0001\u000b\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
- "\u0001\u0003\u0003\uffff\u0002\u0003",
- "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
- "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
- "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0003\uffff"+
- "\u0001\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
- "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
- "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
- "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
- "\u0003\uffff\u0001\u0003\u0007\uffff\u0001\u0003\u0002\uffff"+
- "\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
- "\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
- "\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003"+
- "\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XQueryParser, {
- DFA265_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_eotS),
- DFA265_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_eofS),
- DFA265_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA265_minS),
- DFA265_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA265_maxS),
- DFA265_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_acceptS),
- DFA265_special:
- org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_specialS),
- DFA265_transition: (function() {
- var a = [],
- i,
- numStates = XQueryParser.DFA265_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_transitionS[i]));
- }
- return a;
- })()
-});
-
-XQueryParser.DFA265 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 265;
- this.eot = XQueryParser.DFA265_eot;
- this.eof = XQueryParser.DFA265_eof;
- this.min = XQueryParser.DFA265_min;
- this.max = XQueryParser.DFA265_max;
- this.accept = XQueryParser.DFA265_accept;
- this.special = XQueryParser.DFA265_special;
- this.transition = XQueryParser.DFA265_transition;
-};
-
-org.antlr.lang.extend(XQueryParser.DFA265, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "2207:1: p_ExprSimple : ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA265_9 = input.LA(1);
-
-
- var index265_9 = input.index();
- input.rewind();
- s = -1;
- if ( (LA265_9==JSON) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_9==EOF||(LA265_9>=AND && LA265_9<=AT)||(LA265_9>=CASE && LA265_9<=CASTABLE)||LA265_9==COLLATION||LA265_9==DEFAULT||(LA265_9>=DESCENDING && LA265_9<=DIV)||LA265_9==EMPTY||LA265_9==EQ||LA265_9==EXCEPT||LA265_9==FOR||LA265_9==GE||(LA265_9>=GT && LA265_9<=IDIV)||(LA265_9>=INSTANCE && LA265_9<=IS)||LA265_9==LE||(LA265_9>=LET && LA265_9<=MOD)||LA265_9==NE||(LA265_9>=OR && LA265_9<=ORDER)||(LA265_9>=RETURN && LA265_9<=SATISFIES)||LA265_9==STABLE||(LA265_9>=TO && LA265_9<=TREAT)||LA265_9==UNION||LA265_9==WHERE||LA265_9==COUNT||(LA265_9>=END && LA265_9<=GROUP)||LA265_9==ONLY||LA265_9==START||(LA265_9>=AFTER && LA265_9<=BEFORE)||LA265_9==INTO||LA265_9==MODIFY||LA265_9==WITH||LA265_9==CONTAINS||(LA265_9>=CONCAT && LA265_9<=RPAREN)||LA265_9==R_UNION_BRACKET||(LA265_9>=RBRACKET && LA265_9<=EQUAL)||LA265_9==NOTEQUAL||LA265_9==HASH||LA265_9==COMMA||(LA265_9>=STAR && LA265_9<=BANG)||LA265_9==COLON||(LA265_9>=SEMICOLON && LA265_9<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_9);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA265_7 = input.LA(1);
-
-
- var index265_7 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA265_7>=NODE && LA265_7<=JSON)||LA265_7==VALUE) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_7==EOF||(LA265_7>=AND && LA265_7<=AT)||(LA265_7>=CASE && LA265_7<=CASTABLE)||LA265_7==COLLATION||LA265_7==DEFAULT||(LA265_7>=DESCENDING && LA265_7<=DIV)||LA265_7==EMPTY||LA265_7==EQ||LA265_7==EXCEPT||LA265_7==FOR||LA265_7==GE||(LA265_7>=GT && LA265_7<=IDIV)||(LA265_7>=INSTANCE && LA265_7<=IS)||LA265_7==LE||(LA265_7>=LET && LA265_7<=MOD)||LA265_7==NE||(LA265_7>=OR && LA265_7<=ORDER)||(LA265_7>=RETURN && LA265_7<=SATISFIES)||LA265_7==STABLE||(LA265_7>=TO && LA265_7<=TREAT)||LA265_7==UNION||LA265_7==WHERE||LA265_7==COUNT||(LA265_7>=END && LA265_7<=GROUP)||LA265_7==ONLY||LA265_7==START||(LA265_7>=AFTER && LA265_7<=BEFORE)||LA265_7==INTO||LA265_7==MODIFY||LA265_7==WITH||LA265_7==CONTAINS||(LA265_7>=CONCAT && LA265_7<=RPAREN)||LA265_7==R_UNION_BRACKET||(LA265_7>=RBRACKET && LA265_7<=EQUAL)||LA265_7==NOTEQUAL||LA265_7==HASH||LA265_7==COMMA||(LA265_7>=STAR && LA265_7<=BANG)||LA265_7==COLON||(LA265_7>=SEMICOLON && LA265_7<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_7);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA265_4 = input.LA(1);
-
-
- var index265_4 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA265_4>=NODE && LA265_4<=JSON)||LA265_4==NODES) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_4==EOF||(LA265_4>=AND && LA265_4<=AT)||(LA265_4>=CASE && LA265_4<=CASTABLE)||LA265_4==COLLATION||LA265_4==DEFAULT||(LA265_4>=DESCENDING && LA265_4<=DIV)||LA265_4==EMPTY||LA265_4==EQ||LA265_4==EXCEPT||LA265_4==FOR||LA265_4==GE||(LA265_4>=GT && LA265_4<=IDIV)||(LA265_4>=INSTANCE && LA265_4<=IS)||LA265_4==LE||(LA265_4>=LET && LA265_4<=MOD)||LA265_4==NE||(LA265_4>=OR && LA265_4<=ORDER)||(LA265_4>=RETURN && LA265_4<=SATISFIES)||LA265_4==STABLE||(LA265_4>=TO && LA265_4<=TREAT)||LA265_4==UNION||LA265_4==WHERE||LA265_4==COUNT||(LA265_4>=END && LA265_4<=GROUP)||LA265_4==ONLY||LA265_4==START||(LA265_4>=AFTER && LA265_4<=BEFORE)||LA265_4==INTO||LA265_4==MODIFY||LA265_4==WITH||LA265_4==CONTAINS||(LA265_4>=CONCAT && LA265_4<=RPAREN)||LA265_4==R_UNION_BRACKET||(LA265_4>=RBRACKET && LA265_4<=EQUAL)||LA265_4==NOTEQUAL||LA265_4==HASH||LA265_4==COMMA||(LA265_4>=STAR && LA265_4<=BANG)||LA265_4==COLON||(LA265_4>=SEMICOLON && LA265_4<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_4);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA265_8 = input.LA(1);
-
-
- var index265_8 = input.index();
- input.rewind();
- s = -1;
- if ( (LA265_8==DOLLAR) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_8==EOF||(LA265_8>=AND && LA265_8<=AT)||(LA265_8>=CASE && LA265_8<=CASTABLE)||LA265_8==COLLATION||LA265_8==DEFAULT||(LA265_8>=DESCENDING && LA265_8<=DIV)||LA265_8==EMPTY||LA265_8==EQ||LA265_8==EXCEPT||LA265_8==FOR||LA265_8==GE||(LA265_8>=GT && LA265_8<=IDIV)||(LA265_8>=INSTANCE && LA265_8<=IS)||LA265_8==LE||(LA265_8>=LET && LA265_8<=MOD)||LA265_8==NE||(LA265_8>=OR && LA265_8<=ORDER)||(LA265_8>=RETURN && LA265_8<=SATISFIES)||LA265_8==STABLE||(LA265_8>=TO && LA265_8<=TREAT)||LA265_8==UNION||LA265_8==WHERE||LA265_8==COUNT||(LA265_8>=END && LA265_8<=GROUP)||LA265_8==ONLY||LA265_8==START||(LA265_8>=AFTER && LA265_8<=BEFORE)||LA265_8==INTO||LA265_8==MODIFY||LA265_8==WITH||LA265_8==CONTAINS||(LA265_8>=CONCAT && LA265_8<=RPAREN)||LA265_8==R_UNION_BRACKET||(LA265_8>=RBRACKET && LA265_8<=EQUAL)||LA265_8==NOTEQUAL||LA265_8==HASH||LA265_8==COMMA||(LA265_8>=STAR && LA265_8<=BANG)||LA265_8==COLON||(LA265_8>=SEMICOLON && LA265_8<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_8);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA265_5 = input.LA(1);
-
-
- var index265_5 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA265_5>=NODE && LA265_5<=JSON)||LA265_5==NODES) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_5==EOF||(LA265_5>=AND && LA265_5<=AT)||(LA265_5>=CASE && LA265_5<=CASTABLE)||LA265_5==COLLATION||LA265_5==DEFAULT||(LA265_5>=DESCENDING && LA265_5<=DIV)||LA265_5==EMPTY||LA265_5==EQ||LA265_5==EXCEPT||LA265_5==FOR||LA265_5==GE||(LA265_5>=GT && LA265_5<=IDIV)||(LA265_5>=INSTANCE && LA265_5<=IS)||LA265_5==LE||(LA265_5>=LET && LA265_5<=MOD)||LA265_5==NE||(LA265_5>=OR && LA265_5<=ORDER)||(LA265_5>=RETURN && LA265_5<=SATISFIES)||LA265_5==STABLE||(LA265_5>=TO && LA265_5<=TREAT)||LA265_5==UNION||LA265_5==WHERE||LA265_5==COUNT||(LA265_5>=END && LA265_5<=GROUP)||LA265_5==ONLY||LA265_5==START||(LA265_5>=AFTER && LA265_5<=BEFORE)||LA265_5==INTO||LA265_5==MODIFY||LA265_5==WITH||LA265_5==CONTAINS||(LA265_5>=CONCAT && LA265_5<=RPAREN)||LA265_5==R_UNION_BRACKET||(LA265_5>=RBRACKET && LA265_5<=EQUAL)||LA265_5==NOTEQUAL||LA265_5==HASH||LA265_5==COMMA||(LA265_5>=STAR && LA265_5<=BANG)||LA265_5==COLON||(LA265_5>=SEMICOLON && LA265_5<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_5);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA265_6 = input.LA(1);
-
-
- var index265_6 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA265_6>=NODE && LA265_6<=JSON)) && ((this.lc(XQU)))) {s = 11;}
-
- else if ( (LA265_6==EOF||(LA265_6>=AND && LA265_6<=AT)||(LA265_6>=CASE && LA265_6<=CASTABLE)||LA265_6==COLLATION||LA265_6==DEFAULT||(LA265_6>=DESCENDING && LA265_6<=DIV)||LA265_6==EMPTY||LA265_6==EQ||LA265_6==EXCEPT||LA265_6==FOR||LA265_6==GE||(LA265_6>=GT && LA265_6<=IDIV)||(LA265_6>=INSTANCE && LA265_6<=IS)||LA265_6==LE||(LA265_6>=LET && LA265_6<=MOD)||LA265_6==NE||(LA265_6>=OR && LA265_6<=ORDER)||(LA265_6>=RETURN && LA265_6<=SATISFIES)||LA265_6==STABLE||(LA265_6>=TO && LA265_6<=TREAT)||LA265_6==UNION||LA265_6==WHERE||LA265_6==COUNT||(LA265_6>=END && LA265_6<=GROUP)||LA265_6==ONLY||LA265_6==START||(LA265_6>=AFTER && LA265_6<=BEFORE)||LA265_6==INTO||LA265_6==MODIFY||LA265_6==WITH||LA265_6==CONTAINS||(LA265_6>=CONCAT && LA265_6<=RPAREN)||LA265_6==R_UNION_BRACKET||(LA265_6>=RBRACKET && LA265_6<=EQUAL)||LA265_6==NOTEQUAL||LA265_6==HASH||LA265_6==COMMA||(LA265_6>=STAR && LA265_6<=BANG)||LA265_6==COLON||(LA265_6>=SEMICOLON && LA265_6<=VBAR)) ) {s = 3;}
-
-
- input.seek(index265_6);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 265, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-
-
-// public class variables
-org.antlr.lang.augmentObject(XQueryParser, {
- tokenNames: ["<invalid>", "<EOR>", "<DOWN>", "<UP>", "L_QuotAttrContentChar", "L_AposAttrContentChar", "L_ElementContentChar", "L_CDataSection", "L_PredefinedEntityRef", "L_CharRef", "ESCAPE_LBRACKET", "ESCAPE_RBRACKET", "ESCAPE_APOS", "ESCAPE_QUOT", "CDATA_START", "CDATA_END", "ANCESTOR", "ANCESTOR_OR_SELF", "AND", "AS", "ASCENDING", "AT", "ATTRIBUTE", "BASE_URI", "BOUNDARY_SPACE", "BY", "CASE", "CAST", "CASTABLE", "CHILD", "COLLATION", "COMMENT", "CONSTRUCTION", "COPY_NAMESPACES", "DECLARE", "DEFAULT", "DESCENDANT", "DESCENDANT_OR_SELF", "DESCENDING", "DIV", "DOCUMENT", "DOCUMENT_NODE", "ELEMENT", "ELSE", "EMPTY", "EMPTY_SEQUENCE", "ENCODING", "EQ", "EVERY", "EXCEPT", "EXTERNAL", "FOLLOWING", "FOLLOWING_SIBLING", "FOR", "FUNCTION", "GE", "GREATEST", "GT", "IDIV", "IF", "IMPORT", "IN", "INHERIT", "INSTANCE", "INTERSECT", "IS", "ITEM", "LAX", "LE", "LEAST", "LET", "LT", "MOD", "MODULE", "NAMESPACE", "NE", "NO_INHERIT", "NO_PRESERVE", "NODE", "JSON", "OF", "OPTION", "OR", "ORDER", "ORDERED", "ORDERING", "PARENT", "PRECEDING", "PRECEDING_SIBLING", "PRESERVE", "PROCESSING_INSTRUCTION", "STRUCTURED_ITEM", "JSON_ITEM", "OBJECT", "ARRAY", "RETURN", "SATISFIES", "SCHEMA", "SCHEMA_ATTRIBUTE", "SCHEMA_ELEMENT", "SELF", "SOME", "STABLE", "STRICT", "STRIP", "TEXT", "THEN", "TO", "TREAT", "TYPESWITCH", "UNION", "UNORDERED", "VALIDATE", "VARIABLE", "VERSION", "WHERE", "XQUERY", "ALLOWING", "CATCH", "CONTEXT", "COUNT", "DECIMAL_FORMAT", "DECIMAL_SEPARATOR", "DIGIT", "END", "GROUP", "GROUPING_SEPARATOR", "INFINITY", "MINUS_SIGN", "NAMESPACE_NODE", "NAN", "NEXT", "ONLY", "PATTERN_SEPARATOR", "PERCENT", "PER_MILLE", "PREVIOUS", "SLIDING", "START", "SWITCH", "TRY", "TUMBLING", "TYPE", "WHEN", "WINDOW", "ZERO_DIGIT", "AFTER", "BEFORE", "COPY", "DELETE", "FIRST", "INSERT", "INTO", "POSITION", "APPEND", "LAST", "MODIFY", "NODES", "RENAME", "REPLACE", "REVALIDATION", "SKIP", "UPDATING", "VALUE", "WITH", "ALL", "ANY", "CONTAINS", "CONTENT", "DIACRITICS", "DIFFERENT", "DISTANCE", "ENTIRE", "EXACTLY", "FROM", "FT_OPTION", "FTAND", "FTNOT", "FTOR", "INSENSITIVE", "LANGUAGE", "LEVELS", "LOWERCASE", "MOST", "NO", "NOT", "OCCURS", "PARAGRAPH", "PARAGRAPHS", "PHRASE", "RELATIONSHIP", "SAME", "SCORE", "SENSITIVE", "SENTENCE", "SENTENCES", "STEMMING", "STOP", "THESAURUS", "TIMES", "UPPERCASE", "USING", "WEIGHT", "WILDCARDS", "WITHOUT", "WORD", "WORDS", "BREAK", "CONTINUE", "EXIT", "LOOP", "RETURNING", "WHILE", "CHECK", "COLLECTION", "CONSTRAINT", "FOREACH", "FOREIGN", "INDEX", "INTEGRITY", "KEY", "ON", "UNIQUE", "AMP_ER", "APOS_ER", "QUOT_ER", "CONCAT", "LPAREN", "RPAREN", "DOLLAR", "L_UNION_BRACKET", "R_UNION_BRACKET", "LBRACKET", "RBRACKET", "LSQUARE", "RSQUARE", "EQUAL", "BIND", "NOTEQUAL", "ANN_PERCENT", "HASH", "AMP", "COMMA", "QUESTION", "STAR", "PLUS", "MINUS", "SMALLER", "GREATER", "SMALLEREQ", "GREATEREQ", "SMALLER_SMALLER", "GREATER_GREATER", "SLASH", "SLASH_SLASH", "BANG", "DOT", "DOT_DOT", "COLON", "COLON_COLON", "EMPTY_CLOSE_TAG", "CLOSE_TAG", "SEMICOLON", "VBAR", "PRAGMA_START", "PRAGMA_END", "XML_COMMENT_START", "XML_COMMENT_END", "PI_START", "PI_END", "ATTR_SIGN", "Q", "CHARREF_DEC", "CHARREF_HEX", "APOS", "QUOT", "NCNameStartChar", "NCNameChar", "L_NCName", "Letter", "HexLetter", "Digit", "Digits", "S", "SU", "L_Pragma", "L_DirCommentConstructor", "L_DirPIConstructor", "L_IntegerLiteral", "L_DecimalLiteral", "L_DoubleLiteral", "L_Comment", "L_AnyChar", "L_QuotStringLiteralChar", "L_AposStringLiteralChar", "LibraryModule", "MainModule", "VersionDecl", "VersionDeclEncoding", "VersionDeclVersion", "ModuleDecl", "Prolog", "DefaultNamespaceDecls", "DefaultNamespaceDecl", "Setters", "Setter", "NamespaceDecls", "NamespaceDecl", "Imports", "FTOptionDecls", "SchemaImport", "SchemaPrefix", "NamespaceName", "DefaultElementNamespace", "AtHints", "ModuleImport", "BaseURIDecl", "OrderedDecls", "VarDecl", "VarType", "VarValue", "VarDefaultValue", "VarVariableDecl", "FunctionDecl", "ParamList", "ReturnType", "OptionDecl", "TypeDeclaration", "Param", "EnclosedExpr", "QueryBody", "UnaryExpr", "DirElemConstructor", "DirAttributeList", "DirAttributeValue", "DirElemContent", "CommonContent", "SequenceType", "EmptySequenceTest", "KindTest", "ItemTest", "FunctionTest", "AtomicType", "AtomicOrUnionType", "StringLiteral", "ElementContentChar", "AttributeValueChar", "QName", "BlockExpr"],
- FOLLOW_p_VersionDecl_in_p_Module503: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_LibraryModule_in_p_Module536: new org.antlr.runtime.BitSet([0x00000000, 0x00000000]),
- FOLLOW_p_MainModule_in_p_Module559: new org.antlr.runtime.BitSet([0x00000000, 0x00000000]),
- FOLLOW_EOF_in_p_Module583: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_XQUERY_in_p_VersionDecl611: new org.antlr.runtime.BitSet([0x00000000, 0x00004000,0x00000000, 0x00040000]),
- FOLLOW_ENCODING_in_p_VersionDecl619: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_VersionDecl625: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_VERSION_in_p_VersionDecl646: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_VersionDecl652: new org.antlr.runtime.BitSet([0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_ENCODING_in_p_VersionDecl657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_VersionDecl663: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_VersionDecl669: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_Prolog_in_p_MainModule735: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_pm_QueryBody_in_p_MainModule737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ModuleDecl_in_p_LibraryModule793: new org.antlr.runtime.BitSet([0x00000000, 0x10000004]),
- FOLLOW_pm_Prolog_in_p_LibraryModule795: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_MODULE_in_p_ModuleDecl851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_NAMESPACE_in_p_ModuleDecl855: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_p_ModuleDecl859: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_p_ModuleDecl861: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_ModuleDecl863: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_ModuleDecl865: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_DefaultNamespaceDecl_in_pm_Prolog924: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
- FOLLOW_p_Setter_in_pm_Prolog930: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
- FOLLOW_pm_NamespaceDecl_in_pm_Prolog936: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
- FOLLOW_p_Import_in_pm_Prolog942: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
- FOLLOW_pm_FTOptionDecl_in_pm_Prolog948: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
- FOLLOW_pg_OrderedDecl_in_pm_Prolog955: new org.antlr.runtime.BitSet([0x00000002, 0x00000004]),
- FOLLOW_pm_ContextItemDecl_in_pg_OrderedDecl1270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_AnnotatedDecl_in_pg_OrderedDecl1282: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_OptionDecl_in_pg_OrderedDecl1294: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_BoundarySpaceDecl_in_p_Setter1324: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_DefaultCollationDecl_in_p_Setter1336: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_BaseURIDecl_in_p_Setter1348: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_ConstructionDecl_in_p_Setter1360: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_OrderingModeDecl_in_p_Setter1372: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_EmptyOrderDecl_in_p_Setter1384: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_RevalidationDecl_in_p_Setter1399: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CopyNamespacesDecl_in_p_Setter1411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_DecimalFormatDecl_in_p_Setter1423: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_BoundarySpaceDecl1455: new org.antlr.runtime.BitSet([0x01000000, 0x00000000]),
- FOLLOW_BOUNDARY_SPACE_in_pm_BoundarySpaceDecl1461: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02000000, 0x00000100]),
- FOLLOW_PRESERVE_in_pm_BoundarySpaceDecl1470: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_STRIP_in_pm_BoundarySpaceDecl1480: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_BoundarySpaceDecl1487: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_DefaultCollationDecl1515: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
- FOLLOW_DEFAULT_in_pm_DefaultCollationDecl1521: new org.antlr.runtime.BitSet([0x40000000, 0x00000000]),
- FOLLOW_COLLATION_in_pm_DefaultCollationDecl1527: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_DefaultCollationDecl1531: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_DefaultCollationDecl1533: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_BaseURIDecl1569: new org.antlr.runtime.BitSet([0x00800000, 0x00000000]),
- FOLLOW_BASE_URI_in_pm_BaseURIDecl1575: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_BaseURIDecl1581: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_BaseURIDecl1583: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_ConstructionDecl1636: new org.antlr.runtime.BitSet([0x00000000, 0x00000001]),
- FOLLOW_CONSTRUCTION_in_pm_ConstructionDecl1642: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02000000, 0x00000100]),
- FOLLOW_STRIP_in_pm_ConstructionDecl1651: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_PRESERVE_in_pm_ConstructionDecl1657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_ConstructionDecl1664: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_OrderingModeDecl1692: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00200000, 0x00000000]),
- FOLLOW_ORDERING_in_pm_OrderingModeDecl1698: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00100000, 0x00008000]),
- FOLLOW_ORDERED_in_pm_OrderingModeDecl1707: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_UNORDERED_in_pm_OrderingModeDecl1713: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_OrderingModeDecl1720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_EmptyOrderDecl1748: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
- FOLLOW_DEFAULT_in_pm_EmptyOrderDecl1754: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00080000, 0x00000000]),
- FOLLOW_ORDER_in_pm_EmptyOrderDecl1760: new org.antlr.runtime.BitSet([0x00000000, 0x00001000]),
- FOLLOW_EMPTY_in_pm_EmptyOrderDecl1766: new org.antlr.runtime.BitSet([0x00000000, 0x01000000,0x00000020, 0x00000000]),
- FOLLOW_GREATEST_in_pm_EmptyOrderDecl1775: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_LEAST_in_pm_EmptyOrderDecl1781: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_EmptyOrderDecl1788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_CopyNamespacesDecl1816: new org.antlr.runtime.BitSet([0x00000000, 0x00000002]),
- FOLLOW_COPY_NAMESPACES_in_pm_CopyNamespacesDecl1822: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02002000, 0x00000000]),
- FOLLOW_p_PreserveMode_in_pm_CopyNamespacesDecl1826: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_pm_CopyNamespacesDecl1828: new org.antlr.runtime.BitSet([0x00000000, 0x40000000,0x00001000, 0x00000000]),
- FOLLOW_p_InheritMode_in_pm_CopyNamespacesDecl1830: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_CopyNamespacesDecl1832: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PRESERVE_in_p_PreserveMode1861: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NO_PRESERVE_in_p_PreserveMode1867: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INHERIT_in_p_InheritMode1899: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NO_INHERIT_in_p_InheritMode1905: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_DecimalFormatDecl1944: new org.antlr.runtime.BitSet([0x00000000, 0x00000008,0x00000000, 0x02000000]),
- FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1952: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_pm_DecimalFormatDecl1956: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_DEFAULT_in_pm_DecimalFormatDecl1964: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x02000000]),
- FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1970: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_p_DFPropertyName_in_pm_DecimalFormatDecl1977: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_pm_DecimalFormatDecl1979: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_DecimalFormatDecl1981: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_DecimalFormatDecl1985: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECIMAL_SEPARATOR_in_p_DFPropertyName2014: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GROUPING_SEPARATOR_in_p_DFPropertyName2020: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INFINITY_in_p_DFPropertyName2026: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_MINUS_SIGN_in_p_DFPropertyName2032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NAN_in_p_DFPropertyName2038: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PERCENT_in_p_DFPropertyName2044: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PER_MILLE_in_p_DFPropertyName2050: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ZERO_DIGIT_in_p_DFPropertyName2056: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DIGIT_in_p_DFPropertyName2062: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PATTERN_SEPARATOR_in_p_DFPropertyName2068: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_SchemaImport_in_p_Import2097: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_ModuleImport_in_p_Import2101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_IMPORT_in_pm_SchemaImport2137: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000002]),
- FOLLOW_SCHEMA_in_pm_SchemaImport2143: new org.antlr.runtime.BitSet([0x00000000, 0x00000008,0x00000400, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_SchemaPrefix_in_pm_SchemaImport2149: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_SchemaImport2154: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_AT_in_pm_SchemaImport2159: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_SchemaImport2165: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_COMMA_in_pm_SchemaImport2168: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_SchemaImport2172: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_SchemaImport2178: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NAMESPACE_in_p_SchemaPrefix2248: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_p_SchemaPrefix2254: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_p_SchemaPrefix2256: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DEFAULT_in_p_SchemaPrefix2295: new org.antlr.runtime.BitSet([0x00000000, 0x00000400]),
- FOLLOW_ELEMENT_in_p_SchemaPrefix2301: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_NAMESPACE_in_p_SchemaPrefix2307: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_IMPORT_in_pm_ModuleImport2357: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000200, 0x00000000]),
- FOLLOW_MODULE_in_pm_ModuleImport2363: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_NAMESPACE_in_pm_ModuleImport2370: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_pm_ModuleImport2376: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_pm_ModuleImport2378: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_ModuleImport2384: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_AT_in_pm_ModuleImport2389: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_ModuleImport2395: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_COMMA_in_pm_ModuleImport2398: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_ModuleImport2402: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_ModuleImport2408: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_NamespaceDecl2477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_NAMESPACE_in_pm_NamespaceDecl2483: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_pm_NamespaceDecl2489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_pm_NamespaceDecl2491: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_NamespaceDecl2495: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_NamespaceDecl2497: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_DefaultNamespaceDecl2554: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
- FOLLOW_DEFAULT_in_pm_DefaultNamespaceDecl2560: new org.antlr.runtime.BitSet([0x00000000, 0x00400400]),
- FOLLOW_ELEMENT_in_pm_DefaultNamespaceDecl2567: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_FUNCTION_in_pm_DefaultNamespaceDecl2573: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_NAMESPACE_in_pm_DefaultNamespaceDecl2580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_DefaultNamespaceDecl2584: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_DefaultNamespaceDecl2586: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_AnnotatedDecl2614: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00020000,0x00000000, 0x00000004,0x0C400000, 0x00008000]),
- FOLLOW_p_Annotation_in_pm_AnnotatedDecl2618: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00020000,0x00000000, 0x00000004,0x0C400000, 0x00008000]),
- FOLLOW_pg_AnnotatedDecl_in_pm_AnnotatedDecl2621: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_AnnotatedDecl2623: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_VarDecl_in_pg_AnnotatedDecl2647: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_FunctionDecl_in_pg_AnnotatedDecl2659: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CollectionDecl_in_pg_AnnotatedDecl2674: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_IndexDecl_in_pg_AnnotatedDecl2689: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ICDecl_in_pg_AnnotatedDecl2704: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ANN_PERCENT_in_p_Annotation2730: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_p_Annotation2732: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_Annotation2735: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_Literal_in_p_Annotation2737: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_Annotation2740: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_Literal_in_p_Annotation2742: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_RPAREN_in_p_Annotation2746: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_VARIABLE_in_p_VarDecl2776: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_VarDecl2782: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_p_VarDecl2786: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_p_TypeDeclaration_in_p_VarDecl2792: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_VarDecl2797: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_VarValue_in_p_VarDecl2801: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EXTERNAL_in_p_VarDecl2809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_VarDecl2814: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_VarDefaultValue_in_p_VarDecl2818: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_VarValue2897: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_VarDefaultValue2924: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_ContextItemDecl2953: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00800000]),
- FOLLOW_CONTEXT_in_pm_ContextItemDecl2959: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000004, 0x00000000]),
- FOLLOW_ITEM_in_pm_ContextItemDecl2965: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_AS_in_pm_ContextItemDecl2972: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_ItemType_in_pm_ContextItemDecl2976: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_pm_ContextItemDecl2982: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_VarValue_in_pm_ContextItemDecl2984: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_EXTERNAL_in_pm_ContextItemDecl2992: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000,0x00000040, 0x00000000]),
- FOLLOW_BIND_in_pm_ContextItemDecl2997: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_VarDefaultValue_in_pm_ContextItemDecl2999: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_ContextItemDecl3005: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_UPDATING_in_pm_FunctionDecl3038: new org.antlr.runtime.BitSet([0x00000000, 0x00400000]),
- FOLLOW_FUNCTION_in_pm_FunctionDecl3046: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_pg_FQName_in_pm_FunctionDecl3052: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_pm_FunctionDecl3054: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000030]),
- FOLLOW_p_ParamList_in_pm_FunctionDecl3058: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_pm_FunctionDecl3061: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_AS_in_pm_FunctionDecl3066: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_pm_FunctionDecl3072: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_FunctionDecl3077: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_FunctionDecl3081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_FunctionDecl3083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EXTERNAL_in_pm_FunctionDecl3089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Param_in_p_ParamList3166: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_ParamList3169: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_Param_in_p_ParamList3173: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_DOLLAR_in_p_Param3233: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_p_Param3237: new org.antlr.runtime.BitSet([0x00080002, 0x00000000]),
- FOLLOW_p_TypeDeclaration_in_p_Param3243: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EnclosedExpr_in_pm_FunctionBody3299: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_p_EnclosedExpr3326: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_EnclosedExpr3328: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_EnclosedExpr3331: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_OptionDecl3383: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00020000, 0x00000000]),
- FOLLOW_OPTION_in_pm_OptionDecl3389: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_pm_OptionDecl3393: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_pm_OptionDecl3395: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_OptionDecl3397: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Program_in_pm_QueryBody3426: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Expr_in_pm_QueryBody3438: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_Expr3474: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_Expr3490: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_Expr3492: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_p_FLWORHybrid_in_p_ExprSingle3559: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_IfHybrid_in_p_ExprSingle3589: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SwitchHybrid_in_p_ExprSingle3615: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TypeswitchHybrid_in_p_ExprSingle3637: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TryCatchHybrid_in_p_ExprSingle3664: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSimple_in_p_ExprSingle3677: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_InitialClause_in_p_FLWORHybrid3704: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
- FOLLOW_p_IntermediateClause_in_p_FLWORHybrid3706: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
- FOLLOW_p_ReturnHybrid_in_p_FLWORHybrid3709: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ForClause_in_p_InitialClause3736: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_LetClause_in_p_InitialClause3740: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_WindowClause_in_p_InitialClause3744: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_InitialClause_in_p_IntermediateClause3770: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_WhereClause_in_p_IntermediateClause3774: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_GroupByClause_in_p_IntermediateClause3778: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OrderByClause_in_p_IntermediateClause3782: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CountClause_in_p_IntermediateClause3786: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_RangeExpr_in_p_StringConcatExpr3807: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000004]),
- FOLLOW_CONCAT_in_p_StringConcatExpr3813: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_RangeExpr_in_p_StringConcatExpr3817: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000004]),
- FOLLOW_FOR_in_p_ForClause3844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_ForBinding_in_p_ForClause3848: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_ForClause3851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_ForBinding_in_p_ForClause3853: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_DOLLAR_in_p_ForBinding3883: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_ForBinding3887: new org.antlr.runtime.BitSet([0x00280000, 0x20000000,0x00000000, 0x00200000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
- FOLLOW_p_TypeDeclaration_in_p_ForBinding3891: new org.antlr.runtime.BitSet([0x00200000, 0x20000000,0x00000000, 0x00200000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
- FOLLOW_p_AllowingEmpty_in_p_ForBinding3894: new org.antlr.runtime.BitSet([0x00200000, 0x20000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
- FOLLOW_p_PositionalVar_in_p_ForBinding3897: new org.antlr.runtime.BitSet([0x00000000, 0x20000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
- FOLLOW_p_FTScoreVar_in_p_ForBinding3900: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_ForBinding3905: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ForBinding3909: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ALLOWING_in_p_AllowingEmpty3938: new org.antlr.runtime.BitSet([0x00000000, 0x00001000]),
- FOLLOW_EMPTY_in_p_AllowingEmpty3944: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_PositionalVar3974: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_PositionalVar3980: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_PositionalVar3984: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LET_in_p_LetClause4014: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000020]),
- FOLLOW_p_LetBinding_in_p_LetClause4018: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_LetClause4021: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000020]),
- FOLLOW_p_LetBinding_in_p_LetClause4023: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_DOLLAR_in_p_LetBinding4057: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_LetBinding4061: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_p_TypeDeclaration_in_p_LetBinding4065: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_p_FTScoreVar_in_p_LetBinding4071: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_LetBinding4075: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_LetBinding4077: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOR_in_p_WindowClause4106: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002200, 0x00000000]),
- FOLLOW_p_TumblingWindowClause_in_p_WindowClause4111: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SlidingWindowClause_in_p_WindowClause4115: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TUMBLING_in_p_TumblingWindowClause4152: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00010000, 0x00000000]),
- FOLLOW_WINDOW_in_p_TumblingWindowClause4158: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_TumblingWindowClause4164: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_TumblingWindowClause4168: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
- FOLLOW_p_TypeDeclaration_in_p_TumblingWindowClause4172: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_TumblingWindowClause4177: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_TumblingWindowClause4181: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_p_WindowStartCondition_in_p_TumblingWindowClause4184: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x10000000,0x00000010, 0x00000000]),
- FOLLOW_p_WindowEndCondition_in_p_TumblingWindowClause4186: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SLIDING_in_p_SlidingWindowClause4215: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00010000, 0x00000000]),
- FOLLOW_WINDOW_in_p_SlidingWindowClause4221: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_SlidingWindowClause4227: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_SlidingWindowClause4231: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
- FOLLOW_p_TypeDeclaration_in_p_SlidingWindowClause4235: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_SlidingWindowClause4240: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_SlidingWindowClause4244: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_p_WindowStartCondition_in_p_SlidingWindowClause4247: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x10000000,0x00000010, 0x00000000]),
- FOLLOW_p_WindowEndCondition_in_p_SlidingWindowClause4249: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_START_in_p_WindowStartCondition4278: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00008108, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_WindowVars_in_p_WindowStartCondition4282: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_WHEN_in_p_WindowStartCondition4286: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_WindowStartCondition4290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ONLY_in_p_WindowEndCondition4320: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x10000000]),
- FOLLOW_END_in_p_WindowEndCondition4328: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00008108, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_WindowVars_in_p_WindowEndCondition4332: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_WHEN_in_p_WindowEndCondition4336: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_WindowEndCondition4340: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOLLAR_in_p_WindowVars4370: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_CurrentItem_in_p_WindowVars4374: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000108, 0x00000000]),
- FOLLOW_p_PositionalVar_in_p_WindowVars4380: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000108, 0x00000000]),
- FOLLOW_PREVIOUS_in_p_WindowVars4386: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_WindowVars4390: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_PreviousItem_in_p_WindowVars4392: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_NEXT_in_p_WindowVars4399: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_WindowVars4403: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_NextItem_in_p_WindowVars4405: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_CurrentItem4433: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_PreviousItem4459: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_NextItem4485: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COUNT_in_p_CountClause4513: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_CountClause4519: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_CountClause4523: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WHERE_in_p_WhereClause4561: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_WhereClause4565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GROUP_in_p_GroupByClause4594: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
- FOLLOW_BY_in_p_GroupByClause4600: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_GroupingSpecList_in_p_GroupByClause4604: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4630: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_GroupingSpecList4633: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4635: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_p_GroupingVariable_in_p_GroupingSpec4663: new org.antlr.runtime.BitSet([0x40080002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_p_TypeDeclaration_in_p_GroupingSpec4666: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_GroupingSpec4669: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_GroupingSpec4671: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
- FOLLOW_COLLATION_in_p_GroupingSpec4679: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_GroupingSpec4683: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOLLAR_in_p_GroupingVariable4712: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_GroupingVariable4716: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ORDER_in_p_OrderByClause4748: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
- FOLLOW_BY_in_p_OrderByClause4752: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_STABLE_in_p_OrderByClause4760: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00080000, 0x00000000]),
- FOLLOW_ORDER_in_p_OrderByClause4764: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
- FOLLOW_BY_in_p_OrderByClause4768: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_OrderSpecList_in_p_OrderByClause4774: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OrderSpec_in_p_OrderSpecList4800: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_OrderSpecList4803: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_OrderSpec_in_p_OrderSpecList4805: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_p_ExprSingle_in_p_OrderSpec4833: new org.antlr.runtime.BitSet([0x40100000, 0x00001040]),
- FOLLOW_p_OrderModifier_in_p_OrderSpec4836: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ASCENDING_in_p_OrderModifier4865: new org.antlr.runtime.BitSet([0x40000002, 0x00001000]),
- FOLLOW_DESCENDING_in_p_OrderModifier4871: new org.antlr.runtime.BitSet([0x40000002, 0x00001000]),
- FOLLOW_EMPTY_in_p_OrderModifier4878: new org.antlr.runtime.BitSet([0x00000000, 0x01000000,0x00000020, 0x00000000]),
- FOLLOW_GREATEST_in_p_OrderModifier4883: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
- FOLLOW_LEAST_in_p_OrderModifier4889: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
- FOLLOW_COLLATION_in_p_OrderModifier4897: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_OrderModifier4899: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_RETURN_in_p_ReturnHybrid4932: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_ReturnHybrid4936: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SOME_in_p_QuantifiedExpr4966: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_EVERY_in_p_QuantifiedExpr4972: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_QuantifiedExpr4979: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_QuantifiedExpr4983: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
- FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr4987: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_QuantifiedExpr4992: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_QuantifiedExpr4996: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000001,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_QuantifiedExpr5000: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_QuantifiedExpr5004: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_p_QuantifiedExpr5008: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
- FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr5012: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_QuantifiedExpr5017: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5021: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000001,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_SATISFIES_in_p_QuantifiedExpr5028: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SWITCH_in_p_SwitchHybrid5062: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_SwitchHybrid5066: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_SwitchHybrid5068: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_SwitchHybrid5071: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
- FOLLOW_p_SwitchCaseHybrid_in_p_SwitchHybrid5073: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
- FOLLOW_DEFAULT_in_p_SwitchHybrid5079: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_SwitchHybrid5085: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_SwitchHybrid5089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_SwitchCaseHybrid5120: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseHybrid5124: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_SwitchCaseHybrid5130: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_SwitchCaseHybrid5134: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_SwitchCaseOperand5161: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TYPESWITCH_in_p_TypeswitchHybrid5191: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_TypeswitchHybrid5195: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_TypeswitchHybrid5197: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_TypeswitchHybrid5200: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
- FOLLOW_p_CaseHybrid_in_p_TypeswitchHybrid5202: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
- FOLLOW_DEFAULT_in_p_TypeswitchHybrid5208: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_TypeswitchHybrid5215: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_TypeswitchHybrid5219: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_TypeswitchHybrid5227: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_TypeswitchHybrid5231: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_CaseHybrid5261: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
- FOLLOW_DOLLAR_in_p_CaseHybrid5268: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_CaseHybrid5272: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_CaseHybrid5278: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceTypeUnion_in_p_CaseHybrid5284: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_CaseHybrid5288: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_CaseHybrid5292: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5319: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_VBAR_in_p_SequenceTypeUnion5322: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5324: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_IF_in_p_IfHybrid5355: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_IfHybrid5359: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_IfHybrid5361: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_IfHybrid5364: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_THEN_in_p_IfHybrid5368: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_IfHybrid5372: new org.antlr.runtime.BitSet([0x00000000, 0x00000800]),
- FOLLOW_ELSE_in_p_IfHybrid5377: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_IfHybrid5381: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TryClause_in_p_TryCatchExpr5408: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_p_CatchClause_in_p_TryCatchExpr5410: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_TRY_in_p_TryClause5439: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_TryClause5443: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TryTargetExpr_in_p_TryClause5445: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_TryClause5447: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Expr_in_p_TryTargetExpr5473: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CATCH_in_p_CatchClause5502: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_CatchErrorList_in_p_CatchClause5506: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_CatchClause5508: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_CatchClause5510: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_CatchClause5513: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NameTest_in_p_CatchErrorList5539: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_VBAR_in_p_CatchErrorList5542: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_NameTest_in_p_CatchErrorList5544: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_p_AndExpr_in_p_OrExpr5572: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00040000, 0x00000000]),
- FOLLOW_OR_in_p_OrExpr5578: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AndExpr_in_p_OrExpr5582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00040000, 0x00000000]),
- FOLLOW_p_ComparisonExpr_in_p_AndExpr5611: new org.antlr.runtime.BitSet([0x00040002, 0x00000000]),
- FOLLOW_AND_in_p_AndExpr5617: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ComparisonExpr_in_p_AndExpr5621: new org.antlr.runtime.BitSet([0x00040002, 0x00000000]),
- FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5651: new org.antlr.runtime.BitSet([0x00000002, 0x02808000,0x00000892, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x1F805000]),
- FOLLOW_p_ValueComp_in_p_ComparisonExpr5656: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_GeneralComp_in_p_ComparisonExpr5660: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_NodeComp_in_p_ComparisonExpr5664: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5667: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AdditiveExpr_in_p_RangeExpr5696: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_TO_in_p_RangeExpr5702: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_RangeExpr5706: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5735: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00600000]),
- FOLLOW_PLUS_in_p_AdditiveExpr5742: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_MINUS_in_p_AdditiveExpr5750: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00600000]),
- FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5784: new org.antlr.runtime.BitSet([0x00000002, 0x04000080,0x00000100, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
- FOLLOW_STAR_in_p_MultiplicativeExpr5791: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_DIV_in_p_MultiplicativeExpr5800: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_IDIV_in_p_MultiplicativeExpr5806: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_MOD_in_p_MultiplicativeExpr5812: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5818: new org.antlr.runtime.BitSet([0x00000002, 0x04000080,0x00000100, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
- FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5847: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_UNION_in_p_UnionExpr5854: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_VBAR_in_p_UnionExpr5860: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5863: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5892: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000001, 0x00000000]),
- FOLLOW_INTERSECT_in_p_IntersectExceptExpr5899: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_EXCEPT_in_p_IntersectExceptExpr5905: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5910: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000001, 0x00000000]),
- FOLLOW_p_TreatExpr_in_p_InstanceofExpr5939: new org.antlr.runtime.BitSet([0x00000002, 0x80000000]),
- FOLLOW_INSTANCE_in_p_InstanceofExpr5945: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
- FOLLOW_OF_in_p_InstanceofExpr5951: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_InstanceofExpr5955: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CastableExpr_in_p_TreatExpr5983: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_TREAT_in_p_TreatExpr5989: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_TreatExpr5995: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_TreatExpr5999: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CastExpr_in_p_CastableExpr6036: new org.antlr.runtime.BitSet([0x10000002, 0x00000000]),
- FOLLOW_CASTABLE_in_p_CastableExpr6042: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_CastableExpr6048: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_SingleType_in_p_CastableExpr6052: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_UnaryExpr_in_p_CastExpr6089: new org.antlr.runtime.BitSet([0x08000002, 0x00000000]),
- FOLLOW_CAST_in_p_CastExpr6095: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_CastExpr6101: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_SingleType_in_p_CastExpr6105: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PLUS_in_p_UnaryExpr6137: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_MINUS_in_p_UnaryExpr6145: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ValueExpr_in_p_UnaryExpr6150: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ValidateExpr_in_p_ValueExpr6220: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SimpleMapExpr_in_p_ValueExpr6232: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExtensionExpr_in_p_ValueExpr6244: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PathExpr_in_p_SimpleMapExpr6269: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x80000000]),
- FOLLOW_BANG_in_p_SimpleMapExpr6272: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_PathExpr_in_p_SimpleMapExpr6274: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x80000000]),
- FOLLOW_EQUAL_in_p_GeneralComp6305: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NOTEQUAL_in_p_GeneralComp6311: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SMALLER_in_p_GeneralComp6317: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SMALLEREQ_in_p_GeneralComp6323: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GREATER_in_p_GeneralComp6329: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GREATEREQ_in_p_GeneralComp6335: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EQ_in_p_ValueComp6367: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NE_in_p_ValueComp6373: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LT_in_p_ValueComp6379: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LE_in_p_ValueComp6385: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GT_in_p_ValueComp6391: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GE_in_p_ValueComp6397: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_IS_in_p_NodeComp6428: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SMALLER_SMALLER_in_p_NodeComp6434: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GREATER_GREATER_in_p_NodeComp6438: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_VALIDATE_in_p_ValidateExpr6466: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000008, 0x00000080,0x00004000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_p_ValidationMode_in_p_ValidateExpr6472: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_TYPE_in_p_ValidateExpr6478: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_TypeName_in_p_ValidateExpr6482: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_ValidateExpr6487: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_ValidateExpr6489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_ValidateExpr6492: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LAX_in_p_ValidationMode6521: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STRICT_in_p_ValidationMode6527: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_Pragma_in_p_ExtensionExpr6556: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x20000000, 0x00000000]),
- FOLLOW_LBRACKET_in_p_ExtensionExpr6559: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0076B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_ExtensionExpr6561: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_ExtensionExpr6565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SLASH_in_p_PathExpr6608: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_RelativePathExpr_in_p_PathExpr6610: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SLASH_in_p_PathExpr6623: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SLASH_SLASH_in_p_PathExpr6635: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_RelativePathExpr_in_p_PathExpr6637: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_RelativePathExpr_in_p_PathExpr6649: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StepExpr_in_p_RelativePathExpr6677: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x60000000]),
- FOLLOW_set_in_p_RelativePathExpr6680: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_StepExpr_in_p_RelativePathExpr6688: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x60000000]),
- FOLLOW_p_PostfixExpr_in_p_StepExpr6742: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PostfixExpr_in_p_StepExpr6856: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AxisStep_in_p_StepExpr6874: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PostfixExpr_in_p_StepExpr6895: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PostfixExpr_in_p_StepExpr6913: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AxisStep_in_p_StepExpr6925: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ReverseStep_in_p_AxisStep6952: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_p_ForwardStep_in_p_AxisStep6956: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_p_PredicateList_in_p_AxisStep6959: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ForwardAxis_in_p_ForwardStep6985: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_NodeTest_in_p_ForwardStep6987: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AbbrevForwardStep_in_p_ForwardStep6999: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CHILD_in_p_ForwardAxis7025: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7027: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DESCENDANT_in_p_ForwardAxis7039: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7041: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ATTRIBUTE_in_p_ForwardAxis7053: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7055: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SELF_in_p_ForwardAxis7067: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7069: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DESCENDANT_OR_SELF_in_p_ForwardAxis7081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOLLOWING_SIBLING_in_p_ForwardAxis7095: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7097: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOLLOWING_in_p_ForwardAxis7109: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ForwardAxis7111: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ATTR_SIGN_in_p_AbbrevForwardStep7137: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_NodeTest_in_p_AbbrevForwardStep7140: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ReverseAxis_in_p_ReverseStep7166: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_NodeTest_in_p_ReverseStep7168: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AbbrevReverseStep_in_p_ReverseStep7180: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PARENT_in_p_ReverseAxis7206: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ReverseAxis7208: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ANCESTOR_in_p_ReverseAxis7220: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ReverseAxis7222: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PRECEDING_SIBLING_in_p_ReverseAxis7234: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ReverseAxis7236: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PRECEDING_in_p_ReverseAxis7248: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ReverseAxis7250: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ANCESTOR_OR_SELF_in_p_ReverseAxis7262: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
- FOLLOW_COLON_COLON_in_p_ReverseAxis7264: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOT_DOT_in_p_AbbrevReverseStep7290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_KindTest_in_p_NodeTest7316: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NameTest_in_p_NodeTest7320: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_NameTest7346: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Wildcard_in_p_NameTest7350: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STAR_in_p_Wildcard7383: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
- FOLLOW_COLON_in_p_Wildcard7386: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_p_Wildcard7388: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NCName_in_p_Wildcard7402: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
- FOLLOW_COLON_in_p_Wildcard7404: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
- FOLLOW_STAR_in_p_Wildcard7406: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_BracedURILiteral_in_p_Wildcard7418: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
- FOLLOW_STAR_in_p_Wildcard7420: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PrimaryExpr_in_p_PostfixExpr7458: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
- FOLLOW_p_Predicate_in_p_PostfixExpr7461: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
- FOLLOW_p_ArgumentList_in_p_PostfixExpr7465: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
- FOLLOW_LPAREN_in_p_ArgumentList7493: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F8057B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Argument_in_p_ArgumentList7496: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_ArgumentList7499: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F8056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Argument_in_p_ArgumentList7501: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_RPAREN_in_p_ArgumentList7507: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Predicate_in_p_PredicateList7533: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_LSQUARE_in_p_Predicate7560: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_Predicate7562: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_RSQUARE_in_p_Predicate7565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ParenthesizedExpr_in_p_PrimaryExpr7598: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Literal_in_p_PrimaryExpr7610: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_VarRef_in_p_PrimaryExpr7622: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ContextItemExpr_in_p_PrimaryExpr7634: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FunctionCall_in_p_PrimaryExpr7646: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OrderedExpr_in_p_PrimaryExpr7659: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_UnorderedExpr_in_p_PrimaryExpr7671: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Constructor_in_p_PrimaryExpr7683: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_BlockExpr_in_p_PrimaryExpr7696: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FunctionItemExpr_in_p_PrimaryExpr7708: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ArrayConstructor_in_p_PrimaryExpr7721: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SimpleObjectUnion_in_p_PrimaryExpr7733: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_UNION_BRACKET_in_p_SimpleObjectUnion7769: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F005EB,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_SimpleObjectUnion7771: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000080]),
- FOLLOW_R_UNION_BRACKET_in_p_SimpleObjectUnion7775: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COLON_in_p_PairConstructor7817: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_PairConstructor7819: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_PairConstructor7823: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_PairConstructor7825: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_LSQUARE_in_p_ArrayConstructor7856: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F00D6B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_ArrayConstructor7858: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_RSQUARE_in_p_ArrayConstructor7862: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NumericLiteral_in_p_Literal7888: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StringLiteral_in_p_Literal7892: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_IntegerLiteral_in_p_NumericLiteral7920: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_DecimalLiteral_in_p_NumericLiteral7928: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_DoubleLiteral_in_p_NumericLiteral7936: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOLLAR_in_p_VarRef7974: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_VarRef7978: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_VarName8006: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LPAREN_in_p_ParenthesizedExpr8032: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0057B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_ParenthesizedExpr8034: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_ParenthesizedExpr8038: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOT_in_p_ContextItemExpr8064: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ORDERED_in_p_OrderedExpr8092: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_OrderedExpr8096: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_OrderedExpr8098: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_OrderedExpr8101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_UNORDERED_in_p_UnorderedExpr8129: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_UnorderedExpr8133: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_UnorderedExpr8135: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_UnorderedExpr8138: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pg_FQName_in_p_FunctionCall8167: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
- FOLLOW_p_ArgumentList_in_p_FunctionCall8172: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_Argument8198: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ArgumentPlaceholder_in_p_Argument8203: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_QUESTION_in_p_ArgumentPlaceholder8229: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DirectConstructor_in_p_Constructor8255: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ComputedConstructor_in_p_Constructor8267: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DirElemConstructor_in_p_DirectConstructor8293: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DirCommentConstructor_in_p_DirectConstructor8305: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DirPIConstructor_in_p_DirectConstructor8317: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SMALLER_in_p_DirElemConstructor8344: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_DirElemConstructor8360: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x08000010, 0x00000000]),
- FOLLOW_p_DirAttributeList_in_p_DirElemConstructor8365: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x00000010, 0x00000000]),
- FOLLOW_EMPTY_CLOSE_TAG_in_p_DirElemConstructor8379: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_GREATER_in_p_DirElemConstructor8384: new org.antlr.runtime.BitSet([0x00000FC0, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800100,0xC0000020, 0x00000000]),
- FOLLOW_pm_DirElemContent_in_p_DirElemConstructor8386: new org.antlr.runtime.BitSet([0x00000FC0, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800100,0xC0000020, 0x00000000]),
- FOLLOW_CLOSE_TAG_in_p_DirElemConstructor8389: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_DirElemConstructor8393: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x08000000, 0x00000000]),
- FOLLOW_S_in_p_DirElemConstructor8397: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000]),
- FOLLOW_GREATER_in_p_DirElemConstructor8400: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_S_in_p_DirAttributeList8477: new org.antlr.runtime.BitSet([0xFFFF0002, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x08400000, 0x00000000]),
- FOLLOW_p_QName_in_p_DirAttributeList8482: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000,0x08000000, 0x00000000]),
- FOLLOW_S_in_p_DirAttributeList8486: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
- FOLLOW_EQUAL_in_p_DirAttributeList8489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x080C0000, 0x00000000]),
- FOLLOW_S_in_p_DirAttributeList8491: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x080C0000, 0x00000000]),
- FOLLOW_p_DirAttributeValue_in_p_DirAttributeList8496: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x08000000, 0x00000000]),
- FOLLOW_QUOT_in_p_DirAttributeValue8530: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_ESCAPE_QUOT_in_p_DirAttributeValue8537: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_APOS_in_p_DirAttributeValue8543: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_p_QuotAttrValueContent_in_p_DirAttributeValue8547: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_QUOT_in_p_DirAttributeValue8553: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_APOS_in_p_DirAttributeValue8598: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_ESCAPE_APOS_in_p_DirAttributeValue8605: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_QUOT_in_p_DirAttributeValue8611: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_p_AposAttrValueContent_in_p_DirAttributeValue8615: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
- FOLLOW_APOS_in_p_DirAttributeValue8621: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_QuotAttrContentChar_in_p_QuotAttrValueContent8679: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CommonContent_in_p_QuotAttrValueContent8685: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AposAttrContentChar_in_p_AposAttrValueContent8713: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CommonContent_in_p_AposAttrValueContent8719: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DirectConstructor_in_pm_DirElemContent8745: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CDataSection_in_pm_DirElemContent8757: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CommonContent_in_pm_DirElemContent8769: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ElementContentChar_in_pm_DirElemContent8781: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_PredefinedEntityRef_in_pm_CommonContent8809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_CharRef_in_pm_CommonContent8821: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ESCAPE_LBRACKET_in_pm_CommonContent8835: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ESCAPE_RBRACKET_in_pm_CommonContent8851: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pg_EnclosedExprXml_in_pm_CommonContent8865: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_pg_EnclosedExprXml8897: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pg_EnclosedExprXml8913: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pg_EnclosedExprXml8927: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_DirCommentConstructor_in_p_DirCommentConstructor8958: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_DirPIConstructor_in_p_DirPIConstructor8994: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_CDataSection_in_p_CDataSection9031: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CompDocConstructor_in_p_ComputedConstructor9065: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CompElemConstructor_in_p_ComputedConstructor9077: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CompAttrConstructor_in_p_ComputedConstructor9089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CompNamespaceConstructor_in_p_ComputedConstructor9101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CompTextConstructor_in_p_ComputedConstructor9113: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CompCommentConstructor_in_p_ComputedConstructor9125: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pm_CompPIConstructor_in_p_ComputedConstructor9137: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOCUMENT_in_pm_CompDocConstructor9166: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompDocConstructor9170: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompDocConstructor9172: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompDocConstructor9174: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ELEMENT_in_pm_CompElemConstructor9210: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_pm_CompElemConstructor9215: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompElemConstructor9220: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_pm_CompElemConstructor9222: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompElemConstructor9225: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompElemConstructor9229: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_pm_ContentExpr_in_pm_CompElemConstructor9231: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompElemConstructor9233: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_ContentExpr9260: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ATTRIBUTE_in_pm_CompAttrConstructor9289: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_pm_CompAttrConstructor9294: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompAttrConstructor9299: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_pm_CompAttrConstructor9301: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompAttrConstructor9304: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompAttrConstructor9308: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompAttrConstructor9310: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompAttrConstructor9312: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NAMESPACE_in_p_CompNamespaceConstructor9340: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
- FOLLOW_p_Prefix_in_p_CompNamespaceConstructor9345: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9350: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_PrefixExpr_in_p_CompNamespaceConstructor9352: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9354: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9358: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0076B,0xE04CC003, 0x00000007]),
- FOLLOW_p_URIExpr_in_p_CompNamespaceConstructor9360: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NCName_in_p_Prefix9389: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Expr_in_p_PrefixExpr9415: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Expr_in_p_URIExpr9442: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TEXT_in_p_CompTextConstructor9471: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_CompTextConstructor9475: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_CompTextConstructor9477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_CompTextConstructor9480: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COMMENT_in_pm_CompCommentConstructor9509: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompCommentConstructor9513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompCommentConstructor9515: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompCommentConstructor9517: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PROCESSING_INSTRUCTION_in_pm_CompPIConstructor9546: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_pm_CompPIConstructor9551: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompPIConstructor9556: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_pm_CompPIConstructor9558: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompPIConstructor9561: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_pm_CompPIConstructor9565: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompPIConstructor9567: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_pm_CompPIConstructor9569: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_LiteralFunctionItem_in_p_FunctionItemExpr9595: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_LiteralFunctionItem9622: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
- FOLLOW_HASH_in_p_LiteralFunctionItem9624: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_LiteralFunctionItem9626: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Annotation_in_p_InlineFunction9661: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
- FOLLOW_FUNCTION_in_p_InlineFunction9666: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_InlineFunction9670: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000030]),
- FOLLOW_p_ParamList_in_p_InlineFunction9672: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_InlineFunction9675: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_AS_in_p_InlineFunction9680: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_InlineFunction9684: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_InlineFunction9688: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndOptionalExpr_in_p_InlineFunction9690: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_InlineFunction9692: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AtomicOrUnionType_in_p_SingleType9718: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
- FOLLOW_QUESTION_in_p_SingleType9720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AS_in_p_TypeDeclaration9749: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_TypeDeclaration9755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EMPTY_SEQUENCE_in_p_SequenceType9808: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_SequenceType9814: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_SequenceType9818: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ItemType_in_p_SequenceType9867: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
- FOLLOW_p_OccurrenceIndicator_in_p_SequenceType9878: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_p_OccurrenceIndicator0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_KindTest_in_p_ItemType9980: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ITEM_in_p_ItemType10017: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_ItemType10019: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_ItemType10021: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FunctionTest_in_p_ItemType10062: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AtomicOrUnionType_in_p_ItemType10098: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ParenthesizedItemType_in_p_ItemType10110: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONTest_in_p_ItemType10122: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StructuredItemTest_in_p_ItemType10134: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONItemTest_in_p_JSONTest10159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONObjectTest_in_p_JSONTest10171: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONArrayTest_in_p_JSONTest10183: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STRUCTURED_ITEM_in_p_StructuredItemTest10208: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_StructuredItemTest10210: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_StructuredItemTest10212: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_JSON_ITEM_in_p_JSONItemTest10237: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_JSONItemTest10239: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_JSONItemTest10241: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_OBJECT_in_p_JSONObjectTest10266: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_JSONObjectTest10268: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_JSONObjectTest10270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ARRAY_in_p_JSONArrayTest10295: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_JSONArrayTest10297: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_JSONArrayTest10299: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_AtomicOrUnionType10325: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DocumentTest_in_p_KindTest10375: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ElementTest_in_p_KindTest10387: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AttributeTest_in_p_KindTest10399: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SchemaElementTest_in_p_KindTest10411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_SchemaAttributeTest_in_p_KindTest10423: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PITest_in_p_KindTest10435: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_CommentTest_in_p_KindTest10447: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TextTest_in_p_KindTest10459: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NamespaceNodeTest_in_p_KindTest10471: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AnyKindTest_in_p_KindTest10483: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NODE_in_p_AnyKindTest10509: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_AnyKindTest10511: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_AnyKindTest10513: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOCUMENT_NODE_in_p_DocumentTest10539: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_DocumentTest10541: new org.antlr.runtime.BitSet([0x00000000, 0x00000400,0x00000000, 0x00000008,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_p_ElementTest_in_p_DocumentTest10544: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_p_SchemaElementTest_in_p_DocumentTest10548: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_DocumentTest10552: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TEXT_in_p_TextTest10578: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_TextTest10580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_TextTest10582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COMMENT_in_p_CommentTest10608: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_CommentTest10610: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_CommentTest10612: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NAMESPACE_NODE_in_p_NamespaceNodeTest10638: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_NamespaceNodeTest10640: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_NamespaceNodeTest10642: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PROCESSING_INSTRUCTION_in_p_PITest10668: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_PITest10670: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000013,0x004C0000, 0x00000007]),
- FOLLOW_p_NCName_in_p_PITest10673: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_p_StringLiteral_in_p_PITest10677: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_PITest10681: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ATTRIBUTE_in_p_AttributeTest10707: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_AttributeTest10709: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100013,0x00408000, 0x00000000]),
- FOLLOW_p_AttribNameOrWildcard_in_p_AttributeTest10712: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_AttributeTest10715: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_TypeName_in_p_AttributeTest10717: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_AttributeTest10723: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AttributeName_in_p_AttribNameOrWildcard10751: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STAR_in_p_AttribNameOrWildcard10755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SCHEMA_ATTRIBUTE_in_p_SchemaAttributeTest10781: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_SchemaAttributeTest10783: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_AttributeDeclaration_in_p_SchemaAttributeTest10785: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_SchemaAttributeTest10787: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AttributeName_in_p_AttributeDeclaration10813: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ELEMENT_in_p_ElementTest10839: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_ElementTest10841: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100013,0x00408000, 0x00000000]),
- FOLLOW_p_ElementNameOrWildcard_in_p_ElementTest10844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_ElementTest10847: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_TypeName_in_p_ElementTest10849: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080010]),
- FOLLOW_QUESTION_in_p_ElementTest10851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_ElementTest10858: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_ElementNameOrWildcard10884: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STAR_in_p_ElementNameOrWildcard10888: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SCHEMA_ELEMENT_in_p_SchemaElementTest10906: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_SchemaElementTest10908: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_ElementDeclaration_in_p_SchemaElementTest10910: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_SchemaElementTest10912: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ElementName_in_p_ElementDeclaration10938: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_AttributeName10964: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_ElementName10990: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_p_TypeName11016: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Annotation_in_p_FunctionTest11042: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
- FOLLOW_p_AnyFunctionTest_in_p_FunctionTest11046: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TypedFunctionTest_in_p_FunctionTest11050: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FUNCTION_in_p_AnyFunctionTest11077: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_AnyFunctionTest11079: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
- FOLLOW_STAR_in_p_AnyFunctionTest11081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_AnyFunctionTest11083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FUNCTION_in_p_TypedFunctionTest11109: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_TypedFunctionTest11111: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000801B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_TypedFunctionTest11114: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_TypedFunctionTest11117: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_TypedFunctionTest11119: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_RPAREN_in_p_TypedFunctionTest11125: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_TypedFunctionTest11127: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_TypedFunctionTest11129: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LPAREN_in_p_ParenthesizedItemType11155: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_ItemType_in_p_ParenthesizedItemType11157: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_ParenthesizedItemType11159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_QUOT_in_p_StringLiteral11210: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_pg_QuotStringLiteralContent_in_p_StringLiteral11214: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00080000, 0x00000000]),
- FOLLOW_QUOT_in_p_StringLiteral11216: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_APOS_in_p_StringLiteral11255: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_pg_AposStringLiteralContent_in_p_StringLiteral11259: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
- FOLLOW_APOS_in_p_StringLiteral11261: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_pg_QuotStringLiteralContent11327: new org.antlr.runtime.BitSet([0xFFFFFFF2, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFF7FFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_set_in_pg_AposStringLiteralContent11378: new org.antlr.runtime.BitSet([0xFFFFFFF2, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFBFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_L_ElementContentChar_in_p_ElementContentChar11436: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_QuotAttrContentChar_in_p_QuotAttrContentChar11462: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_AposAttrContentChar_in_p_AposAttrContentChar11512: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_QName_in_p_EQName11581: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_URIQualifiedName_in_p_EQName11593: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_BracedURILiteral_in_p_URIQualifiedName11618: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_p_URIQualifiedName11620: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_Q_in_p_BracedURILiteral11645: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_BracedURILiteral11647: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFEFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_set_in_p_BracedURILiteral11649: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFEFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
- FOLLOW_RBRACKET_in_p_BracedURILiteral11673: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pg_QName_in_p_QName11715: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NCName_in_p_QName11727: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pg_QName_in_pg_FQName11788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FNCName_in_pg_FQName11800: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_NCName_in_pg_QName11844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
- FOLLOW_COLON_in_pg_QName11846: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_pg_QName11850: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_p_NCName0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_p_FNCName0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_InsertExpr_in_pg_UpdateExpr13847: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_DeleteExpr_in_pg_UpdateExpr13859: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_RenameExpr_in_pg_UpdateExpr13871: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ReplaceExpr_in_pg_UpdateExpr13883: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_TransformExpr_in_pg_UpdateExpr13895: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONDeleteExpr_in_pg_UpdateExpr13907: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONInsertExpr_in_pg_UpdateExpr13919: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONRenameExpr_in_pg_UpdateExpr13931: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONReplaceExpr_in_pg_UpdateExpr13943: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_JSONAppendExpr_in_pg_UpdateExpr13955: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DELETE_in_p_JSONDeleteExpr13982: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_JSON_in_p_JSONDeleteExpr13986: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_JSONDeleteExpr13990: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INSERT_in_p_JSONInsertExpr14017: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_JSON_in_p_JSONInsertExpr14021: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_SourceExpr_in_p_JSONInsertExpr14023: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
- FOLLOW_INTO_in_p_JSONInsertExpr14027: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_JSONInsertExpr14029: new org.antlr.runtime.BitSet([0x00200002, 0x00000000]),
- FOLLOW_AT_in_p_JSONInsertExpr14034: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x02000000, 0x00000000]),
- FOLLOW_POSITION_in_p_JSONInsertExpr14038: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_JSONInsertExpr14040: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_RENAME_in_p_JSONRenameExpr14076: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_JSON_in_p_JSONRenameExpr14080: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_JSONRenameExpr14082: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_JSONRenameExpr14086: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_JSONRenameExpr14090: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_REPLACE_in_p_JSONReplaceExpr14120: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_JSON_in_p_JSONReplaceExpr14124: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_VALUE_in_p_JSONReplaceExpr14128: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
- FOLLOW_OF_in_p_JSONReplaceExpr14132: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_JSONReplaceExpr14134: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_WITH_in_p_JSONReplaceExpr14138: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_JSONReplaceExpr14140: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_APPEND_in_p_JSONAppendExpr14171: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
- FOLLOW_JSON_in_p_JSONAppendExpr14175: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_LSQUARE_in_p_JSONAppendExpr14177: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_JSONAppendExpr14179: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_RSQUARE_in_p_JSONAppendExpr14182: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_TO_in_p_JSONAppendExpr14186: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_JSONAppendExpr14188: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_RevalidationDecl14219: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_REVALIDATION_in_pm_RevalidationDecl14223: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000008, 0x00000080,0x00000000, 0x00000002]),
- FOLLOW_STRICT_in_pm_RevalidationDecl14228: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_LAX_in_pm_RevalidationDecl14234: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SKIP_in_pm_RevalidationDecl14240: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_RevalidationDecl14245: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AS_in_p_InsertExprTargetChoice14275: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x08400000, 0x00000000]),
- FOLLOW_FIRST_in_p_InsertExprTargetChoice14280: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
- FOLLOW_LAST_in_p_InsertExprTargetChoice14286: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
- FOLLOW_INTO_in_p_InsertExprTargetChoice14293: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AFTER_in_p_InsertExprTargetChoice14310: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_BEFORE_in_p_InsertExprTargetChoice14326: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INSERT_in_p_InsertExpr14356: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x20000000, 0x00000000]),
- FOLLOW_NODE_in_p_InsertExpr14361: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_NODES_in_p_InsertExpr14367: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_SourceExpr_in_p_InsertExpr14370: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x010C0000, 0x00000000]),
- FOLLOW_p_InsertExprTargetChoice_in_p_InsertExpr14372: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_InsertExpr14374: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DELETE_in_p_DeleteExpr14404: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x20000000, 0x00000000]),
- FOLLOW_NODE_in_p_DeleteExpr14409: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_NODES_in_p_DeleteExpr14415: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_DeleteExpr14418: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_REPLACE_in_p_ReplaceExpr14448: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_VALUE_in_p_ReplaceExpr14453: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
- FOLLOW_OF_in_p_ReplaceExpr14457: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_NODE_in_p_ReplaceExpr14463: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ReplaceExpr14465: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_WITH_in_p_ReplaceExpr14470: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ReplaceExpr14472: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_RENAME_in_p_RenameExpr14503: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_NODE_in_p_RenameExpr14507: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_TargetExpr_in_p_RenameExpr14509: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_RenameExpr14513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_NewNameExpr_in_p_RenameExpr14515: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_SourceExpr14543: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_TargetExpr14570: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSingle_in_p_NewNameExpr14597: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COPY_in_p_TransformExpr14626: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_TransformExpr14630: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_TransformExpr14634: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_TransformExpr14638: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_TransformExpr14640: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_TransformExpr14644: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_TransformExpr14648: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_TransformExpr14652: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_TransformExpr14656: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_TransformExpr14658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_MODIFY_in_p_TransformExpr14665: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_TransformExpr14667: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_TransformExpr14672: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_TransformExpr14674: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DECLARE_in_pm_FTOptionDecl14712: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
- FOLLOW_FT_OPTION_in_pm_FTOptionDecl14716: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000200, 0x00000000]),
- FOLLOW_p_FTMatchOptions_in_pm_FTOptionDecl14718: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_pm_FTOptionDecl14720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SCORE_in_p_FTScoreVar14750: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_FTScoreVar14756: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_FTScoreVar14760: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StringConcatExpr_in_p_FTContainsExpr14788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000080]),
- FOLLOW_CONTAINS_in_p_FTContainsExpr14794: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_TEXT_in_p_FTContainsExpr14798: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTSelection_in_p_FTContainsExpr14802: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00001000, 0x00000000]),
- FOLLOW_p_FTIgnoreOption_in_p_FTContainsExpr14804: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTOr_in_p_FTSelection14834: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00100000, 0x00000000,0x00010000, 0x80001C00]),
- FOLLOW_p_FTPosFilter_in_p_FTSelection14836: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00100000, 0x00000000,0x00010000, 0x80001C00]),
- FOLLOW_WEIGHT_in_p_FTWeight14865: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_p_FTWeight14869: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_FTWeight14871: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_FTWeight14874: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTAnd_in_p_FTOr14900: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_FTOR_in_p_FTOr14906: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTAnd_in_p_FTOr14910: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_p_FTMildNot_in_p_FTAnd14939: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
- FOLLOW_FTAND_in_p_FTAnd14945: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTMildNot_in_p_FTAnd14949: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
- FOLLOW_p_FTUnaryNot_in_p_FTMildNot14978: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x02000000]),
- FOLLOW_NOT_in_p_FTMildNot14984: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
- FOLLOW_IN_in_p_FTMildNot14988: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTUnaryNot_in_p_FTMildNot14992: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x02000000]),
- FOLLOW_FTNOT_in_p_FTUnaryNot15025: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTPrimaryWithOptions_in_p_FTUnaryNot15032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTPrimary_in_p_FTPrimaryWithOptions15058: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000600, 0x00000000]),
- FOLLOW_p_FTMatchOptions_in_p_FTPrimaryWithOptions15060: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_p_FTWeight_in_p_FTPrimaryWithOptions15063: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTWords_in_p_FTPrimary15094: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x04000000]),
- FOLLOW_p_FTTimes_in_p_FTPrimary15096: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LPAREN_in_p_FTPrimary15111: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
- FOLLOW_p_FTSelection_in_p_FTPrimary15113: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_FTPrimary15115: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTExtensionSelection_in_p_FTPrimary15128: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTWordsValue_in_p_FTWords15154: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x20000060]),
- FOLLOW_p_FTAnyallOption_in_p_FTWords15156: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StringLiteral_in_p_FTWordsValue15183: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_p_FTWordsValue15196: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_FTWordsValue15198: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_FTWordsValue15201: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_L_Pragma_in_p_FTExtensionSelection15228: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x20000000, 0x00000000]),
- FOLLOW_LBRACKET_in_p_FTExtensionSelection15231: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000308,0x200C0000, 0x00000007]),
- FOLLOW_p_FTSelection_in_p_FTExtensionSelection15233: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_FTExtensionSelection15236: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ANY_in_p_FTAnyallOption15267: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002000, 0x00000000]),
- FOLLOW_WORD_in_p_FTAnyallOption15271: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ALL_in_p_FTAnyallOption15280: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_WORDS_in_p_FTAnyallOption15282: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PHRASE_in_p_FTAnyallOption15290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_OCCURS_in_p_FTTimes15322: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
- FOLLOW_p_FTRange_in_p_FTTimes15324: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
- FOLLOW_TIMES_in_p_FTTimes15328: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EXACTLY_in_p_FTRange15361: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTRange15363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTRange15381: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000020, 0x00000000]),
- FOLLOW_LEAST_in_p_FTRange15385: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTRange15387: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTRange15405: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800000]),
- FOLLOW_MOST_in_p_FTRange15409: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTRange15411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FROM_in_p_FTRange15429: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTRange15431: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_TO_in_p_FTRange15435: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTRange15437: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTOrder_in_p_FTPosFilter15468: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTWindow_in_p_FTPosFilter15472: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTDistance_in_p_FTPosFilter15476: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTScope_in_p_FTPosFilter15480: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTContent_in_p_FTPosFilter15484: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ORDERED_in_p_FTOrder15512: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WINDOW_in_p_FTWindow15542: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_AdditiveExpr_in_p_FTWindow15546: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x10000000,0x00004008, 0x00000000]),
- FOLLOW_p_FTUnit_in_p_FTWindow15548: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DISTANCE_in_p_FTDistance15576: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
- FOLLOW_p_FTRange_in_p_FTDistance15580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x10000000,0x00004008, 0x00000000]),
- FOLLOW_p_FTUnit_in_p_FTDistance15582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WORDS_in_p_FTUnit15612: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SENTENCES_in_p_FTUnit15618: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PARAGRAPHS_in_p_FTUnit15624: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SAME_in_p_FTScope15657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x08000000,0x00000004, 0x00000000]),
- FOLLOW_DIFFERENT_in_p_FTScope15663: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x08000000,0x00000004, 0x00000000]),
- FOLLOW_p_FTBigUnit_in_p_FTScope15668: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SENTENCE_in_p_FTBigUnit15698: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_PARAGRAPH_in_p_FTBigUnit15704: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTContent15739: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
- FOLLOW_START_in_p_FTContent15743: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTContent15751: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x10000000]),
- FOLLOW_END_in_p_FTContent15755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ENTIRE_in_p_FTContent15763: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_CONTENT_in_p_FTContent15767: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_USING_in_p_FTMatchOptions15801: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x00020000, 0x00000000,0x00000000, 0x01500200,0x00000970, 0x00000000]),
- FOLLOW_p_FTMatchOption_in_p_FTMatchOptions15805: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000200, 0x00000000]),
- FOLLOW_p_FTLanguageOption_in_p_FTMatchOption15833: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTWildCardOption_in_p_FTMatchOption15845: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTThesaurusOption_in_p_FTMatchOption15857: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTStemOption_in_p_FTMatchOption15869: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTCaseOption_in_p_FTMatchOption15881: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTDiacriticsOption_in_p_FTMatchOption15893: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTStopWordOption_in_p_FTMatchOption15905: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_FTExtensionOption_in_p_FTMatchOption15917: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_FTCaseOption15948: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
- FOLLOW_INSENSITIVE_in_p_FTCaseOption15952: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_FTCaseOption15970: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000002, 0x00000000]),
- FOLLOW_SENSITIVE_in_p_FTCaseOption15974: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LOWERCASE_in_p_FTCaseOption15991: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_UPPERCASE_in_p_FTCaseOption16007: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16042: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
- FOLLOW_INSENSITIVE_in_p_FTDiacriticsOption16046: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16064: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000002, 0x00000000]),
- FOLLOW_SENSITIVE_in_p_FTDiacriticsOption16068: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STEMMING_in_p_FTStemOption16103: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NO_in_p_FTStemOption16110: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000010, 0x00000000]),
- FOLLOW_STEMMING_in_p_FTStemOption16114: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_THESAURUS_in_p_FTThesaurusOption16150: new org.antlr.runtime.BitSet([0x00200000, 0x00000008]),
- FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16153: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DEFAULT_in_p_FTThesaurusOption16159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_THESAURUS_in_p_FTThesaurusOption16178: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_FTThesaurusOption16180: new org.antlr.runtime.BitSet([0x00200000, 0x00000008]),
- FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16183: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_DEFAULT_in_p_FTThesaurusOption16189: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_FTThesaurusOption16193: new org.antlr.runtime.BitSet([0x00200000, 0x00000000]),
- FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16195: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_RPAREN_in_p_FTThesaurusOption16199: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NO_in_p_FTThesaurusOption16217: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_THESAURUS_in_p_FTThesaurusOption16221: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTThesaurusID16254: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTThesaurusID16256: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x40006000]),
- FOLLOW_RELATIONSHIP_in_p_FTThesaurusID16261: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTThesaurusID16263: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
- FOLLOW_p_FTLiteralRange_in_p_FTThesaurusID16268: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00200000]),
- FOLLOW_LEVELS_in_p_FTThesaurusID16272: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EXACTLY_in_p_FTLiteralRange16307: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16309: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTLiteralRange16327: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000020, 0x00000000]),
- FOLLOW_LEAST_in_p_FTLiteralRange16331: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16333: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTLiteralRange16351: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800000]),
- FOLLOW_MOST_in_p_FTLiteralRange16355: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16357: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FROM_in_p_FTLiteralRange16375: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16377: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_TO_in_p_FTLiteralRange16379: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
- FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16381: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_STOP_in_p_FTStopWordOption16417: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_WORDS_in_p_FTStopWordOption16421: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_p_FTStopWords_in_p_FTStopWordOption16423: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
- FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16425: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
- FOLLOW_STOP_in_p_FTStopWordOption16444: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_WORDS_in_p_FTStopWordOption16448: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
- FOLLOW_DEFAULT_in_p_FTStopWordOption16452: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
- FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16454: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
- FOLLOW_NO_in_p_FTStopWordOption16473: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000020, 0x00000000]),
- FOLLOW_STOP_in_p_FTStopWordOption16477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_WORDS_in_p_FTStopWordOption16481: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AT_in_p_FTStopWords16515: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTStopWords16519: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LPAREN_in_p_FTStopWords16533: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTStopWords16535: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_COMMA_in_p_FTStopWords16538: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTStopWords16540: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
- FOLLOW_RPAREN_in_p_FTStopWords16544: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_UNION_in_p_FTStopWordsInclExcl16576: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_EXCEPT_in_p_FTStopWordsInclExcl16582: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_p_FTStopWords_in_p_FTStopWordsInclExcl16585: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LANGUAGE_in_p_FTLanguageOption16617: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTLanguageOption16621: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WILDCARDS_in_p_FTWildCardOption16651: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NO_in_p_FTWildCardOption16658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000800, 0x00000000]),
- FOLLOW_WILDCARDS_in_p_FTWildCardOption16662: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_OPTION_in_p_FTExtensionOption16695: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_FTExtensionOption16699: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_FTExtensionOption16701: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WITHOUT_in_p_FTIgnoreOption16729: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_CONTENT_in_p_FTIgnoreOption16733: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_UnionExpr_in_p_FTIgnoreOption16737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_StatementsAndOptionalExpr_in_p_Program16769: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Hybrid_in_p_Statements16796: new org.antlr.runtime.BitSet([0xFFFF0002, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Statements_in_p_StatementsAndExpr16824: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Statements_in_p_StatementsAndOptionalExpr16851: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_HybridExprSingle_in_p_Hybrid16878: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Statement_in_p_Hybrid16891: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_AssignStatement_in_p_Statement16922: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_BreakStatement_in_p_Statement16934: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ContinueStatement_in_p_Statement16946: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExitStatement_in_p_Statement16958: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_VarDeclStatement_in_p_Statement16970: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_WhileStatement_in_p_Statement16982: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Expr_in_p_HybridExprSingle17009: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_HybridExprSingle17024: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ExprSimple_in_p_ApplyStatement17074: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_ApplyStatement17076: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOLLAR_in_p_AssignStatement17104: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_AssignStatement17108: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
- FOLLOW_BIND_in_p_AssignStatement17112: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_AssignStatement17114: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_AssignStatement17117: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_p_BlockStatement17143: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0876B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Statements_in_p_BlockStatement17145: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_BlockStatement17148: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_p_BlockHybrid17174: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0876B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Statements_in_p_BlockHybrid17176: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_BlockHybrid17179: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_BREAK_in_p_BreakStatement17207: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
- FOLLOW_LOOP_in_p_BreakStatement17213: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_BreakStatement17217: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CONTINUE_in_p_ContinueStatement17245: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
- FOLLOW_LOOP_in_p_ContinueStatement17251: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_ContinueStatement17255: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_EXIT_in_p_ExitStatement17283: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00080000, 0x00000000]),
- FOLLOW_RETURNING_in_p_ExitStatement17289: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ExitStatement17293: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_ExitStatement17296: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_InitialClause_in_p_FLWORStatement17322: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
- FOLLOW_p_IntermediateClause_in_p_FLWORStatement17324: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
- FOLLOW_p_ReturnStatement_in_p_FLWORStatement17327: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_RETURN_in_p_ReturnStatement17359: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_ReturnStatement17363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_IF_in_p_IfStatement17392: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_IfStatement17396: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_IfStatement17398: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_IfStatement17401: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000400]),
- FOLLOW_THEN_in_p_IfStatement17405: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_IfStatement17409: new org.antlr.runtime.BitSet([0x00000000, 0x00000800]),
- FOLLOW_ELSE_in_p_IfStatement17414: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_IfStatement17418: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SWITCH_in_p_SwitchStatement17447: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_SwitchStatement17451: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_SwitchStatement17453: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_SwitchStatement17456: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
- FOLLOW_p_SwitchCaseStatement_in_p_SwitchStatement17458: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
- FOLLOW_DEFAULT_in_p_SwitchStatement17463: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_SwitchStatement17469: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_SwitchStatement17473: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_SwitchCaseStatement17503: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseStatement17507: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_SwitchCaseStatement17513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_SwitchCaseStatement17517: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TRY_in_p_TryCatchStatement17546: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_p_BlockStatement_in_p_TryCatchStatement17550: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_CATCH_in_p_TryCatchStatement17555: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_CatchErrorList_in_p_TryCatchStatement17559: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_p_BlockStatement_in_p_TryCatchStatement17561: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_TRY_in_p_TryCatchHybrid17593: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17597: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_CATCH_in_p_TryCatchHybrid17603: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
- FOLLOW_p_CatchErrorList_in_p_TryCatchHybrid17607: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17609: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
- FOLLOW_TYPESWITCH_in_p_TypeswitchStatement17642: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_TypeswitchStatement17646: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_TypeswitchStatement17648: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_TypeswitchStatement17651: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
- FOLLOW_p_CaseStatement_in_p_TypeswitchStatement17653: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
- FOLLOW_DEFAULT_in_p_TypeswitchStatement17658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_TypeswitchStatement17665: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_TypeswitchStatement17669: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_TypeswitchStatement17677: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_TypeswitchStatement17681: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_CASE_in_p_CaseStatement17710: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
- FOLLOW_DOLLAR_in_p_CaseStatement17717: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_CaseStatement17721: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
- FOLLOW_AS_in_p_CaseStatement17725: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
- FOLLOW_p_SequenceType_in_p_CaseStatement17729: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
- FOLLOW_RETURN_in_p_CaseStatement17733: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_CaseStatement17737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_Annotation_in_p_VarDeclStatement17764: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
- FOLLOW_VARIABLE_in_p_VarDeclStatement17769: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_VarDeclStatement17775: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_VarDeclStatement17779: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
- FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17783: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
- FOLLOW_BIND_in_p_VarDeclStatement17787: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_VarDeclStatement17789: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_COMMA_in_p_VarDeclStatement17805: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_VarDeclStatement17809: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
- FOLLOW_p_VarName_in_p_VarDeclStatement17813: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
- FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17817: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
- FOLLOW_BIND_in_p_VarDeclStatement17821: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_VarDeclStatement17823: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
- FOLLOW_SEMICOLON_in_p_VarDeclStatement17840: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_WHILE_in_p_WhileStatement17868: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_p_WhileStatement17872: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Expr_in_p_WhileStatement17874: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
- FOLLOW_RPAREN_in_p_WhileStatement17877: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_Hybrid_in_p_WhileStatement17879: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_QuantifiedExpr_in_p_ExprSimple17906: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OrExpr_in_p_ExprSimple17918: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_pg_UpdateExpr_in_p_ExprSimple17933: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LBRACKET_in_p_BlockExpr17959: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
- FOLLOW_p_StatementsAndExpr_in_p_BlockExpr17961: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
- FOLLOW_RBRACKET_in_p_BlockExpr17963: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COLLECTION_in_p_CollectionDecl17994: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_CollectionDecl17998: new org.antlr.runtime.BitSet([0x00080002, 0x00000000]),
- FOLLOW_p_CollectionTypeDecl_in_p_CollectionDecl18000: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AS_in_p_CollectionTypeDecl18029: new org.antlr.runtime.BitSet([0x80400000, 0x00000600,0x04004000, 0x0000020C,0x00000002, 0x00000000]),
- FOLLOW_p_KindTest_in_p_CollectionTypeDecl18033: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
- FOLLOW_p_OccurrenceIndicator_in_p_CollectionTypeDecl18042: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INDEX_in_p_IndexDecl18072: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_IndexName_in_p_IndexDecl18076: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x20000000, 0x00000000]),
- FOLLOW_ON_in_p_IndexDecl18080: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x20000000, 0x00000000]),
- FOLLOW_NODES_in_p_IndexDecl18086: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_IndexDomainExpr_in_p_IndexDecl18090: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
- FOLLOW_BY_in_p_IndexDecl18094: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_IndexKeySpec_in_p_IndexDecl18098: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_COMMA_in_p_IndexDecl18101: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_IndexKeySpec_in_p_IndexDecl18103: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
- FOLLOW_p_QName_in_p_IndexName18130: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PathExpr_in_p_IndexDomainExpr18155: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_IndexKeyExpr_in_p_IndexKeySpec18180: new org.antlr.runtime.BitSet([0x40080002, 0x00000000]),
- FOLLOW_p_IndexKeyTypeDecl_in_p_IndexKeySpec18182: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
- FOLLOW_p_IndexKeyCollation_in_p_IndexKeySpec18185: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PathExpr_in_p_IndexKeyExpr18211: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_AS_in_p_IndexKeyTypeDecl18238: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_AtomicType_in_p_IndexKeyTypeDecl18242: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
- FOLLOW_p_OccurrenceIndicator_in_p_IndexKeyTypeDecl18244: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_QName_in_p_AtomicType18270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COLLATION_in_p_IndexKeyCollation18297: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
- FOLLOW_p_StringLiteral_in_p_IndexKeyCollation18301: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_INTEGRITY_in_p_ICDecl18328: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00800000, 0x00000000]),
- FOLLOW_CONSTRAINT_in_p_ICDecl18334: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICDecl18338: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x22000000, 0x00000000]),
- FOLLOW_p_ICCollection_in_p_ICDecl18341: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ICForeignKey_in_p_ICDecl18345: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_ON_in_p_ICCollection18373: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
- FOLLOW_COLLECTION_in_p_ICCollection18379: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICCollection18383: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000020]),
- FOLLOW_p_ICCollSequence_in_p_ICCollection18386: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ICCollSequenceUnique_in_p_ICCollection18390: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_ICCollNode_in_p_ICCollection18394: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_DOLLAR_in_p_ICCollSequence18422: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICCollSequence18426: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
- FOLLOW_CHECK_in_p_ICCollSequence18432: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ICCollSequence18436: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_NODE_in_p_ICCollSequenceUnique18464: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_ICCollSequenceUnique18470: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICCollSequenceUnique18474: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
- FOLLOW_CHECK_in_p_ICCollSequenceUnique18480: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x40000000, 0x00000000]),
- FOLLOW_UNIQUE_in_p_ICCollSequenceUnique18486: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
- FOLLOW_KEY_in_p_ICCollSequenceUnique18492: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_PathExpr_in_p_ICCollSequenceUnique18496: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOREACH_in_p_ICCollNode18523: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_NODE_in_p_ICCollNode18529: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_ICCollNode18535: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICCollNode18539: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
- FOLLOW_CHECK_in_p_ICCollNode18545: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
- FOLLOW_p_ExprSingle_in_p_ICCollNode18549: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOREIGN_in_p_ICForeignKey18577: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
- FOLLOW_KEY_in_p_ICForeignKey18583: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00004000]),
- FOLLOW_p_ICForeignKeySource_in_p_ICForeignKey18587: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
- FOLLOW_p_ICForeignKeyTarget_in_p_ICForeignKey18589: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FROM_in_p_ICForeignKeySource18616: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
- FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeySource18620: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TO_in_p_ICForeignKeyTarget18647: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
- FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeyTarget18651: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_COLLECTION_in_p_ICForeignKeyValues18678: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICForeignKeyValues18682: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
- FOLLOW_NODE_in_p_ICForeignKeyValues18686: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_p_ICForeignKeyValues18692: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
- FOLLOW_p_QName_in_p_ICForeignKeyValues18696: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
- FOLLOW_KEY_in_p_ICForeignKeyValues18702: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_PathExpr_in_p_ICForeignKeyValues18706: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_synpred1_XQueryParser3531: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
- FOLLOW_DOLLAR_in_synpred1_XQueryParser3539: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_FOR_in_synpred1_XQueryParser3545: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002200, 0x00000000]),
- FOLLOW_set_in_synpred1_XQueryParser3547: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_IF_in_synpred2_XQueryParser3573: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_synpred2_XQueryParser3575: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SWITCH_in_synpred3_XQueryParser3603: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_synpred3_XQueryParser3605: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TYPESWITCH_in_synpred4_XQueryParser3629: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_synpred4_XQueryParser3631: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TRY_in_synpred5_XQueryParser3651: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_synpred5_XQueryParser3653: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_VALIDATE_in_synpred6_XQueryParser6204: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000008, 0x00000080,0x00004000, 0x00000000]),
- FOLLOW_p_ValidationMode_in_synpred6_XQueryParser6208: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_TYPE_in_synpred6_XQueryParser6212: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_SLASH_in_synpred7_XQueryParser6600: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
- FOLLOW_p_RelativePathExpr_in_synpred7_XQueryParser6602: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_synpred8_XQueryParser6716: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_synpred9_XQueryParser6769: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
- FOLLOW_p_EQName_in_synpred9_XQueryParser6777: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_synpred9_XQueryParser6780: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_synpred9_XQueryParser6798: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
- FOLLOW_p_NCName_in_synpred9_XQueryParser6806: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_synpred9_XQueryParser6809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_set_in_synpred9_XQueryParser6827: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
- FOLLOW_LBRACKET_in_synpred9_XQueryParser6839: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_KindTest_in_synpred10_XQueryParser6869: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_EQName_in_synpred11_XQueryParser6888: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
- FOLLOW_LPAREN_in_synpred11_XQueryParser6890: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_PrimaryExpr_in_synpred12_XQueryParser6908: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_LPAREN_in_synpred13_XQueryParser7593: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OccurrenceIndicator_in_synpred14_XQueryParser9871: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
- FOLLOW_p_OccurrenceIndicator_in_synpred15_XQueryParser18037: new org.antlr.runtime.BitSet([0x00000002, 0x00000000])
-});
-
-})();
-exports.XQueryParser = XQueryParser; });
-define('ace/mode/xquery/StringLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g 2012-09-05 10:41:39
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
- var org = require("./antlr3-all").org;
- var XQDTLexer = require("./XQDTLexer").XQDTLexer;
-
-
-var StringLexer = function(input, state) {
-// alternate constructor @todo
-// public StringLexer(CharStream input)
-// public StringLexer(CharStream input, RecognizerSharedState state) {
- if (!state) {
- state = new org.antlr.runtime.RecognizerSharedState();
- }
-
- (function(){
-
-
- this.inQuotStr = false;
- this.inAposStr = false;
-
- //boolean inQuotStr = false;
- //boolean inAposStr = false;
-
- //public StringLexer(CharStream input, boolean isAposStr) {
- // this(input, new RecognizerSharedState());
- // this.inAposStr = isAposStr;
- // this.inQuotStr = !isAposStr;
- // setIsWsExplicit(true);
- //}
-
- }).call(this);
-
- this.dfa8 = new StringLexer.DFA8(this);
- StringLexer.superclass.constructor.call(this, input, state);
-
-
-};
-
-org.antlr.lang.augmentObject(StringLexer, {
- EOF: -1,
- L_QuotAttrContentChar: 4,
- L_AposAttrContentChar: 5,
- L_ElementContentChar: 6,
- L_CDataSection: 7,
- L_PredefinedEntityRef: 8,
- L_CharRef: 9,
- ESCAPE_LBRACKET: 10,
- ESCAPE_RBRACKET: 11,
- ESCAPE_APOS: 12,
- ESCAPE_QUOT: 13,
- CDATA_START: 14,
- CDATA_END: 15,
- ANCESTOR: 16,
- ANCESTOR_OR_SELF: 17,
- AND: 18,
- AS: 19,
- ASCENDING: 20,
- AT: 21,
- ATTRIBUTE: 22,
- BASE_URI: 23,
- BOUNDARY_SPACE: 24,
- BY: 25,
- CASE: 26,
- CAST: 27,
- CASTABLE: 28,
- CHILD: 29,
- COLLATION: 30,
- COMMENT: 31,
- CONSTRUCTION: 32,
- COPY_NAMESPACES: 33,
- DECLARE: 34,
- DEFAULT: 35,
- DESCENDANT: 36,
- DESCENDANT_OR_SELF: 37,
- DESCENDING: 38,
- DIV: 39,
- DOCUMENT: 40,
- DOCUMENT_NODE: 41,
- ELEMENT: 42,
- ELSE: 43,
- EMPTY: 44,
- EMPTY_SEQUENCE: 45,
- ENCODING: 46,
- EQ: 47,
- EVERY: 48,
- EXCEPT: 49,
- EXTERNAL: 50,
- FOLLOWING: 51,
- FOLLOWING_SIBLING: 52,
- FOR: 53,
- FUNCTION: 54,
- GE: 55,
- GREATEST: 56,
- GT: 57,
- IDIV: 58,
- IF: 59,
- IMPORT: 60,
- IN: 61,
- INHERIT: 62,
- INSTANCE: 63,
- INTERSECT: 64,
- IS: 65,
- ITEM: 66,
- LAX: 67,
- LE: 68,
- LEAST: 69,
- LET: 70,
- LT: 71,
- MOD: 72,
- MODULE: 73,
- NAMESPACE: 74,
- NE: 75,
- NO_INHERIT: 76,
- NO_PRESERVE: 77,
- NODE: 78,
- JSON: 79,
- OF: 80,
- OPTION: 81,
- OR: 82,
- ORDER: 83,
- ORDERED: 84,
- ORDERING: 85,
- PARENT: 86,
- PRECEDING: 87,
- PRECEDING_SIBLING: 88,
- PRESERVE: 89,
- PROCESSING_INSTRUCTION: 90,
- STRUCTURED_ITEM: 91,
- JSON_ITEM: 92,
- OBJECT: 93,
- ARRAY: 94,
- RETURN: 95,
- SATISFIES: 96,
- SCHEMA: 97,
- SCHEMA_ATTRIBUTE: 98,
- SCHEMA_ELEMENT: 99,
- SELF: 100,
- SOME: 101,
- STABLE: 102,
- STRICT: 103,
- STRIP: 104,
- TEXT: 105,
- THEN: 106,
- TO: 107,
- TREAT: 108,
- TYPESWITCH: 109,
- UNION: 110,
- UNORDERED: 111,
- VALIDATE: 112,
- VARIABLE: 113,
- VERSION: 114,
- WHERE: 115,
- XQUERY: 116,
- ALLOWING: 117,
- CATCH: 118,
- CONTEXT: 119,
- COUNT: 120,
- DECIMAL_FORMAT: 121,
- DECIMAL_SEPARATOR: 122,
- DIGIT: 123,
- END: 124,
- GROUP: 125,
- GROUPING_SEPARATOR: 126,
- INFINITY: 127,
- MINUS_SIGN: 128,
- NAMESPACE_NODE: 129,
- NAN: 130,
- NEXT: 131,
- ONLY: 132,
- PATTERN_SEPARATOR: 133,
- PERCENT: 134,
- PER_MILLE: 135,
- PREVIOUS: 136,
- SLIDING: 137,
- START: 138,
- SWITCH: 139,
- TRY: 140,
- TUMBLING: 141,
- TYPE: 142,
- WHEN: 143,
- WINDOW: 144,
- ZERO_DIGIT: 145,
- AFTER: 146,
- BEFORE: 147,
- COPY: 148,
- DELETE: 149,
- FIRST: 150,
- INSERT: 151,
- INTO: 152,
- POSITION: 153,
- APPEND: 154,
- LAST: 155,
- MODIFY: 156,
- NODES: 157,
- RENAME: 158,
- REPLACE: 159,
- REVALIDATION: 160,
- SKIP: 161,
- UPDATING: 162,
- VALUE: 163,
- WITH: 164,
- ALL: 165,
- ANY: 166,
- CONTAINS: 167,
- CONTENT: 168,
- DIACRITICS: 169,
- DIFFERENT: 170,
- DISTANCE: 171,
- ENTIRE: 172,
- EXACTLY: 173,
- FROM: 174,
- FT_OPTION: 175,
- FTAND: 176,
- FTNOT: 177,
- FTOR: 178,
- INSENSITIVE: 179,
- LANGUAGE: 180,
- LEVELS: 181,
- LOWERCASE: 182,
- MOST: 183,
- NO: 184,
- NOT: 185,
- OCCURS: 186,
- PARAGRAPH: 187,
- PARAGRAPHS: 188,
- PHRASE: 189,
- RELATIONSHIP: 190,
- SAME: 191,
- SCORE: 192,
- SENSITIVE: 193,
- SENTENCE: 194,
- SENTENCES: 195,
- STEMMING: 196,
- STOP: 197,
- THESAURUS: 198,
- TIMES: 199,
- UPPERCASE: 200,
- USING: 201,
- WEIGHT: 202,
- WILDCARDS: 203,
- WITHOUT: 204,
- WORD: 205,
- WORDS: 206,
- BREAK: 207,
- CONTINUE: 208,
- EXIT: 209,
- LOOP: 210,
- RETURNING: 211,
- WHILE: 212,
- CHECK: 213,
- COLLECTION: 214,
- CONSTRAINT: 215,
- FOREACH: 216,
- FOREIGN: 217,
- INDEX: 218,
- INTEGRITY: 219,
- KEY: 220,
- ON: 221,
- UNIQUE: 222,
- AMP_ER: 223,
- APOS_ER: 224,
- QUOT_ER: 225,
- CONCAT: 226,
- LPAREN: 227,
- RPAREN: 228,
- DOLLAR: 229,
- L_UNION_BRACKET: 230,
- R_UNION_BRACKET: 231,
- LBRACKET: 232,
- RBRACKET: 233,
- LSQUARE: 234,
- RSQUARE: 235,
- EQUAL: 236,
- BIND: 237,
- NOTEQUAL: 238,
- ANN_PERCENT: 239,
- HASH: 240,
- AMP: 241,
- COMMA: 242,
- QUESTION: 243,
- STAR: 244,
- PLUS: 245,
- MINUS: 246,
- SMALLER: 247,
- GREATER: 248,
- SMALLEREQ: 249,
- GREATEREQ: 250,
- SMALLER_SMALLER: 251,
- GREATER_GREATER: 252,
- SLASH: 253,
- SLASH_SLASH: 254,
- BANG: 255,
- DOT: 256,
- DOT_DOT: 257,
- COLON: 258,
- COLON_COLON: 259,
- EMPTY_CLOSE_TAG: 260,
- CLOSE_TAG: 261,
- SEMICOLON: 262,
- VBAR: 263,
- PRAGMA_START: 264,
- PRAGMA_END: 265,
- XML_COMMENT_START: 266,
- XML_COMMENT_END: 267,
- PI_START: 268,
- PI_END: 269,
- ATTR_SIGN: 270,
- Q: 271,
- CHARREF_DEC: 272,
- CHARREF_HEX: 273,
- APOS: 274,
- QUOT: 275,
- NCNameStartChar: 276,
- NCNameChar: 277,
- L_NCName: 278,
- Letter: 279,
- HexLetter: 280,
- Digit: 281,
- Digits: 282,
- S: 283,
- SU: 284,
- L_Pragma: 285,
- L_DirCommentConstructor: 286,
- L_DirPIConstructor: 287,
- L_IntegerLiteral: 288,
- L_DecimalLiteral: 289,
- L_DoubleLiteral: 290,
- L_Comment: 291,
- L_AnyChar: 292,
- L_QuotStringLiteralChar: 293,
- L_AposStringLiteralChar: 294
-});
-
-(function(){
-var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
- EOF = org.antlr.runtime.Token.EOF;
-org.antlr.lang.extend(StringLexer, XQDTLexer, {
- EOF : -1,
- L_QuotAttrContentChar : 4,
- L_AposAttrContentChar : 5,
- L_ElementContentChar : 6,
- L_CDataSection : 7,
- L_PredefinedEntityRef : 8,
- L_CharRef : 9,
- ESCAPE_LBRACKET : 10,
- ESCAPE_RBRACKET : 11,
- ESCAPE_APOS : 12,
- ESCAPE_QUOT : 13,
- CDATA_START : 14,
- CDATA_END : 15,
- ANCESTOR : 16,
- ANCESTOR_OR_SELF : 17,
- AND : 18,
- AS : 19,
- ASCENDING : 20,
- AT : 21,
- ATTRIBUTE : 22,
- BASE_URI : 23,
- BOUNDARY_SPACE : 24,
- BY : 25,
- CASE : 26,
- CAST : 27,
- CASTABLE : 28,
- CHILD : 29,
- COLLATION : 30,
- COMMENT : 31,
- CONSTRUCTION : 32,
- COPY_NAMESPACES : 33,
- DECLARE : 34,
- DEFAULT : 35,
- DESCENDANT : 36,
- DESCENDANT_OR_SELF : 37,
- DESCENDING : 38,
- DIV : 39,
- DOCUMENT : 40,
- DOCUMENT_NODE : 41,
- ELEMENT : 42,
- ELSE : 43,
- EMPTY : 44,
- EMPTY_SEQUENCE : 45,
- ENCODING : 46,
- EQ : 47,
- EVERY : 48,
- EXCEPT : 49,
- EXTERNAL : 50,
- FOLLOWING : 51,
- FOLLOWING_SIBLING : 52,
- FOR : 53,
- FUNCTION : 54,
- GE : 55,
- GREATEST : 56,
- GT : 57,
- IDIV : 58,
- IF : 59,
- IMPORT : 60,
- IN : 61,
- INHERIT : 62,
- INSTANCE : 63,
- INTERSECT : 64,
- IS : 65,
- ITEM : 66,
- LAX : 67,
- LE : 68,
- LEAST : 69,
- LET : 70,
- LT : 71,
- MOD : 72,
- MODULE : 73,
- NAMESPACE : 74,
- NE : 75,
- NO_INHERIT : 76,
- NO_PRESERVE : 77,
- NODE : 78,
- JSON : 79,
- OF : 80,
- OPTION : 81,
- OR : 82,
- ORDER : 83,
- ORDERED : 84,
- ORDERING : 85,
- PARENT : 86,
- PRECEDING : 87,
- PRECEDING_SIBLING : 88,
- PRESERVE : 89,
- PROCESSING_INSTRUCTION : 90,
- STRUCTURED_ITEM : 91,
- JSON_ITEM : 92,
- OBJECT : 93,
- ARRAY : 94,
- RETURN : 95,
- SATISFIES : 96,
- SCHEMA : 97,
- SCHEMA_ATTRIBUTE : 98,
- SCHEMA_ELEMENT : 99,
- SELF : 100,
- SOME : 101,
- STABLE : 102,
- STRICT : 103,
- STRIP : 104,
- TEXT : 105,
- THEN : 106,
- TO : 107,
- TREAT : 108,
- TYPESWITCH : 109,
- UNION : 110,
- UNORDERED : 111,
- VALIDATE : 112,
- VARIABLE : 113,
- VERSION : 114,
- WHERE : 115,
- XQUERY : 116,
- ALLOWING : 117,
- CATCH : 118,
- CONTEXT : 119,
- COUNT : 120,
- DECIMAL_FORMAT : 121,
- DECIMAL_SEPARATOR : 122,
- DIGIT : 123,
- END : 124,
- GROUP : 125,
- GROUPING_SEPARATOR : 126,
- INFINITY : 127,
- MINUS_SIGN : 128,
- NAMESPACE_NODE : 129,
- NAN : 130,
- NEXT : 131,
- ONLY : 132,
- PATTERN_SEPARATOR : 133,
- PERCENT : 134,
- PER_MILLE : 135,
- PREVIOUS : 136,
- SLIDING : 137,
- START : 138,
- SWITCH : 139,
- TRY : 140,
- TUMBLING : 141,
- TYPE : 142,
- WHEN : 143,
- WINDOW : 144,
- ZERO_DIGIT : 145,
- AFTER : 146,
- BEFORE : 147,
- COPY : 148,
- DELETE : 149,
- FIRST : 150,
- INSERT : 151,
- INTO : 152,
- POSITION : 153,
- APPEND : 154,
- LAST : 155,
- MODIFY : 156,
- NODES : 157,
- RENAME : 158,
- REPLACE : 159,
- REVALIDATION : 160,
- SKIP : 161,
- UPDATING : 162,
- VALUE : 163,
- WITH : 164,
- ALL : 165,
- ANY : 166,
- CONTAINS : 167,
- CONTENT : 168,
- DIACRITICS : 169,
- DIFFERENT : 170,
- DISTANCE : 171,
- ENTIRE : 172,
- EXACTLY : 173,
- FROM : 174,
- FT_OPTION : 175,
- FTAND : 176,
- FTNOT : 177,
- FTOR : 178,
- INSENSITIVE : 179,
- LANGUAGE : 180,
- LEVELS : 181,
- LOWERCASE : 182,
- MOST : 183,
- NO : 184,
- NOT : 185,
- OCCURS : 186,
- PARAGRAPH : 187,
- PARAGRAPHS : 188,
- PHRASE : 189,
- RELATIONSHIP : 190,
- SAME : 191,
- SCORE : 192,
- SENSITIVE : 193,
- SENTENCE : 194,
- SENTENCES : 195,
- STEMMING : 196,
- STOP : 197,
- THESAURUS : 198,
- TIMES : 199,
- UPPERCASE : 200,
- USING : 201,
- WEIGHT : 202,
- WILDCARDS : 203,
- WITHOUT : 204,
- WORD : 205,
- WORDS : 206,
- BREAK : 207,
- CONTINUE : 208,
- EXIT : 209,
- LOOP : 210,
- RETURNING : 211,
- WHILE : 212,
- CHECK : 213,
- COLLECTION : 214,
- CONSTRAINT : 215,
- FOREACH : 216,
- FOREIGN : 217,
- INDEX : 218,
- INTEGRITY : 219,
- KEY : 220,
- ON : 221,
- UNIQUE : 222,
- AMP_ER : 223,
- APOS_ER : 224,
- QUOT_ER : 225,
- CONCAT : 226,
- LPAREN : 227,
- RPAREN : 228,
- DOLLAR : 229,
- L_UNION_BRACKET : 230,
- R_UNION_BRACKET : 231,
- LBRACKET : 232,
- RBRACKET : 233,
- LSQUARE : 234,
- RSQUARE : 235,
- EQUAL : 236,
- BIND : 237,
- NOTEQUAL : 238,
- ANN_PERCENT : 239,
- HASH : 240,
- AMP : 241,
- COMMA : 242,
- QUESTION : 243,
- STAR : 244,
- PLUS : 245,
- MINUS : 246,
- SMALLER : 247,
- GREATER : 248,
- SMALLEREQ : 249,
- GREATEREQ : 250,
- SMALLER_SMALLER : 251,
- GREATER_GREATER : 252,
- SLASH : 253,
- SLASH_SLASH : 254,
- BANG : 255,
- DOT : 256,
- DOT_DOT : 257,
- COLON : 258,
- COLON_COLON : 259,
- EMPTY_CLOSE_TAG : 260,
- CLOSE_TAG : 261,
- SEMICOLON : 262,
- VBAR : 263,
- PRAGMA_START : 264,
- PRAGMA_END : 265,
- XML_COMMENT_START : 266,
- XML_COMMENT_END : 267,
- PI_START : 268,
- PI_END : 269,
- ATTR_SIGN : 270,
- Q : 271,
- CHARREF_DEC : 272,
- CHARREF_HEX : 273,
- APOS : 274,
- QUOT : 275,
- NCNameStartChar : 276,
- NCNameChar : 277,
- L_NCName : 278,
- Letter : 279,
- HexLetter : 280,
- Digit : 281,
- Digits : 282,
- S : 283,
- SU : 284,
- L_Pragma : 285,
- L_DirCommentConstructor : 286,
- L_DirPIConstructor : 287,
- L_IntegerLiteral : 288,
- L_DecimalLiteral : 289,
- L_DoubleLiteral : 290,
- L_Comment : 291,
- L_AnyChar : 292,
- L_QuotStringLiteralChar : 293,
- L_AposStringLiteralChar : 294,
- getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g"; }
-});
-org.antlr.lang.augmentObject(StringLexer.prototype, {
- // $ANTLR start QUOT
- mQUOT: function() {
- try {
- var _type = this.QUOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:66:6: ({...}? => '\"' )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:66:8: {...}? => '\"'
- if ( !(( this.inQuotStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "QUOT", " this.inQuotStr ");
- }
- this.match('\"');
- this.inQuotStr = !this.inQuotStr;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "QUOT",
-
- // $ANTLR start APOS
- mAPOS: function() {
- try {
- var _type = this.APOS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:67:6: ({...}? => '\\'' )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:67:8: {...}? => '\\''
- if ( !(( this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "APOS", " this.inAposStr ");
- }
- this.match('\'');
- this.inAposStr = !this.inAposStr;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "APOS",
-
- // $ANTLR start ESCAPE_QUOT
- mESCAPE_QUOT: function() {
- try {
- var _type = this.ESCAPE_QUOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:68:13: ({...}? => '\"\"' )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:68:15: {...}? => '\"\"'
- if ( !(( this.inQuotStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_QUOT", " this.inQuotStr ");
- }
- this.match("\"\"");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_QUOT",
-
- // $ANTLR start ESCAPE_APOS
- mESCAPE_APOS: function() {
- try {
- var _type = this.ESCAPE_APOS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:69:13: ({...}? => '\\'\\'' )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:69:15: {...}? => '\\'\\''
- if ( !(( this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_APOS", " this.inAposStr ");
- }
- this.match("''");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_APOS",
-
- // $ANTLR start L_PredefinedEntityRef
- mL_PredefinedEntityRef: function() {
- try {
- var _type = this.L_PredefinedEntityRef;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:2: ({...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';' )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:4: {...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';'
- if ( !(( this.inQuotStr | this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_PredefinedEntityRef", " this.inQuotStr | this.inAposStr ");
- }
- this.match('&');
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:48: ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' )
- var alt1=5;
- switch ( this.input.LA(1) ) {
- case 'l':
- alt1=1;
- break;
- case 'g':
- alt1=2;
- break;
- case 'a':
- var LA1_3 = this.input.LA(2);
-
- if ( (LA1_3=='p') ) {
- alt1=3;
- }
- else if ( (LA1_3=='m') ) {
- alt1=5;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 1, 3, this.input);
-
- throw nvae;
- }
- break;
- case 'q':
- alt1=4;
- break;
- default:
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 1, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt1) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:49: 'lt'
- this.match("lt");
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:56: 'gt'
- this.match("gt");
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:63: 'apos'
- this.match("apos");
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:72: 'quot'
- this.match("quot");
-
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:81: 'amp'
- this.match("amp");
-
-
-
- break;
-
- }
-
- this.match(';');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_PredefinedEntityRef",
-
- // $ANTLR start L_CharRef
- mL_CharRef: function() {
- try {
- var _type = this.L_CharRef;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:2: ({...}? => '&#' ( '0' .. '9' )+ ';' | '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';' )
- var alt4=2;
- var LA4_0 = this.input.LA(1);
-
- if ( (LA4_0=='&') ) {
- var LA4_1 = this.input.LA(2);
-
- if ( (LA4_1=='#') ) {
- var LA4_2 = this.input.LA(3);
-
- if ( (LA4_2=='x') ) {
- alt4=2;
- }
- else if ( ((LA4_2>='0' && LA4_2<='9')) && (( this.inQuotStr | this.inAposStr ))) {
- alt4=1;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 4, 2, this.input);
-
- throw nvae;
- }
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 4, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 4, 0, this.input);
-
- throw nvae;
- }
- switch (alt4) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:4: {...}? => '&#' ( '0' .. '9' )+ ';'
- if ( !(( this.inQuotStr | this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CharRef", " this.inQuotStr | this.inAposStr ");
- }
- this.match("&#");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:49: ( '0' .. '9' )+
- var cnt2=0;
- loop2:
- do {
- var alt2=2;
- var LA2_0 = this.input.LA(1);
-
- if ( ((LA2_0>='0' && LA2_0<='9')) ) {
- alt2=1;
- }
-
-
- switch (alt2) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:49: '0' .. '9'
- this.matchRange('0','9');
-
-
- break;
-
- default :
- if ( cnt2 >= 1 ) {
- break loop2;
- }
- var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
- throw eee;
- }
- cnt2++;
- } while (true);
-
- this.match(';');
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:65: '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';'
- this.match("&#x");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:71: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+
- var cnt3=0;
- loop3:
- do {
- var alt3=2;
- var LA3_0 = this.input.LA(1);
-
- if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='F')||(LA3_0>='a' && LA3_0<='f')) ) {
- alt3=1;
- }
-
-
- switch (alt3) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
- if ( (this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt3 >= 1 ) {
- break loop3;
- }
- var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
- throw eee;
- }
- cnt3++;
- } while (true);
-
- this.match(';');
-
-
- break;
-
- }
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_CharRef",
-
- // $ANTLR start L_QuotStringLiteralChar
- mL_QuotStringLiteralChar: function() {
- try {
- var _type = this.L_QuotStringLiteralChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:82:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:82:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( this.inQuotStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_QuotStringLiteralChar", " this.inQuotStr ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:83:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt5=0;
- loop5:
- do {
- var alt5=2;
- var LA5_0 = this.input.LA(1);
-
- if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||(LA5_0>=' ' && LA5_0<='!')||(LA5_0>='#' && LA5_0<='%')||(LA5_0>='\'' && LA5_0<='\uD7FF')||(LA5_0>='\uE000' && LA5_0<='\uFFFD')) ) {
- alt5=1;
- }
-
-
- switch (alt5) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt5 >= 1 ) {
- break loop5;
- }
- var eee = new org.antlr.runtime.EarlyExitException(5, this.input);
- throw eee;
- }
- cnt5++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_QuotStringLiteralChar",
-
- // $ANTLR start L_AposStringLiteralChar
- mL_AposStringLiteralChar: function() {
- try {
- var _type = this.L_AposStringLiteralChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:88:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:88:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AposStringLiteralChar", " this.inAposStr ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:89:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt6=0;
- loop6:
- do {
- var alt6=2;
- var LA6_0 = this.input.LA(1);
-
- if ( ((LA6_0>='\t' && LA6_0<='\n')||LA6_0=='\r'||(LA6_0>=' ' && LA6_0<='%')||(LA6_0>='(' && LA6_0<='\uD7FF')||(LA6_0>='\uE000' && LA6_0<='\uFFFD')) ) {
- alt6=1;
- }
-
-
- switch (alt6) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt6 >= 1 ) {
- break loop6;
- }
- var eee = new org.antlr.runtime.EarlyExitException(6, this.input);
- throw eee;
- }
- cnt6++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_AposStringLiteralChar",
-
- // $ANTLR start L_AnyChar
- mL_AnyChar: function() {
- try {
- var _type = this.L_AnyChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:98:5: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:98:9: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( !this.inQuotStr && !this.inAposStr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AnyChar", " !this.inQuotStr && !this.inAposStr ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:99:9: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt7=0;
- loop7:
- do {
- var alt7=2;
- var LA7_0 = this.input.LA(1);
-
- if ( ((LA7_0>='\t' && LA7_0<='\n')||LA7_0=='\r'||(LA7_0>=' ' && LA7_0<='%')||(LA7_0>='\'' && LA7_0<=';')||(LA7_0>='=' && LA7_0<='z')||LA7_0=='|'||(LA7_0>='~' && LA7_0<='\uD7FF')||(LA7_0>='\uE000' && LA7_0<='\uFFFD')) ) {
- alt7=1;
- }
-
-
- switch (alt7) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt7 >= 1 ) {
- break loop7;
- }
- var eee = new org.antlr.runtime.EarlyExitException(7, this.input);
- throw eee;
- }
- cnt7++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_AnyChar",
-
- mTokens: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:8: ( QUOT | APOS | ESCAPE_QUOT | ESCAPE_APOS | L_PredefinedEntityRef | L_CharRef | L_QuotStringLiteralChar | L_AposStringLiteralChar | L_AnyChar )
- var alt8=9;
- alt8 = this.dfa8.predict(this.input);
- switch (alt8) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:10: QUOT
- this.mQUOT();
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:15: APOS
- this.mAPOS();
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:20: ESCAPE_QUOT
- this.mESCAPE_QUOT();
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:32: ESCAPE_APOS
- this.mESCAPE_APOS();
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:44: L_PredefinedEntityRef
- this.mL_PredefinedEntityRef();
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:66: L_CharRef
- this.mL_CharRef();
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:76: L_QuotStringLiteralChar
- this.mL_QuotStringLiteralChar();
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:100: L_AposStringLiteralChar
- this.mL_AposStringLiteralChar();
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:124: L_AnyChar
- this.mL_AnyChar();
-
-
- break;
-
- }
-
- }
-
-}, true); // important to pass true to overwrite default implementations
-
-org.antlr.lang.augmentObject(StringLexer, {
- DFA8_eotS:
- "\u0001\uffff\u0001\u0007\u0001\u000c\u0001\uffff\u0001\u0011\u0001"+
- "\u0012\u0001\u0013\u0001\uffff\u0001\u0015\u0002\uffff\u0001\u0016\u0001"+
- "\uffff\u0001\u0018\u000d\uffff",
- DFA8_eofS:
- "\u001b\uffff",
- DFA8_minS:
- "\u0003\u0009\u0001\u0023\u0003\u0009\u0001\u0000\u0001\u0009\u0002"+
- "\uffff\u0001\u0009\u0001\u0000\u0001\u0009\u0003\uffff\u0003\u0000\u0001"+
- "\uffff\u0002\u0000\u0001\uffff\u0001\u0000\u0002\uffff",
- DFA8_maxS:
- "\u0003\ufffd\u0001\u0071\u0003\ufffd\u0001\u0000\u0001\ufffd\u0002"+
- "\uffff\u0001\ufffd\u0001\u0000\u0001\ufffd\u0003\uffff\u0003\u0000\u0001"+
- "\uffff\u0002\u0000\u0001\uffff\u0001\u0000\u0002\uffff",
- DFA8_acceptS:
- "\u0009\uffff\u0001\u0008\u0001\u0009\u0003\uffff\u0001\u0007\u0001"+
- "\u0006\u0001\u0005\u0003\uffff\u0001\u0001\u0002\uffff\u0001\u0002\u0001"+
- "\uffff\u0001\u0003\u0001\u0004",
- DFA8_specialS:
- "\u0001\u0007\u0001\u000e\u0001\u0000\u0001\u0004\u0001\u0011\u0001"+
- "\u000a\u0001\u0005\u0001\u0009\u0001\u0010\u0002\uffff\u0001\u000f\u0001"+
- "\u0008\u0001\u0006\u0003\uffff\u0001\u000d\u0001\u0003\u0001\u000b\u0001"+
- "\uffff\u0001\u0001\u0001\u000c\u0001\uffff\u0001\u0002\u0002\uffff}>",
- DFA8_transitionS: [
- "\u0002\u0004\u0002\uffff\u0001\u0004\u0012\uffff\u0002\u0004"+
- "\u0001\u0001\u0003\u0004\u0001\u0003\u0001\u0002\u0014\u0004"+
- "\u0001\u0005\u003e\u0004\u0001\u0005\u0001\u0004\u0001\u0005"+
- "\ud782\u0004\u0800\uffff\u1ffe\u0004",
- "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0002\u0008"+
- "\u0001\u0006\u0003\u0008\u0001\uffff\u0001\u000a\u0014\u0008"+
- "\u0001\u0009\u003e\u0008\u0001\u0009\u0001\u0008\u0001\u0009"+
- "\ud782\u0008\u0800\uffff\u1ffe\u0008",
- "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
- "\u0001\u000a\u0003\u000d\u0001\uffff\u0001\u000b\u0014\u000d"+
- "\u0001\u000e\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e"+
- "\ud782\u000d\u0800\uffff\u1ffe\u000d",
- "\u0001\u000f\u003d\uffff\u0001\u0010\u0005\uffff\u0001\u0010"+
- "\u0004\uffff\u0001\u0010\u0004\uffff\u0001\u0010",
- "\u0002\u0004\u0002\uffff\u0001\u0004\u0012\uffff\u0002\u0004"+
- "\u0001\u0008\u0003\u0004\u0001\uffff\u0001\u000d\u0014\u0004"+
- "\u0001\u0005\u003e\u0004\u0001\u0005\u0001\u0004\u0001\u0005"+
- "\ud782\u0004\u0800\uffff\u1ffe\u0004",
- "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0002\u0005"+
- "\u0001\u0009\u0003\u0005\u0001\uffff\u0001\u000e\ud7d8\u0005"+
- "\u0800\uffff\u1ffe\u0005",
- "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0006\u0008"+
- "\u0001\uffff\u0001\u000a\u0014\u0008\u0001\u0009\u003e\u0008"+
- "\u0001\u0009\u0001\u0008\u0001\u0009\ud782\u0008\u0800\uffff"+
- "\u1ffe\u0008",
- "\u0001\uffff",
- "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0006\u0008"+
- "\u0001\uffff\u0001\u000a\u0014\u0008\u0001\u0009\u003e\u0008"+
- "\u0001\u0009\u0001\u0008\u0001\u0009\ud782\u0008\u0800\uffff"+
- "\u1ffe\u0008",
- "",
- "",
- "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
- "\u0001\u000a\u0003\u000d\u0001\uffff\u0015\u000d\u0001\u000e"+
- "\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e\ud782\u000d"+
- "\u0800\uffff\u1ffe\u000d",
- "\u0001\uffff",
- "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
- "\u0001\u000a\u0003\u000d\u0001\uffff\u0015\u000d\u0001\u000e"+
- "\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e\ud782\u000d"+
- "\u0800\uffff\u1ffe\u000d",
- "",
- "",
- "",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "",
- "\u0001\uffff",
- "\u0001\uffff",
- "",
- "\u0001\uffff",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(StringLexer, {
- DFA8_eot:
- org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_eotS),
- DFA8_eof:
- org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_eofS),
- DFA8_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(StringLexer.DFA8_minS),
- DFA8_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(StringLexer.DFA8_maxS),
- DFA8_accept:
- org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_acceptS),
- DFA8_special:
- org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_specialS),
- DFA8_transition: (function() {
- var a = [],
- i,
- numStates = StringLexer.DFA8_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_transitionS[i]));
- }
- return a;
- })()
-});
-
-StringLexer.DFA8 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 8;
- this.eot = StringLexer.DFA8_eot;
- this.eof = StringLexer.DFA8_eof;
- this.min = StringLexer.DFA8_min;
- this.max = StringLexer.DFA8_max;
- this.accept = StringLexer.DFA8_accept;
- this.special = StringLexer.DFA8_special;
- this.transition = StringLexer.DFA8_transition;
-};
-
-org.antlr.lang.extend(StringLexer.DFA8, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1:1: Tokens : ( QUOT | APOS | ESCAPE_QUOT | ESCAPE_APOS | L_PredefinedEntityRef | L_CharRef | L_QuotStringLiteralChar | L_AposStringLiteralChar | L_AnyChar );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA8_2 = input.LA(1);
-
-
- var index8_2 = input.index();
- input.rewind();
- s = -1;
- if ( (LA8_2=='\'') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 11;}
-
- else if ( ((LA8_2>='\t' && LA8_2<='\n')||LA8_2=='\r'||(LA8_2>=' ' && LA8_2<='!')||(LA8_2>='#' && LA8_2<='%')||(LA8_2>='(' && LA8_2<=';')||(LA8_2>='=' && LA8_2<='z')||LA8_2=='|'||(LA8_2>='~' && LA8_2<='\uD7FF')||(LA8_2>='\uE000' && LA8_2<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}
-
- else if ( (LA8_2=='<'||LA8_2=='{'||LA8_2=='}') && (( this.inQuotStr ))) {s = 14;}
-
- else if ( (LA8_2=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 12;
-
-
- input.seek(index8_2);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA8_21 = input.LA(1);
-
-
- var index8_21 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inAposStr )) ) {s = 9;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_21);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA8_24 = input.LA(1);
-
-
- var index8_24 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotStr )) ) {s = 14;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_24);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA8_18 = input.LA(1);
-
-
- var index8_18 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotStr )) ) {s = 14;}
-
- else if ( (( this.inAposStr )) ) {s = 9;}
-
-
- input.seek(index8_18);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA8_3 = input.LA(1);
-
-
- var index8_3 = input.index();
- input.rewind();
- s = -1;
- if ( (LA8_3=='#') ) {s = 15;}
-
- else if ( (LA8_3=='a'||LA8_3=='g'||LA8_3=='l'||LA8_3=='q') && (( this.inQuotStr | this.inAposStr ))) {s = 16;}
-
-
- input.seek(index8_3);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA8_6 = input.LA(1);
-
-
- var index8_6 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_6>='\t' && LA8_6<='\n')||LA8_6=='\r'||(LA8_6>=' ' && LA8_6<='%')||(LA8_6>='(' && LA8_6<=';')||(LA8_6>='=' && LA8_6<='z')||LA8_6=='|'||(LA8_6>='~' && LA8_6<='\uD7FF')||(LA8_6>='\uE000' && LA8_6<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}
-
- else if ( (LA8_6=='<'||LA8_6=='{'||LA8_6=='}') && (( this.inAposStr ))) {s = 9;}
-
- else if ( (LA8_6=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 19;
-
-
- input.seek(index8_6);
- if ( s>=0 ) return s;
- break;
- case 6 :
- var LA8_13 = input.LA(1);
-
-
- var index8_13 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_13>='\t' && LA8_13<='\n')||LA8_13=='\r'||(LA8_13>=' ' && LA8_13<='!')||(LA8_13>='#' && LA8_13<='%')||(LA8_13>='\'' && LA8_13<=';')||(LA8_13>='=' && LA8_13<='z')||LA8_13=='|'||(LA8_13>='~' && LA8_13<='\uD7FF')||(LA8_13>='\uE000' && LA8_13<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}
-
- else if ( (LA8_13=='<'||LA8_13=='{'||LA8_13=='}') && (( this.inQuotStr ))) {s = 14;}
-
- else if ( (LA8_13=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 24;
-
-
- input.seek(index8_13);
- if ( s>=0 ) return s;
- break;
- case 7 :
- var LA8_0 = input.LA(1);
-
-
- var index8_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA8_0=='\"') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 1;}
-
- else if ( (LA8_0=='\'') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 2;}
-
- else if ( (LA8_0=='&') ) {s = 3;}
-
- else if ( ((LA8_0>='\t' && LA8_0<='\n')||LA8_0=='\r'||(LA8_0>=' ' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='%')||(LA8_0>='(' && LA8_0<=';')||(LA8_0>='=' && LA8_0<='z')||LA8_0=='|'||(LA8_0>='~' && LA8_0<='\uD7FF')||(LA8_0>='\uE000' && LA8_0<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 4;}
-
- else if ( (LA8_0=='<'||LA8_0=='{'||LA8_0=='}') && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}
-
-
- input.seek(index8_0);
- if ( s>=0 ) return s;
- break;
- case 8 :
- var LA8_12 = input.LA(1);
-
-
- var index8_12 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inAposStr )) ) {s = 23;}
-
- else if ( (( this.inQuotStr )) ) {s = 14;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_12);
- if ( s>=0 ) return s;
- break;
- case 9 :
- var LA8_7 = input.LA(1);
-
-
- var index8_7 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotStr )) ) {s = 20;}
-
- else if ( (( this.inAposStr )) ) {s = 9;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_7);
- if ( s>=0 ) return s;
- break;
- case 10 :
- var LA8_5 = input.LA(1);
-
-
- var index8_5 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_5>='\t' && LA8_5<='\n')||LA8_5=='\r'||(LA8_5>=' ' && LA8_5<='!')||(LA8_5>='#' && LA8_5<='%')||(LA8_5>='(' && LA8_5<='\uD7FF')||(LA8_5>='\uE000' && LA8_5<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}
-
- else if ( (LA8_5=='\'') && (( this.inQuotStr ))) {s = 14;}
-
- else if ( (LA8_5=='\"') && (( this.inAposStr ))) {s = 9;}
-
- else s = 18;
-
-
- input.seek(index8_5);
- if ( s>=0 ) return s;
- break;
- case 11 :
- var LA8_19 = input.LA(1);
-
-
- var index8_19 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotStr )) ) {s = 25;}
-
- else if ( (( this.inAposStr )) ) {s = 9;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_19);
- if ( s>=0 ) return s;
- break;
- case 12 :
- var LA8_22 = input.LA(1);
-
-
- var index8_22 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inAposStr )) ) {s = 26;}
-
- else if ( (( this.inQuotStr )) ) {s = 14;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_22);
- if ( s>=0 ) return s;
- break;
- case 13 :
- var LA8_17 = input.LA(1);
-
-
- var index8_17 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotStr )) ) {s = 14;}
-
- else if ( (( this.inAposStr )) ) {s = 9;}
-
- else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}
-
-
- input.seek(index8_17);
- if ( s>=0 ) return s;
- break;
- case 14 :
- var LA8_1 = input.LA(1);
-
-
- var index8_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA8_1=='\"') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 6;}
-
- else if ( ((LA8_1>='\t' && LA8_1<='\n')||LA8_1=='\r'||(LA8_1>=' ' && LA8_1<='!')||(LA8_1>='#' && LA8_1<='%')||(LA8_1>='(' && LA8_1<=';')||(LA8_1>='=' && LA8_1<='z')||LA8_1=='|'||(LA8_1>='~' && LA8_1<='\uD7FF')||(LA8_1>='\uE000' && LA8_1<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}
-
- else if ( (LA8_1=='<'||LA8_1=='{'||LA8_1=='}') && (( this.inAposStr ))) {s = 9;}
-
- else if ( (LA8_1=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 7;
-
-
- input.seek(index8_1);
- if ( s>=0 ) return s;
- break;
- case 15 :
- var LA8_11 = input.LA(1);
-
-
- var index8_11 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_11>='\t' && LA8_11<='\n')||LA8_11=='\r'||(LA8_11>=' ' && LA8_11<='!')||(LA8_11>='#' && LA8_11<='%')||(LA8_11>='\'' && LA8_11<=';')||(LA8_11>='=' && LA8_11<='z')||LA8_11=='|'||(LA8_11>='~' && LA8_11<='\uD7FF')||(LA8_11>='\uE000' && LA8_11<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}
-
- else if ( (LA8_11=='<'||LA8_11=='{'||LA8_11=='}') && (( this.inQuotStr ))) {s = 14;}
-
- else if ( (LA8_11=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 22;
-
-
- input.seek(index8_11);
- if ( s>=0 ) return s;
- break;
- case 16 :
- var LA8_8 = input.LA(1);
-
-
- var index8_8 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_8>='\t' && LA8_8<='\n')||LA8_8=='\r'||(LA8_8>=' ' && LA8_8<='%')||(LA8_8>='(' && LA8_8<=';')||(LA8_8>='=' && LA8_8<='z')||LA8_8=='|'||(LA8_8>='~' && LA8_8<='\uD7FF')||(LA8_8>='\uE000' && LA8_8<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}
-
- else if ( (LA8_8=='<'||LA8_8=='{'||LA8_8=='}') && (( this.inAposStr ))) {s = 9;}
-
- else if ( (LA8_8=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}
-
- else s = 21;
-
-
- input.seek(index8_8);
- if ( s>=0 ) return s;
- break;
- case 17 :
- var LA8_4 = input.LA(1);
-
-
- var index8_4 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA8_4>='\t' && LA8_4<='\n')||LA8_4=='\r'||(LA8_4>=' ' && LA8_4<='!')||(LA8_4>='#' && LA8_4<='%')||(LA8_4>='(' && LA8_4<=';')||(LA8_4>='=' && LA8_4<='z')||LA8_4=='|'||(LA8_4>='~' && LA8_4<='\uD7FF')||(LA8_4>='\uE000' && LA8_4<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 4;}
-
- else if ( (LA8_4=='\'') && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}
-
- else if ( (LA8_4=='\"') && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}
-
- else if ( (LA8_4=='<'||LA8_4=='{'||LA8_4=='}') && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}
-
- else s = 17;
-
-
- input.seek(index8_4);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 8, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-
-})();
-exports.StringLexer = StringLexer; });
-define('ace/mode/xquery/XMLLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g 2012-09-05 10:41:40
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Distributed under the BSD license:
- *
- * Copyright (c) 2010, Ajax.org B.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Ajax.org B.V. nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***** END LICENSE BLOCK ***** */
-var org = require("./antlr3-all").org;
-var XQDTLexer = require("./XQDTLexer").XQDTLexer;
-
-
-var XMLLexer = function(input, state) {
-// alternate constructor @todo
-// public XMLLexer(CharStream input)
-// public XMLLexer(CharStream input, RecognizerSharedState state) {
- if (!state) {
- state = new org.antlr.runtime.RecognizerSharedState();
- }
-
- (function(){
-
-
- this.inElem = true;
- this.inAposAttr = false;
- this.inQuotAttr = false;
-
- this.isInElement = function()
- {
- return this.inElem;
- }
-
- this.isInAposAttribute = function()
- {
- return this.inAposAttr;
- }
-
- this.isInQuotAttr = function()
- {
- return this.inQuotAttr;
- }
-
- this.addToStack = function(stack) {
- if (!this.inAposAttr && !this.inQuotAttr)
- this.inElem = false;
- stack.push(this);
- }
-
-
- // dummy list for warning elimination
- //List<Stack<Object>> dummy = new ArrayList<Stack<Object>>();
-
- // when we start, the '<' has already been eaten by the other lexer
- //boolean inElem = true;
- //boolean inAposAttr = false;
- //boolean inQuotAttr = false;
- //
- //public boolean isInElement()
- //{
- // return inElem;
- //}
- //
- //public boolean isInAposAttribute()
- //{
- // return inAposAttr;
- //}
- //
- //public boolean isInQuotAttr()
- //{
- // return inQuotAttr;
- //}
- //
- //@Override
- //public void addToStack(List<XQDTLexer> stack) {
- // if (!inAposAttr && !inQuotAttr)
- // inElem = false;
- // stack.add(this);
- //}
- //
- //private boolean log() {
- // System.out.println("inApos:\t" + inAposAttr);
- // System.out.println("inQuot:\t" + inQuotAttr);
- // System.out.println("inElem:\t" + inElem);
- // System.out.println("---------------------");
- // return false;
- //}
-
-
- }).call(this);
-
- this.dfa16 = new XMLLexer.DFA16(this);
- XMLLexer.superclass.constructor.call(this, input, state);
-
-
-};
-
-org.antlr.lang.augmentObject(XMLLexer, {
- EOF: -1,
- L_QuotAttrContentChar: 4,
- L_AposAttrContentChar: 5,
- L_ElementContentChar: 6,
- L_CDataSection: 7,
- L_PredefinedEntityRef: 8,
- L_CharRef: 9,
- ESCAPE_LBRACKET: 10,
- ESCAPE_RBRACKET: 11,
- ESCAPE_APOS: 12,
- ESCAPE_QUOT: 13,
- CDATA_START: 14,
- CDATA_END: 15,
- ANCESTOR: 16,
- ANCESTOR_OR_SELF: 17,
- AND: 18,
- AS: 19,
- ASCENDING: 20,
- AT: 21,
- ATTRIBUTE: 22,
- BASE_URI: 23,
- BOUNDARY_SPACE: 24,
- BY: 25,
- CASE: 26,
- CAST: 27,
- CASTABLE: 28,
- CHILD: 29,
- COLLATION: 30,
- COMMENT: 31,
- CONSTRUCTION: 32,
- COPY_NAMESPACES: 33,
- DECLARE: 34,
- DEFAULT: 35,
- DESCENDANT: 36,
- DESCENDANT_OR_SELF: 37,
- DESCENDING: 38,
- DIV: 39,
- DOCUMENT: 40,
- DOCUMENT_NODE: 41,
- ELEMENT: 42,
- ELSE: 43,
- EMPTY: 44,
- EMPTY_SEQUENCE: 45,
- ENCODING: 46,
- EQ: 47,
- EVERY: 48,
- EXCEPT: 49,
- EXTERNAL: 50,
- FOLLOWING: 51,
- FOLLOWING_SIBLING: 52,
- FOR: 53,
- FUNCTION: 54,
- GE: 55,
- GREATEST: 56,
- GT: 57,
- IDIV: 58,
- IF: 59,
- IMPORT: 60,
- IN: 61,
- INHERIT: 62,
- INSTANCE: 63,
- INTERSECT: 64,
- IS: 65,
- ITEM: 66,
- LAX: 67,
- LE: 68,
- LEAST: 69,
- LET: 70,
- LT: 71,
- MOD: 72,
- MODULE: 73,
- NAMESPACE: 74,
- NE: 75,
- NO_INHERIT: 76,
- NO_PRESERVE: 77,
- NODE: 78,
- JSON: 79,
- OF: 80,
- OPTION: 81,
- OR: 82,
- ORDER: 83,
- ORDERED: 84,
- ORDERING: 85,
- PARENT: 86,
- PRECEDING: 87,
- PRECEDING_SIBLING: 88,
- PRESERVE: 89,
- PROCESSING_INSTRUCTION: 90,
- STRUCTURED_ITEM: 91,
- JSON_ITEM: 92,
- OBJECT: 93,
- ARRAY: 94,
- RETURN: 95,
- SATISFIES: 96,
- SCHEMA: 97,
- SCHEMA_ATTRIBUTE: 98,
- SCHEMA_ELEMENT: 99,
- SELF: 100,
- SOME: 101,
- STABLE: 102,
- STRICT: 103,
- STRIP: 104,
- TEXT: 105,
- THEN: 106,
- TO: 107,
- TREAT: 108,
- TYPESWITCH: 109,
- UNION: 110,
- UNORDERED: 111,
- VALIDATE: 112,
- VARIABLE: 113,
- VERSION: 114,
- WHERE: 115,
- XQUERY: 116,
- ALLOWING: 117,
- CATCH: 118,
- CONTEXT: 119,
- COUNT: 120,
- DECIMAL_FORMAT: 121,
- DECIMAL_SEPARATOR: 122,
- DIGIT: 123,
- END: 124,
- GROUP: 125,
- GROUPING_SEPARATOR: 126,
- INFINITY: 127,
- MINUS_SIGN: 128,
- NAMESPACE_NODE: 129,
- NAN: 130,
- NEXT: 131,
- ONLY: 132,
- PATTERN_SEPARATOR: 133,
- PERCENT: 134,
- PER_MILLE: 135,
- PREVIOUS: 136,
- SLIDING: 137,
- START: 138,
- SWITCH: 139,
- TRY: 140,
- TUMBLING: 141,
- TYPE: 142,
- WHEN: 143,
- WINDOW: 144,
- ZERO_DIGIT: 145,
- AFTER: 146,
- BEFORE: 147,
- COPY: 148,
- DELETE: 149,
- FIRST: 150,
- INSERT: 151,
- INTO: 152,
- POSITION: 153,
- APPEND: 154,
- LAST: 155,
- MODIFY: 156,
- NODES: 157,
- RENAME: 158,
- REPLACE: 159,
- REVALIDATION: 160,
- SKIP: 161,
- UPDATING: 162,
- VALUE: 163,
- WITH: 164,
- ALL: 165,
- ANY: 166,
- CONTAINS: 167,
- CONTENT: 168,
- DIACRITICS: 169,
- DIFFERENT: 170,
- DISTANCE: 171,
- ENTIRE: 172,
- EXACTLY: 173,
- FROM: 174,
- FT_OPTION: 175,
- FTAND: 176,
- FTNOT: 177,
- FTOR: 178,
- INSENSITIVE: 179,
- LANGUAGE: 180,
- LEVELS: 181,
- LOWERCASE: 182,
- MOST: 183,
- NO: 184,
- NOT: 185,
- OCCURS: 186,
- PARAGRAPH: 187,
- PARAGRAPHS: 188,
- PHRASE: 189,
- RELATIONSHIP: 190,
- SAME: 191,
- SCORE: 192,
- SENSITIVE: 193,
- SENTENCE: 194,
- SENTENCES: 195,
- STEMMING: 196,
- STOP: 197,
- THESAURUS: 198,
- TIMES: 199,
- UPPERCASE: 200,
- USING: 201,
- WEIGHT: 202,
- WILDCARDS: 203,
- WITHOUT: 204,
- WORD: 205,
- WORDS: 206,
- BREAK: 207,
- CONTINUE: 208,
- EXIT: 209,
- LOOP: 210,
- RETURNING: 211,
- WHILE: 212,
- CHECK: 213,
- COLLECTION: 214,
- CONSTRAINT: 215,
- FOREACH: 216,
- FOREIGN: 217,
- INDEX: 218,
- INTEGRITY: 219,
- KEY: 220,
- ON: 221,
- UNIQUE: 222,
- AMP_ER: 223,
- APOS_ER: 224,
- QUOT_ER: 225,
- CONCAT: 226,
- LPAREN: 227,
- RPAREN: 228,
- DOLLAR: 229,
- L_UNION_BRACKET: 230,
- R_UNION_BRACKET: 231,
- LBRACKET: 232,
- RBRACKET: 233,
- LSQUARE: 234,
- RSQUARE: 235,
- EQUAL: 236,
- BIND: 237,
- NOTEQUAL: 238,
- ANN_PERCENT: 239,
- HASH: 240,
- AMP: 241,
- COMMA: 242,
- QUESTION: 243,
- STAR: 244,
- PLUS: 245,
- MINUS: 246,
- SMALLER: 247,
- GREATER: 248,
- SMALLEREQ: 249,
- GREATEREQ: 250,
- SMALLER_SMALLER: 251,
- GREATER_GREATER: 252,
- SLASH: 253,
- SLASH_SLASH: 254,
- BANG: 255,
- DOT: 256,
- DOT_DOT: 257,
- COLON: 258,
- COLON_COLON: 259,
- EMPTY_CLOSE_TAG: 260,
- CLOSE_TAG: 261,
- SEMICOLON: 262,
- VBAR: 263,
- PRAGMA_START: 264,
- PRAGMA_END: 265,
- XML_COMMENT_START: 266,
- XML_COMMENT_END: 267,
- PI_START: 268,
- PI_END: 269,
- ATTR_SIGN: 270,
- Q: 271,
- CHARREF_DEC: 272,
- CHARREF_HEX: 273,
- APOS: 274,
- QUOT: 275,
- NCNameStartChar: 276,
- NCNameChar: 277,
- L_NCName: 278,
- Letter: 279,
- HexLetter: 280,
- Digit: 281,
- Digits: 282,
- S: 283,
- SU: 284,
- L_Pragma: 285,
- L_DirCommentConstructor: 286,
- L_DirPIConstructor: 287,
- L_IntegerLiteral: 288,
- L_DecimalLiteral: 289,
- L_DoubleLiteral: 290,
- L_Comment: 291,
- L_AnyChar: 292,
- NCNameUnprotected: 293,
- XMLDigit: 294
-});
-
-(function(){
-var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
- EOF = org.antlr.runtime.Token.EOF;
-org.antlr.lang.extend(XMLLexer, XQDTLexer, {
- EOF : -1,
- L_QuotAttrContentChar : 4,
- L_AposAttrContentChar : 5,
- L_ElementContentChar : 6,
- L_CDataSection : 7,
- L_PredefinedEntityRef : 8,
- L_CharRef : 9,
- ESCAPE_LBRACKET : 10,
- ESCAPE_RBRACKET : 11,
- ESCAPE_APOS : 12,
- ESCAPE_QUOT : 13,
- CDATA_START : 14,
- CDATA_END : 15,
- ANCESTOR : 16,
- ANCESTOR_OR_SELF : 17,
- AND : 18,
- AS : 19,
- ASCENDING : 20,
- AT : 21,
- ATTRIBUTE : 22,
- BASE_URI : 23,
- BOUNDARY_SPACE : 24,
- BY : 25,
- CASE : 26,
- CAST : 27,
- CASTABLE : 28,
- CHILD : 29,
- COLLATION : 30,
- COMMENT : 31,
- CONSTRUCTION : 32,
- COPY_NAMESPACES : 33,
- DECLARE : 34,
- DEFAULT : 35,
- DESCENDANT : 36,
- DESCENDANT_OR_SELF : 37,
- DESCENDING : 38,
- DIV : 39,
- DOCUMENT : 40,
- DOCUMENT_NODE : 41,
- ELEMENT : 42,
- ELSE : 43,
- EMPTY : 44,
- EMPTY_SEQUENCE : 45,
- ENCODING : 46,
- EQ : 47,
- EVERY : 48,
- EXCEPT : 49,
- EXTERNAL : 50,
- FOLLOWING : 51,
- FOLLOWING_SIBLING : 52,
- FOR : 53,
- FUNCTION : 54,
- GE : 55,
- GREATEST : 56,
- GT : 57,
- IDIV : 58,
- IF : 59,
- IMPORT : 60,
- IN : 61,
- INHERIT : 62,
- INSTANCE : 63,
- INTERSECT : 64,
- IS : 65,
- ITEM : 66,
- LAX : 67,
- LE : 68,
- LEAST : 69,
- LET : 70,
- LT : 71,
- MOD : 72,
- MODULE : 73,
- NAMESPACE : 74,
- NE : 75,
- NO_INHERIT : 76,
- NO_PRESERVE : 77,
- NODE : 78,
- JSON : 79,
- OF : 80,
- OPTION : 81,
- OR : 82,
- ORDER : 83,
- ORDERED : 84,
- ORDERING : 85,
- PARENT : 86,
- PRECEDING : 87,
- PRECEDING_SIBLING : 88,
- PRESERVE : 89,
- PROCESSING_INSTRUCTION : 90,
- STRUCTURED_ITEM : 91,
- JSON_ITEM : 92,
- OBJECT : 93,
- ARRAY : 94,
- RETURN : 95,
- SATISFIES : 96,
- SCHEMA : 97,
- SCHEMA_ATTRIBUTE : 98,
- SCHEMA_ELEMENT : 99,
- SELF : 100,
- SOME : 101,
- STABLE : 102,
- STRICT : 103,
- STRIP : 104,
- TEXT : 105,
- THEN : 106,
- TO : 107,
- TREAT : 108,
- TYPESWITCH : 109,
- UNION : 110,
- UNORDERED : 111,
- VALIDATE : 112,
- VARIABLE : 113,
- VERSION : 114,
- WHERE : 115,
- XQUERY : 116,
- ALLOWING : 117,
- CATCH : 118,
- CONTEXT : 119,
- COUNT : 120,
- DECIMAL_FORMAT : 121,
- DECIMAL_SEPARATOR : 122,
- DIGIT : 123,
- END : 124,
- GROUP : 125,
- GROUPING_SEPARATOR : 126,
- INFINITY : 127,
- MINUS_SIGN : 128,
- NAMESPACE_NODE : 129,
- NAN : 130,
- NEXT : 131,
- ONLY : 132,
- PATTERN_SEPARATOR : 133,
- PERCENT : 134,
- PER_MILLE : 135,
- PREVIOUS : 136,
- SLIDING : 137,
- START : 138,
- SWITCH : 139,
- TRY : 140,
- TUMBLING : 141,
- TYPE : 142,
- WHEN : 143,
- WINDOW : 144,
- ZERO_DIGIT : 145,
- AFTER : 146,
- BEFORE : 147,
- COPY : 148,
- DELETE : 149,
- FIRST : 150,
- INSERT : 151,
- INTO : 152,
- POSITION : 153,
- APPEND : 154,
- LAST : 155,
- MODIFY : 156,
- NODES : 157,
- RENAME : 158,
- REPLACE : 159,
- REVALIDATION : 160,
- SKIP : 161,
- UPDATING : 162,
- VALUE : 163,
- WITH : 164,
- ALL : 165,
- ANY : 166,
- CONTAINS : 167,
- CONTENT : 168,
- DIACRITICS : 169,
- DIFFERENT : 170,
- DISTANCE : 171,
- ENTIRE : 172,
- EXACTLY : 173,
- FROM : 174,
- FT_OPTION : 175,
- FTAND : 176,
- FTNOT : 177,
- FTOR : 178,
- INSENSITIVE : 179,
- LANGUAGE : 180,
- LEVELS : 181,
- LOWERCASE : 182,
- MOST : 183,
- NO : 184,
- NOT : 185,
- OCCURS : 186,
- PARAGRAPH : 187,
- PARAGRAPHS : 188,
- PHRASE : 189,
- RELATIONSHIP : 190,
- SAME : 191,
- SCORE : 192,
- SENSITIVE : 193,
- SENTENCE : 194,
- SENTENCES : 195,
- STEMMING : 196,
- STOP : 197,
- THESAURUS : 198,
- TIMES : 199,
- UPPERCASE : 200,
- USING : 201,
- WEIGHT : 202,
- WILDCARDS : 203,
- WITHOUT : 204,
- WORD : 205,
- WORDS : 206,
- BREAK : 207,
- CONTINUE : 208,
- EXIT : 209,
- LOOP : 210,
- RETURNING : 211,
- WHILE : 212,
- CHECK : 213,
- COLLECTION : 214,
- CONSTRAINT : 215,
- FOREACH : 216,
- FOREIGN : 217,
- INDEX : 218,
- INTEGRITY : 219,
- KEY : 220,
- ON : 221,
- UNIQUE : 222,
- AMP_ER : 223,
- APOS_ER : 224,
- QUOT_ER : 225,
- CONCAT : 226,
- LPAREN : 227,
- RPAREN : 228,
- DOLLAR : 229,
- L_UNION_BRACKET : 230,
- R_UNION_BRACKET : 231,
- LBRACKET : 232,
- RBRACKET : 233,
- LSQUARE : 234,
- RSQUARE : 235,
- EQUAL : 236,
- BIND : 237,
- NOTEQUAL : 238,
- ANN_PERCENT : 239,
- HASH : 240,
- AMP : 241,
- COMMA : 242,
- QUESTION : 243,
- STAR : 244,
- PLUS : 245,
- MINUS : 246,
- SMALLER : 247,
- GREATER : 248,
- SMALLEREQ : 249,
- GREATEREQ : 250,
- SMALLER_SMALLER : 251,
- GREATER_GREATER : 252,
- SLASH : 253,
- SLASH_SLASH : 254,
- BANG : 255,
- DOT : 256,
- DOT_DOT : 257,
- COLON : 258,
- COLON_COLON : 259,
- EMPTY_CLOSE_TAG : 260,
- CLOSE_TAG : 261,
- SEMICOLON : 262,
- VBAR : 263,
- PRAGMA_START : 264,
- PRAGMA_END : 265,
- XML_COMMENT_START : 266,
- XML_COMMENT_END : 267,
- PI_START : 268,
- PI_END : 269,
- ATTR_SIGN : 270,
- Q : 271,
- CHARREF_DEC : 272,
- CHARREF_HEX : 273,
- APOS : 274,
- QUOT : 275,
- NCNameStartChar : 276,
- NCNameChar : 277,
- L_NCName : 278,
- Letter : 279,
- HexLetter : 280,
- Digit : 281,
- Digits : 282,
- S : 283,
- SU : 284,
- L_Pragma : 285,
- L_DirCommentConstructor : 286,
- L_DirPIConstructor : 287,
- L_IntegerLiteral : 288,
- L_DecimalLiteral : 289,
- L_DoubleLiteral : 290,
- L_Comment : 291,
- L_AnyChar : 292,
- NCNameUnprotected : 293,
- XMLDigit : 294,
- getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g"; }
-});
-org.antlr.lang.augmentObject(XMLLexer.prototype, {
- // $ANTLR start QUOT
- mQUOT: function() {
- try {
- var _type = this.QUOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:132:6: ({...}? => '\"' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:132:8: {...}? => '\"'
- if ( !(( this.inElem || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "QUOT", " this.inElem || this.inQuotAttr ");
- }
- this.match('\"');
- if (!this.inAposAttr) this.inQuotAttr = (!this.inQuotAttr);
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "QUOT",
-
- // $ANTLR start APOS
- mAPOS: function() {
- try {
- var _type = this.APOS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:133:6: ({...}? => '\\'' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:133:8: {...}? => '\\''
- if ( !(( this.inElem || this.inAposAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "APOS", " this.inElem || this.inAposAttr ");
- }
- this.match('\'');
- if (!this.inQuotAttr) this.inAposAttr = !this.inAposAttr;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "APOS",
-
- // $ANTLR start L_QuotAttrContentChar
- mL_QuotAttrContentChar: function() {
- try {
- var _type = this.L_QuotAttrContentChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:136:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:136:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_QuotAttrContentChar", " this.inQuotAttr ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:137:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt1=0;
- loop1:
- do {
- var alt1=2;
- var LA1_0 = this.input.LA(1);
-
- if ( ((LA1_0>='\t' && LA1_0<='\n')||LA1_0=='\r'||(LA1_0>=' ' && LA1_0<='!')||(LA1_0>='#' && LA1_0<='%')||(LA1_0>='(' && LA1_0<=';')||(LA1_0>='=' && LA1_0<='z')||LA1_0=='|'||(LA1_0>='~' && LA1_0<='\uD7FF')||(LA1_0>='\uE000' && LA1_0<='\uFFFD')) ) {
- alt1=1;
- }
-
-
- switch (alt1) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt1 >= 1 ) {
- break loop1;
- }
- var eee = new org.antlr.runtime.EarlyExitException(1, this.input);
- throw eee;
- }
- cnt1++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_QuotAttrContentChar",
-
- // $ANTLR start L_AposAttrContentChar
- mL_AposAttrContentChar: function() {
- try {
- var _type = this.L_AposAttrContentChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:143:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:143:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( this.inAposAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AposAttrContentChar", " this.inAposAttr ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:144:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt2=0;
- loop2:
- do {
- var alt2=2;
- var LA2_0 = this.input.LA(1);
-
- if ( ((LA2_0>='\t' && LA2_0<='\n')||LA2_0=='\r'||(LA2_0>=' ' && LA2_0<='!')||(LA2_0>='#' && LA2_0<='%')||(LA2_0>='(' && LA2_0<=';')||(LA2_0>='=' && LA2_0<='z')||LA2_0=='|'||(LA2_0>='~' && LA2_0<='\uD7FF')||(LA2_0>='\uE000' && LA2_0<='\uFFFD')) ) {
- alt2=1;
- }
-
-
- switch (alt2) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt2 >= 1 ) {
- break loop2;
- }
- var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
- throw eee;
- }
- cnt2++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_AposAttrContentChar",
-
- // $ANTLR start L_ElementContentChar
- mL_ElementContentChar: function() {
- try {
- var _type = this.L_ElementContentChar;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:151:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:151:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- if ( !(( !this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_ElementContentChar", " !this.inElem ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:152:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
- var cnt3=0;
- loop3:
- do {
- var alt3=2;
- var LA3_0 = this.input.LA(1);
-
- if ( ((LA3_0>='\t' && LA3_0<='\n')||LA3_0=='\r'||(LA3_0>=' ' && LA3_0<='%')||(LA3_0>='\'' && LA3_0<=';')||(LA3_0>='=' && LA3_0<='z')||LA3_0=='|'||(LA3_0>='~' && LA3_0<='\uD7FF')||(LA3_0>='\uE000' && LA3_0<='\uFFFD')) ) {
- alt3=1;
- }
-
-
- switch (alt3) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt3 >= 1 ) {
- break loop3;
- }
- var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
- throw eee;
- }
- cnt3++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_ElementContentChar",
-
- // $ANTLR start GREATER
- mGREATER: function() {
- try {
- var _type = this.GREATER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:158:2: ({...}? => '>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:158:4: {...}? => '>'
- if ( !(( this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "GREATER", " this.inElem ");
- }
- this.match('>');
- this.inElem = false;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "GREATER",
-
- // $ANTLR start EMPTY_CLOSE_TAG
- mEMPTY_CLOSE_TAG: function() {
- try {
- var _type = this.EMPTY_CLOSE_TAG;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:162:2: ({...}? => '/>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:162:4: {...}? => '/>'
- if ( !(( this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "EMPTY_CLOSE_TAG", " this.inElem ");
- }
- this.match("/>");
-
- this.inElem = false;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EMPTY_CLOSE_TAG",
-
- // $ANTLR start S
- mS: function() {
- try {
- var _type = this.S;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:2: ({...}? => ( ' ' | '\\t' | '\\r' | '\\n' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:4: {...}? => ( ' ' | '\\t' | '\\r' | '\\n' )+
- if ( !(( this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "S", " this.inElem ");
- }
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:24: ( ' ' | '\\t' | '\\r' | '\\n' )+
- var cnt4=0;
- loop4:
- do {
- var alt4=2;
- var LA4_0 = this.input.LA(1);
-
- if ( ((LA4_0>='\t' && LA4_0<='\n')||LA4_0=='\r'||LA4_0==' ') ) {
- alt4=1;
- }
-
-
- switch (alt4) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt4 >= 1 ) {
- break loop4;
- }
- var eee = new org.antlr.runtime.EarlyExitException(4, this.input);
- throw eee;
- }
- cnt4++;
- } while (true);
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "S",
-
- // $ANTLR start L_NCName
- mL_NCName: function() {
- try {
- var _type = this.L_NCName;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:172:2: ({...}? => NCNameUnprotected )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:172:4: {...}? => NCNameUnprotected
- if ( !(( this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_NCName", " this.inElem ");
- }
- this.mNCNameUnprotected();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_NCName",
-
- // $ANTLR start NCNameUnprotected
- mNCNameUnprotected: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:2: ( NCNameStartChar ( NCNameChar )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:4: NCNameStartChar ( NCNameChar )*
- this.mNCNameStartChar();
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:20: ( NCNameChar )*
- loop5:
- do {
- var alt5=2;
- var LA5_0 = this.input.LA(1);
-
- if ( ((LA5_0>='-' && LA5_0<='.')||(LA5_0>='0' && LA5_0<='9')||(LA5_0>='A' && LA5_0<='Z')||LA5_0=='_'||(LA5_0>='a' && LA5_0<='z')) ) {
- alt5=1;
- }
-
-
- switch (alt5) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:20: NCNameChar
- this.mNCNameChar();
-
-
- break;
-
- default :
- break loop5;
- }
- } while (true);
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "NCNameUnprotected",
-
- // $ANTLR start NCNameStartChar
- mNCNameStartChar: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:180:2: ( Letter | '_' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "NCNameStartChar",
-
- // $ANTLR start NCNameChar
- mNCNameChar: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:184:2: ( Letter | XMLDigit | '.' | '-' | '_' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='-' && this.input.LA(1)<='.')||(this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "NCNameChar",
-
- // $ANTLR start Letter
- mLetter: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:188:2: ( 'a' .. 'z' | 'A' .. 'Z' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "Letter",
-
- // $ANTLR start XMLDigit
- mXMLDigit: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:192:2: ( '0' .. '9' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:192:4: '0' .. '9'
- this.matchRange('0','9');
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "XMLDigit",
-
- // $ANTLR start EQUAL
- mEQUAL: function() {
- try {
- var _type = this.EQUAL;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:207:7: ({...}? => '=' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:207:9: {...}? => '='
- if ( !(( this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "EQUAL", " this.inElem ");
- }
- this.match('=');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "EQUAL",
-
- // $ANTLR start ESCAPE_APOS
- mESCAPE_APOS: function() {
- try {
- var _type = this.ESCAPE_APOS;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:208:13: ({...}? => '\\'\\'' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:208:15: {...}? => '\\'\\''
- if ( !(( this.inAposAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_APOS", " this.inAposAttr ");
- }
- this.match("''");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_APOS",
-
- // $ANTLR start ESCAPE_QUOT
- mESCAPE_QUOT: function() {
- try {
- var _type = this.ESCAPE_QUOT;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:209:13: ({...}? => '\"\"' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:209:15: {...}? => '\"\"'
- if ( !(( this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_QUOT", " this.inQuotAttr ");
- }
- this.match("\"\"");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_QUOT",
-
- // $ANTLR start ESCAPE_LBRACKET
- mESCAPE_LBRACKET: function() {
- try {
- var _type = this.ESCAPE_LBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:212:2: ({...}? => '{{' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:212:4: {...}? => '{{'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_LBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match("{{");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_LBRACKET",
-
- // $ANTLR start ESCAPE_RBRACKET
- mESCAPE_RBRACKET: function() {
- try {
- var _type = this.ESCAPE_RBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:216:2: ({...}? => '}}' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:216:4: {...}? => '}}'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_RBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match("}}");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "ESCAPE_RBRACKET",
-
- // $ANTLR start LBRACKET
- mLBRACKET: function() {
- try {
- var _type = this.LBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:219:10: ({...}? => '{' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:219:12: {...}? => '{'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "LBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match('{');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "LBRACKET",
-
- // $ANTLR start RBRACKET
- mRBRACKET: function() {
- try {
- var _type = this.RBRACKET;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:220:10: ({...}? => '}' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:220:12: {...}? => '}'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "RBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match('}');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "RBRACKET",
-
- // $ANTLR start SMALLER
- mSMALLER: function() {
- try {
- var _type = this.SMALLER;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:221:9: ( '<' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:221:11: '<'
- this.match('<');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "SMALLER",
-
- // $ANTLR start CLOSE_TAG
- mCLOSE_TAG: function() {
- try {
- var _type = this.CLOSE_TAG;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:222:11: ({...}? => '</' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:222:13: {...}? => '</'
- if ( !(( !this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "CLOSE_TAG", " !this.inElem ");
- }
- this.match("</");
-
- this.inElem = true;
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CLOSE_TAG",
-
- // $ANTLR start CDATA_START
- mCDATA_START: function() {
- try {
- var _type = this.CDATA_START;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:224:13: ( '<![CDATA[' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:224:15: '<![CDATA['
- this.match("<![CDATA[");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CDATA_START",
-
- // $ANTLR start CDATA_END
- mCDATA_END: function() {
- try {
- var _type = this.CDATA_END;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:225:12: ( ']]>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:225:14: ']]>'
- this.match("]]>");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "CDATA_END",
-
- // $ANTLR start L_CDataSection
- mL_CDataSection: function() {
- try {
- var _type = this.L_CDataSection;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:3: ({...}? => CDATA_START ( options {greedy=false; } : ( . )* ) CDATA_END )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:5: {...}? => CDATA_START ( options {greedy=false; } : ( . )* ) CDATA_END
- if ( !(( !this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CDataSection", " !this.inElem ");
- }
- this.mCDATA_START();
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:38: ( options {greedy=false; } : ( . )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: ( . )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: ( . )*
- loop6:
- do {
- var alt6=2;
- var LA6_0 = this.input.LA(1);
-
- if ( (LA6_0==']') ) {
- var LA6_1 = this.input.LA(2);
-
- if ( (LA6_1==']') ) {
- var LA6_3 = this.input.LA(3);
-
- if ( (LA6_3=='>') ) {
- alt6=2;
- }
- else if ( ((LA6_3>='\u0000' && LA6_3<='=')||(LA6_3>='?' && LA6_3<='\uFFFF')) ) {
- alt6=1;
- }
-
-
- }
- else if ( ((LA6_1>='\u0000' && LA6_1<='\\')||(LA6_1>='^' && LA6_1<='\uFFFF')) ) {
- alt6=1;
- }
-
-
- }
- else if ( ((LA6_0>='\u0000' && LA6_0<='\\')||(LA6_0>='^' && LA6_0<='\uFFFF')) ) {
- alt6=1;
- }
-
-
- switch (alt6) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop6;
- }
- } while (true);
-
-
-
-
- this.mCDATA_END();
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_CDataSection",
-
- // $ANTLR start L_PredefinedEntityRef
- mL_PredefinedEntityRef: function() {
- try {
- var _type = this.L_PredefinedEntityRef;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:2: ({...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:4: {...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_PredefinedEntityRef", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match('&');
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:67: ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' )
- var alt7=5;
- switch ( this.input.LA(1) ) {
- case 'l':
- alt7=1;
- break;
- case 'g':
- alt7=2;
- break;
- case 'a':
- var LA7_3 = this.input.LA(2);
-
- if ( (LA7_3=='p') ) {
- alt7=3;
- }
- else if ( (LA7_3=='m') ) {
- alt7=5;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 7, 3, this.input);
-
- throw nvae;
- }
- break;
- case 'q':
- alt7=4;
- break;
- default:
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 7, 0, this.input);
-
- throw nvae;
- }
-
- switch (alt7) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:68: 'lt'
- this.match("lt");
-
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:75: 'gt'
- this.match("gt");
-
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:82: 'apos'
- this.match("apos");
-
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:91: 'quot'
- this.match("quot");
-
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:100: 'amp'
- this.match("amp");
-
-
-
- break;
-
- }
-
- this.match(';');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_PredefinedEntityRef",
-
- // $ANTLR start L_CharRef
- mL_CharRef: function() {
- try {
- var _type = this.L_CharRef;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:2: ({...}? => '&#' ( '0' .. '9' )+ ';' | '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';' )
- var alt10=2;
- var LA10_0 = this.input.LA(1);
-
- if ( (LA10_0=='&') ) {
- var LA10_1 = this.input.LA(2);
-
- if ( (LA10_1=='#') ) {
- var LA10_2 = this.input.LA(3);
-
- if ( (LA10_2=='x') ) {
- alt10=2;
- }
- else if ( ((LA10_2>='0' && LA10_2<='9')) && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {
- alt10=1;
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 10, 2, this.input);
-
- throw nvae;
- }
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 10, 1, this.input);
-
- throw nvae;
- }
- }
- else {
- var nvae =
- new org.antlr.runtime.NoViableAltException("", 10, 0, this.input);
-
- throw nvae;
- }
- switch (alt10) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:4: {...}? => '&#' ( '0' .. '9' )+ ';'
- if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CharRef", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
- }
- this.match("&#");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:68: ( '0' .. '9' )+
- var cnt8=0;
- loop8:
- do {
- var alt8=2;
- var LA8_0 = this.input.LA(1);
-
- if ( ((LA8_0>='0' && LA8_0<='9')) ) {
- alt8=1;
- }
-
-
- switch (alt8) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:69: '0' .. '9'
- this.matchRange('0','9');
-
-
- break;
-
- default :
- if ( cnt8 >= 1 ) {
- break loop8;
- }
- var eee = new org.antlr.runtime.EarlyExitException(8, this.input);
- throw eee;
- }
- cnt8++;
- } while (true);
-
- this.match(';');
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:86: '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';'
- this.match("&#x");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:92: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+
- var cnt9=0;
- loop9:
- do {
- var alt9=2;
- var LA9_0 = this.input.LA(1);
-
- if ( ((LA9_0>='0' && LA9_0<='9')||(LA9_0>='A' && LA9_0<='F')||(LA9_0>='a' && LA9_0<='f')) ) {
- alt9=1;
- }
-
-
- switch (alt9) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt9 >= 1 ) {
- break loop9;
- }
- var eee = new org.antlr.runtime.EarlyExitException(9, this.input);
- throw eee;
- }
- cnt9++;
- } while (true);
-
- this.match(';');
-
-
- break;
-
- }
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_CharRef",
-
- // $ANTLR start L_DirCommentConstructor
- mL_DirCommentConstructor: function() {
- try {
- var _type = this.L_DirCommentConstructor;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:2: ({...}? => '<!--' ( options {greedy=false; } : ( . )* ) '-->' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:4: {...}? => '<!--' ( options {greedy=false; } : ( . )* ) '-->'
- if ( !(( !this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_DirCommentConstructor", " !this.inElem ");
- }
- this.match("<!--");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:32: ( options {greedy=false; } : ( . )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: ( . )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: ( . )*
- loop11:
- do {
- var alt11=2;
- var LA11_0 = this.input.LA(1);
-
- if ( (LA11_0=='-') ) {
- var LA11_1 = this.input.LA(2);
-
- if ( (LA11_1=='-') ) {
- var LA11_3 = this.input.LA(3);
-
- if ( (LA11_3=='>') ) {
- alt11=2;
- }
- else if ( ((LA11_3>='\u0000' && LA11_3<='=')||(LA11_3>='?' && LA11_3<='\uFFFF')) ) {
- alt11=1;
- }
-
-
- }
- else if ( ((LA11_1>='\u0000' && LA11_1<=',')||(LA11_1>='.' && LA11_1<='\uFFFF')) ) {
- alt11=1;
- }
-
-
- }
- else if ( ((LA11_0>='\u0000' && LA11_0<=',')||(LA11_0>='.' && LA11_0<='\uFFFF')) ) {
- alt11=1;
- }
-
-
- switch (alt11) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop11;
- }
- } while (true);
-
-
-
-
- this.match("-->");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DirCommentConstructor",
-
- // $ANTLR start L_DirPIConstructor
- mL_DirPIConstructor: function() {
- try {
- var _type = this.L_DirPIConstructor;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:249:2: ({...}? => '<?' ( SU )? NCNameUnprotected ( SU ( options {greedy=false; } : ( . )* ) )? '?>' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:249:4: {...}? => '<?' ( SU )? NCNameUnprotected ( SU ( options {greedy=false; } : ( . )* ) )? '?>'
- if ( !(( !this.inElem )) ) {
- throw new org.antlr.runtime.FailedPredicateException(this.input, "L_DirPIConstructor", " !this.inElem ");
- }
- this.match("<?");
-
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:8: ( SU )?
- var alt12=2;
- var LA12_0 = this.input.LA(1);
-
- if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
- alt12=1;
- }
- switch (alt12) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:8: SU
- this.mSU();
-
-
- break;
-
- }
-
- this.mNCNameUnprotected();
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:30: ( SU ( options {greedy=false; } : ( . )* ) )?
- var alt14=2;
- var LA14_0 = this.input.LA(1);
-
- if ( ((LA14_0>='\t' && LA14_0<='\n')||LA14_0=='\r'||LA14_0==' ') ) {
- alt14=1;
- }
- switch (alt14) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:31: SU ( options {greedy=false; } : ( . )* )
- this.mSU();
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:34: ( options {greedy=false; } : ( . )* )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: ( . )*
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: ( . )*
- loop13:
- do {
- var alt13=2;
- var LA13_0 = this.input.LA(1);
-
- if ( (LA13_0=='?') ) {
- var LA13_1 = this.input.LA(2);
-
- if ( (LA13_1=='>') ) {
- alt13=2;
- }
- else if ( ((LA13_1>='\u0000' && LA13_1<='=')||(LA13_1>='?' && LA13_1<='\uFFFF')) ) {
- alt13=1;
- }
-
-
- }
- else if ( ((LA13_0>='\u0000' && LA13_0<='>')||(LA13_0>='@' && LA13_0<='\uFFFF')) ) {
- alt13=1;
- }
-
-
- switch (alt13) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: .
- this.matchAny();
-
-
- break;
-
- default :
- break loop13;
- }
- } while (true);
-
-
-
-
-
-
- break;
-
- }
-
- this.match("?>");
-
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "L_DirPIConstructor",
-
- // $ANTLR start SU
- mSU: function() {
- try {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:2: ( ( ' ' | '\\t' | '\\n' | '\\r' )+ )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:4: ( ' ' | '\\t' | '\\n' | '\\r' )+
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:4: ( ' ' | '\\t' | '\\n' | '\\r' )+
- var cnt15=0;
- loop15:
- do {
- var alt15=2;
- var LA15_0 = this.input.LA(1);
-
- if ( ((LA15_0>='\t' && LA15_0<='\n')||LA15_0=='\r'||LA15_0==' ') ) {
- alt15=1;
- }
-
-
- switch (alt15) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
- if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
- this.input.consume();
-
- }
- else {
- var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
- this.recover(mse);
- throw mse;}
-
-
-
- break;
-
- default :
- if ( cnt15 >= 1 ) {
- break loop15;
- }
- var eee = new org.antlr.runtime.EarlyExitException(15, this.input);
- throw eee;
- }
- cnt15++;
- } while (true);
-
-
-
-
- }
- finally {
- }
- },
- // $ANTLR end "SU",
-
- // $ANTLR start COLON
- mCOLON: function() {
- try {
- var _type = this.COLON;
- var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:257:7: ( ':' )
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:257:9: ':'
- this.match(':');
-
-
-
- this.state.type = _type;
- this.state.channel = _channel;
- }
- finally {
- }
- },
- // $ANTLR end "COLON",
-
- mTokens: function() {
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:8: ( QUOT | APOS | L_QuotAttrContentChar | L_AposAttrContentChar | L_ElementContentChar | GREATER | EMPTY_CLOSE_TAG | S | L_NCName | EQUAL | ESCAPE_APOS | ESCAPE_QUOT | ESCAPE_LBRACKET | ESCAPE_RBRACKET | LBRACKET | RBRACKET | SMALLER | CLOSE_TAG | CDATA_START | CDATA_END | L_CDataSection | L_PredefinedEntityRef | L_CharRef | L_DirCommentConstructor | L_DirPIConstructor | COLON )
- var alt16=26;
- alt16 = this.dfa16.predict(this.input);
- switch (alt16) {
- case 1 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:10: QUOT
- this.mQUOT();
-
-
- break;
- case 2 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:15: APOS
- this.mAPOS();
-
-
- break;
- case 3 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:20: L_QuotAttrContentChar
- this.mL_QuotAttrContentChar();
-
-
- break;
- case 4 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:42: L_AposAttrContentChar
- this.mL_AposAttrContentChar();
-
-
- break;
- case 5 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:64: L_ElementContentChar
- this.mL_ElementContentChar();
-
-
- break;
- case 6 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:85: GREATER
- this.mGREATER();
-
-
- break;
- case 7 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:93: EMPTY_CLOSE_TAG
- this.mEMPTY_CLOSE_TAG();
-
-
- break;
- case 8 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:109: S
- this.mS();
-
-
- break;
- case 9 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:111: L_NCName
- this.mL_NCName();
-
-
- break;
- case 10 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:120: EQUAL
- this.mEQUAL();
-
-
- break;
- case 11 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:126: ESCAPE_APOS
- this.mESCAPE_APOS();
-
-
- break;
- case 12 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:138: ESCAPE_QUOT
- this.mESCAPE_QUOT();
-
-
- break;
- case 13 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:150: ESCAPE_LBRACKET
- this.mESCAPE_LBRACKET();
-
-
- break;
- case 14 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:166: ESCAPE_RBRACKET
- this.mESCAPE_RBRACKET();
-
-
- break;
- case 15 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:182: LBRACKET
- this.mLBRACKET();
-
-
- break;
- case 16 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:191: RBRACKET
- this.mRBRACKET();
-
-
- break;
- case 17 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:200: SMALLER
- this.mSMALLER();
-
-
- break;
- case 18 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:208: CLOSE_TAG
- this.mCLOSE_TAG();
-
-
- break;
- case 19 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:218: CDATA_START
- this.mCDATA_START();
-
-
- break;
- case 20 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:230: CDATA_END
- this.mCDATA_END();
-
-
- break;
- case 21 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:240: L_CDataSection
- this.mL_CDataSection();
-
-
- break;
- case 22 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:255: L_PredefinedEntityRef
- this.mL_PredefinedEntityRef();
-
-
- break;
- case 23 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:277: L_CharRef
- this.mL_CharRef();
-
-
- break;
- case 24 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:287: L_DirCommentConstructor
- this.mL_DirCommentConstructor();
-
-
- break;
- case 25 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:311: L_DirPIConstructor
- this.mL_DirPIConstructor();
-
-
- break;
- case 26 :
- // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:330: COLON
- this.mCOLON();
-
-
- break;
-
- }
-
- }
-
-}, true); // important to pass true to overwrite default implementations
-
-org.antlr.lang.augmentObject(XMLLexer, {
- DFA16_eotS:
- "\u0001\uffff\u0001\u0010\u0001\u0013\u0001\u0014\u0001\u0016\u0001"+
- "\u0017\u0001\u0018\u0001\u001a\u0001\u0016\u0001\u001d\u0001\u001f\u0001"+
- "\u0023\u0001\u0024\u0001\uffff\u0001\u0016\u0001\u0027\u0002\uffff\u0001"+
- "\u0029\u0002\uffff\u0001\u002e\u0003\uffff\u0001\u0018\u0001\uffff\u0001"+
- "\u0016\u0016\uffff\u0001\u0039\u000d\uffff\u0001\u0041\u0002\uffff",
- DFA16_eofS:
- "\u0043\uffff",
- DFA16_minS:
- "\u0009\u0009\u0001\u007b\u0001\u007d\u0001\u0021\u0001\u0009\u0001"+
- "\u0023\u0002\u0009\u0001\u0000\u0001\uffff\u0001\u0009\u0002\u0000\u0001"+
- "\u0009\u0003\u0000\u0001\u0009\u0001\u0000\u0001\u0009\u0005\uffff\u0001"+
- "\u002d\u0002\uffff\u0001\u0000\u0002\uffff\u0001\u0000\u0001\uffff\u0001"+
- "\u0000\u0004\uffff\u0001\u0000\u0003\uffff\u0001\u0009\u0001\u0043\u0005"+
- "\uffff\u0001\u0000\u0001\u0044\u0001\uffff\u0001\u0041\u0001\u0054\u0001"+
- "\u0041\u0001\u005b\u0001\u0000\u0002\uffff",
- DFA16_maxS:
- "\u0009\ufffd\u0001\u007b\u0001\u007d\u0001\u003f\u0001\ufffd\u0001"+
- "\u0071\u0002\ufffd\u0001\u0000\u0001\uffff\u0001\ufffd\u0002\u0000\u0001"+
- "\ufffd\u0003\u0000\u0001\ufffd\u0001\u0000\u0001\ufffd\u0005\uffff\u0001"+
- "\u005b\u0002\uffff\u0001\u0000\u0002\uffff\u0001\u0000\u0001\uffff\u0001"+
- "\u0000\u0004\uffff\u0001\u0000\u0003\uffff\u0001\ufffd\u0001\u0043\u0005"+
- "\uffff\u0001\u0000\u0001\u0044\u0001\uffff\u0001\u0041\u0001\u0054\u0001"+
- "\u0041\u0001\u005b\u0001\uffff\u0002\uffff",
- DFA16_acceptS:
- "\u0011\uffff\u0001\u0005\u000a\uffff\u0001\u000d\u0001\u000f\u0001"+
- "\u000e\u0001\u0010\u0001\u0012\u0001\uffff\u0001\u0019\u0001\u0011\u0001"+
- "\uffff\u0001\u0017\u0001\u0016\u0001\uffff\u0001\u0001\u0001\uffff\u0001"+
- "\u0002\u0001\u0003\u0001\u0004\u0001\u0006\u0001\uffff\u0001\u0008\u0001"+
- "\u0009\u0001\u000a\u0002\uffff\u0001\u0018\u0001\u001a\u0001\u000c\u0001"+
- "\u000b\u0001\u0007\u0002\uffff\u0001\u0014\u0005\uffff\u0001\u0013\u0001"+
- "\u0015",
- DFA16_specialS:
- "\u0001\u0000\u0001\u001f\u0001\u0022\u0001\u0004\u0001\u000d\u0001"+
- "\u001e\u0001\u0015\u0001\u0002\u0001\u000b\u0001\u0021\u0001\u0005\u0001"+
- "\u0011\u0001\u001b\u0001\u0020\u0001\u000c\u0001\u001a\u0001\u0009\u0001"+
- "\uffff\u0001\u0010\u0001\u000a\u0001\u001d\u0001\u0016\u0001\u000f\u0001"+
- "\u0018\u0001\u0019\u0001\u0003\u0001\u0017\u0001\u0008\u0005\uffff\u0001"+
- "\u0012\u0002\uffff\u0001\u000e\u0002\uffff\u0001\u0006\u0001\uffff\u0001"+
- "\u0007\u0004\uffff\u0001\u001c\u0003\uffff\u0001\u0013\u0006\uffff\u0001"+
- "\u0014\u0006\uffff\u0001\u0001\u0002\uffff}>",
- DFA16_transitionS: [
- "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0001\u0005"+
- "\u0001\u000e\u0001\u0001\u0003\u000e\u0001\u000d\u0001\u0002"+
- "\u0007\u000e\u0001\u0004\u000a\u000e\u0001\u000c\u0001\u000e"+
- "\u0001\u000b\u0001\u0007\u0001\u0003\u0002\u000e\u001a\u0006"+
- "\u0002\u000e\u0001\u0008\u0001\u000e\u0001\u0006\u0001\u000e"+
- "\u001a\u0006\u0001\u0009\u0001\u000e\u0001\u000a\ud782\u000e"+
- "\u0800\uffff\u1ffe\u000e",
- "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0002\u0011"+
- "\u0001\u000f\u0003\u0011\u0001\uffff\u0015\u0011\u0001\uffff"+
- "\u003e\u0011\u0001\uffff\u0001\u0011\u0001\uffff\ud782\u0011"+
- "\u0800\uffff\u1ffe\u0011",
- "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
- "\u0001\uffff\u0001\u0012\u0014\u0011\u0001\uffff\u003e\u0011"+
- "\u0001\uffff\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff"+
- "\u1ffe\u0011",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u0001\u000e\u0001\u0015\u003c\u000e\u0001\uffff"+
- "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0001\u0005"+
- "\u0001\u000e\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011"+
- "\u0014\u000e\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e"+
- "\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0005\u000e"+
- "\u0002\u0019\u0001\u000e\u000a\u0019\u0002\u000e\u0001\uffff"+
- "\u0004\u000e\u001a\u0019\u0004\u000e\u0001\u0019\u0001\u000e"+
- "\u001a\u0019\u0001\uffff\u0001\u000e\u0001\uffff\ud782\u000e"+
- "\u0800\uffff\u1ffe\u000e",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u0020\u000e\u0001\u001b\u001d\u000e\u0001\uffff"+
- "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0001\u001c",
- "\u0001\u001e",
- "\u0001\u0021\u000d\uffff\u0001\u0020\u000f\uffff\u0001\u0022",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0001\u0025\u003d\uffff\u0001\u0026\u0005\uffff\u0001\u0026"+
- "\u0004\uffff\u0001\u0026\u0004\uffff\u0001\u0026",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
- "\u0001\uffff\u0015\u0011\u0001\uffff\u003e\u0011\u0001\uffff"+
- "\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff\u1ffe\u0011",
- "\u0001\uffff",
- "",
- "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
- "\u0001\uffff\u0015\u0011\u0001\uffff\u003e\u0011\u0001\uffff"+
- "\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff\u1ffe\u0011",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0001\uffff",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0005\u000e"+
- "\u0002\u0019\u0001\u000e\u000a\u0019\u0002\u000e\u0001\uffff"+
- "\u0004\u000e\u001a\u0019\u0004\u000e\u0001\u0019\u0001\u000e"+
- "\u001a\u0019\u0001\uffff\u0001\u000e\u0001\uffff\ud782\u000e"+
- "\u0800\uffff\u1ffe\u000e",
- "\u0001\uffff",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u0001\u000e\u0001\u0032\u003c\u000e\u0001\uffff"+
- "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "",
- "",
- "",
- "",
- "",
- "\u0001\u0034\u002d\uffff\u0001\u0033",
- "",
- "",
- "\u0001\uffff",
- "",
- "",
- "\u0001\uffff",
- "",
- "\u0001\uffff",
- "",
- "",
- "",
- "",
- "\u0001\uffff",
- "",
- "",
- "",
- "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
- "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
- "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
- "\ud782\u000e\u0800\uffff\u1ffe\u000e",
- "\u0001\u003a",
- "",
- "",
- "",
- "",
- "",
- "\u0001\uffff",
- "\u0001\u003c",
- "",
- "\u0001\u003d",
- "\u0001\u003e",
- "\u0001\u003f",
- "\u0001\u0040",
- "\u0000\u0042",
- "",
- ""
- ]
-});
-
-org.antlr.lang.augmentObject(XMLLexer, {
- DFA16_eot:
- org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_eotS),
- DFA16_eof:
- org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_eofS),
- DFA16_min:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XMLLexer.DFA16_minS),
- DFA16_max:
- org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XMLLexer.DFA16_maxS),
- DFA16_accept:
- org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_acceptS),
- DFA16_special:
- org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_specialS),
- DFA16_transition: (function() {
- var a = [],
- i,
- numStates = XMLLexer.DFA16_transitionS.length;
- for (i=0; i<numStates; i++) {
- a.push(org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_transitionS[i]));
- }
- return a;
- })()
-});
-
-XMLLexer.DFA16 = function(recognizer) {
- this.recognizer = recognizer;
- this.decisionNumber = 16;
- this.eot = XMLLexer.DFA16_eot;
- this.eof = XMLLexer.DFA16_eof;
- this.min = XMLLexer.DFA16_min;
- this.max = XMLLexer.DFA16_max;
- this.accept = XMLLexer.DFA16_accept;
- this.special = XMLLexer.DFA16_special;
- this.transition = XMLLexer.DFA16_transition;
-};
-
-org.antlr.lang.extend(XMLLexer.DFA16, org.antlr.runtime.DFA, {
- getDescription: function() {
- return "1:1: Tokens : ( QUOT | APOS | L_QuotAttrContentChar | L_AposAttrContentChar | L_ElementContentChar | GREATER | EMPTY_CLOSE_TAG | S | L_NCName | EQUAL | ESCAPE_APOS | ESCAPE_QUOT | ESCAPE_LBRACKET | ESCAPE_RBRACKET | LBRACKET | RBRACKET | SMALLER | CLOSE_TAG | CDATA_START | CDATA_END | L_CDataSection | L_PredefinedEntityRef | L_CharRef | L_DirCommentConstructor | L_DirPIConstructor | COLON );";
- },
- specialStateTransition: function(s, input) {
- var _s = s;
- var retval = (function(s, input) {
- switch ( s ) {
- case 0 :
- var LA16_0 = input.LA(1);
-
-
- var index16_0 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_0=='\"') && ((( this.inQuotAttr )||( this.inElem || this.inQuotAttr )||( !this.inElem )))) {s = 1;}
-
- else if ( (LA16_0=='\'') && ((( this.inElem || this.inAposAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 2;}
-
- else if ( (LA16_0=='>') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 3;}
-
- else if ( (LA16_0=='/') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 4;}
-
- else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 5;}
-
- else if ( ((LA16_0>='A' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 6;}
-
- else if ( (LA16_0=='=') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 7;}
-
- else if ( (LA16_0==']') ) {s = 8;}
-
- else if ( (LA16_0=='{') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 9;}
-
- else if ( (LA16_0=='}') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 10;}
-
- else if ( (LA16_0=='<') ) {s = 11;}
-
- else if ( (LA16_0==':') ) {s = 12;}
-
- else if ( (LA16_0=='&') ) {s = 13;}
-
- else if ( (LA16_0=='!'||(LA16_0>='#' && LA16_0<='%')||(LA16_0>='(' && LA16_0<='.')||(LA16_0>='0' && LA16_0<='9')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||(LA16_0>='[' && LA16_0<='\\')||LA16_0=='^'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uD7FF')||(LA16_0>='\uE000' && LA16_0<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
-
- input.seek(index16_0);
- if ( s>=0 ) return s;
- break;
- case 1 :
- var LA16_64 = input.LA(1);
-
-
- var index16_64 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_64>='\u0000' && LA16_64<='\uFFFF')) && (( !this.inElem ))) {s = 66;}
-
- else s = 65;
-
-
- input.seek(index16_64);
- if ( s>=0 ) return s;
- break;
- case 2 :
- var LA16_7 = input.LA(1);
-
-
- var index16_7 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_7>='\t' && LA16_7<='\n')||LA16_7=='\r'||(LA16_7>=' ' && LA16_7<='!')||(LA16_7>='#' && LA16_7<='%')||(LA16_7>='(' && LA16_7<=';')||(LA16_7>='=' && LA16_7<='z')||LA16_7=='|'||(LA16_7>='~' && LA16_7<='\uD7FF')||(LA16_7>='\uE000' && LA16_7<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_7=='\"'||LA16_7=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 26;
-
-
- input.seek(index16_7);
- if ( s>=0 ) return s;
- break;
- case 3 :
- var LA16_25 = input.LA(1);
-
-
- var index16_25 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_25>='-' && LA16_25<='.')||(LA16_25>='0' && LA16_25<='9')||(LA16_25>='A' && LA16_25<='Z')||LA16_25=='_'||(LA16_25>='a' && LA16_25<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 25;}
-
- else if ( (LA16_25=='\"'||LA16_25=='\'') && (( !this.inElem ))) {s = 17;}
-
- else if ( ((LA16_25>='\t' && LA16_25<='\n')||LA16_25=='\r'||(LA16_25>=' ' && LA16_25<='!')||(LA16_25>='#' && LA16_25<='%')||(LA16_25>='(' && LA16_25<=',')||LA16_25=='/'||(LA16_25>=':' && LA16_25<=';')||(LA16_25>='=' && LA16_25<='@')||(LA16_25>='[' && LA16_25<='^')||LA16_25=='`'||LA16_25=='|'||(LA16_25>='~' && LA16_25<='\uD7FF')||(LA16_25>='\uE000' && LA16_25<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else s = 24;
-
-
- input.seek(index16_25);
- if ( s>=0 ) return s;
- break;
- case 4 :
- var LA16_3 = input.LA(1);
-
-
- var index16_3 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_3>='\t' && LA16_3<='\n')||LA16_3=='\r'||(LA16_3>=' ' && LA16_3<='!')||(LA16_3>='#' && LA16_3<='%')||(LA16_3>='(' && LA16_3<=';')||(LA16_3>='=' && LA16_3<='z')||LA16_3=='|'||(LA16_3>='~' && LA16_3<='\uD7FF')||(LA16_3>='\uE000' && LA16_3<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_3=='\"'||LA16_3=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 20;
-
-
- input.seek(index16_3);
- if ( s>=0 ) return s;
- break;
- case 5 :
- var LA16_10 = input.LA(1);
-
-
- var index16_10 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_10=='}') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 30;}
-
- else s = 31;
-
-
- input.seek(index16_10);
- if ( s>=0 ) return s;
- break;
- case 6 :
- var LA16_39 = input.LA(1);
-
-
- var index16_39 = input.index();
- input.rewind();
- s = -1;
- if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inQuotAttr )) ) {s = 54;}
-
-
- input.seek(index16_39);
- if ( s>=0 ) return s;
- break;
- case 7 :
- var LA16_41 = input.LA(1);
-
-
- var index16_41 = input.index();
- input.rewind();
- s = -1;
- if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inAposAttr )) ) {s = 55;}
-
-
- input.seek(index16_41);
- if ( s>=0 ) return s;
- break;
- case 8 :
- var LA16_27 = input.LA(1);
-
-
- var index16_27 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_27=='>') ) {s = 50;}
-
- else if ( ((LA16_27>='\t' && LA16_27<='\n')||LA16_27=='\r'||(LA16_27>=' ' && LA16_27<='!')||(LA16_27>='#' && LA16_27<='%')||(LA16_27>='(' && LA16_27<=';')||LA16_27=='='||(LA16_27>='?' && LA16_27<='z')||LA16_27=='|'||(LA16_27>='~' && LA16_27<='\uD7FF')||(LA16_27>='\uE000' && LA16_27<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_27=='\"'||LA16_27=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 22;
-
-
- input.seek(index16_27);
- if ( s>=0 ) return s;
- break;
- case 9 :
- var LA16_16 = input.LA(1);
-
-
- var index16_16 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inElem || this.inQuotAttr )) ) {s = 40;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
-
- input.seek(index16_16);
- if ( s>=0 ) return s;
- break;
- case 10 :
- var LA16_19 = input.LA(1);
-
-
- var index16_19 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inElem || this.inAposAttr )) ) {s = 42;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
-
- input.seek(index16_19);
- if ( s>=0 ) return s;
- break;
- case 11 :
- var LA16_8 = input.LA(1);
-
-
- var index16_8 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_8==']') ) {s = 27;}
-
- else if ( ((LA16_8>='\t' && LA16_8<='\n')||LA16_8=='\r'||(LA16_8>=' ' && LA16_8<='!')||(LA16_8>='#' && LA16_8<='%')||(LA16_8>='(' && LA16_8<=';')||(LA16_8>='=' && LA16_8<='\\')||(LA16_8>='^' && LA16_8<='z')||LA16_8=='|'||(LA16_8>='~' && LA16_8<='\uD7FF')||(LA16_8>='\uE000' && LA16_8<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_8=='\"'||LA16_8=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 22;
-
-
- input.seek(index16_8);
- if ( s>=0 ) return s;
- break;
- case 12 :
- var LA16_14 = input.LA(1);
-
-
- var index16_14 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_14>='\t' && LA16_14<='\n')||LA16_14=='\r'||(LA16_14>=' ' && LA16_14<='!')||(LA16_14>='#' && LA16_14<='%')||(LA16_14>='(' && LA16_14<=';')||(LA16_14>='=' && LA16_14<='z')||LA16_14=='|'||(LA16_14>='~' && LA16_14<='\uD7FF')||(LA16_14>='\uE000' && LA16_14<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_14=='\"'||LA16_14=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 22;
-
-
- input.seek(index16_14);
- if ( s>=0 ) return s;
- break;
- case 13 :
- var LA16_4 = input.LA(1);
-
-
- var index16_4 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_4=='>') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 21;}
-
- else if ( ((LA16_4>='\t' && LA16_4<='\n')||LA16_4=='\r'||(LA16_4>=' ' && LA16_4<='!')||(LA16_4>='#' && LA16_4<='%')||(LA16_4>='(' && LA16_4<=';')||LA16_4=='='||(LA16_4>='?' && LA16_4<='z')||LA16_4=='|'||(LA16_4>='~' && LA16_4<='\uD7FF')||(LA16_4>='\uE000' && LA16_4<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_4=='\"'||LA16_4=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 22;
-
-
- input.seek(index16_4);
- if ( s>=0 ) return s;
- break;
- case 14 :
- var LA16_36 = input.LA(1);
-
-
- var index16_36 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (true) ) {s = 53;}
-
-
- input.seek(index16_36);
- if ( s>=0 ) return s;
- break;
- case 15 :
- var LA16_22 = input.LA(1);
-
-
- var index16_22 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
-
- input.seek(index16_22);
- if ( s>=0 ) return s;
- break;
- case 16 :
- var LA16_18 = input.LA(1);
-
-
- var index16_18 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_18>='\t' && LA16_18<='\n')||LA16_18=='\r'||(LA16_18>=' ' && LA16_18<='%')||(LA16_18>='\'' && LA16_18<=';')||(LA16_18>='=' && LA16_18<='z')||LA16_18=='|'||(LA16_18>='~' && LA16_18<='\uD7FF')||(LA16_18>='\uE000' && LA16_18<='\uFFFD')) && (( !this.inElem ))) {s = 17;}
-
- else s = 41;
-
-
- input.seek(index16_18);
- if ( s>=0 ) return s;
- break;
- case 17 :
- var LA16_11 = input.LA(1);
-
-
- var index16_11 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_11=='/') && (( !this.inElem ))) {s = 32;}
-
- else if ( (LA16_11=='!') ) {s = 33;}
-
- else if ( (LA16_11=='?') && (( !this.inElem ))) {s = 34;}
-
- else s = 35;
-
-
- input.seek(index16_11);
- if ( s>=0 ) return s;
- break;
- case 18 :
- var LA16_33 = input.LA(1);
-
-
- var index16_33 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_33=='[') ) {s = 51;}
-
- else if ( (LA16_33=='-') && (( !this.inElem ))) {s = 52;}
-
-
- input.seek(index16_33);
- if ( s>=0 ) return s;
- break;
- case 19 :
- var LA16_50 = input.LA(1);
-
-
- var index16_50 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_50>='\t' && LA16_50<='\n')||LA16_50=='\r'||(LA16_50>=' ' && LA16_50<='!')||(LA16_50>='#' && LA16_50<='%')||(LA16_50>='(' && LA16_50<=';')||(LA16_50>='=' && LA16_50<='z')||LA16_50=='|'||(LA16_50>='~' && LA16_50<='\uD7FF')||(LA16_50>='\uE000' && LA16_50<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_50=='\"'||LA16_50=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 57;
-
-
- input.seek(index16_50);
- if ( s>=0 ) return s;
- break;
- case 20 :
- var LA16_57 = input.LA(1);
-
-
- var index16_57 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (true) ) {s = 59;}
-
-
- input.seek(index16_57);
- if ( s>=0 ) return s;
- break;
- case 21 :
- var LA16_6 = input.LA(1);
-
-
- var index16_6 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_6>='-' && LA16_6<='.')||(LA16_6>='0' && LA16_6<='9')||(LA16_6>='A' && LA16_6<='Z')||LA16_6=='_'||(LA16_6>='a' && LA16_6<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 25;}
-
- else if ( (LA16_6=='\"'||LA16_6=='\'') && (( !this.inElem ))) {s = 17;}
-
- else if ( ((LA16_6>='\t' && LA16_6<='\n')||LA16_6=='\r'||(LA16_6>=' ' && LA16_6<='!')||(LA16_6>='#' && LA16_6<='%')||(LA16_6>='(' && LA16_6<=',')||LA16_6=='/'||(LA16_6>=':' && LA16_6<=';')||(LA16_6>='=' && LA16_6<='@')||(LA16_6>='[' && LA16_6<='^')||LA16_6=='`'||LA16_6=='|'||(LA16_6>='~' && LA16_6<='\uD7FF')||(LA16_6>='\uE000' && LA16_6<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else s = 24;
-
-
- input.seek(index16_6);
- if ( s>=0 ) return s;
- break;
- case 22 :
- var LA16_21 = input.LA(1);
-
-
- var index16_21 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_21>='\t' && LA16_21<='\n')||LA16_21=='\r'||(LA16_21>=' ' && LA16_21<='!')||(LA16_21>='#' && LA16_21<='%')||(LA16_21>='(' && LA16_21<=';')||(LA16_21>='=' && LA16_21<='z')||LA16_21=='|'||(LA16_21>='~' && LA16_21<='\uD7FF')||(LA16_21>='\uE000' && LA16_21<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_21=='\"'||LA16_21=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 46;
-
-
- input.seek(index16_21);
- if ( s>=0 ) return s;
- break;
- case 23 :
- var LA16_26 = input.LA(1);
-
-
- var index16_26 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inElem )) ) {s = 49;}
-
-
- input.seek(index16_26);
- if ( s>=0 ) return s;
- break;
- case 24 :
- var LA16_23 = input.LA(1);
-
-
- var index16_23 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inElem )) ) {s = 47;}
-
-
- input.seek(index16_23);
- if ( s>=0 ) return s;
- break;
- case 25 :
- var LA16_24 = input.LA(1);
-
-
- var index16_24 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inElem )) ) {s = 48;}
-
-
- input.seek(index16_24);
- if ( s>=0 ) return s;
- break;
- case 26 :
- var LA16_15 = input.LA(1);
-
-
- var index16_15 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_15>='\t' && LA16_15<='\n')||LA16_15=='\r'||(LA16_15>=' ' && LA16_15<='%')||(LA16_15>='\'' && LA16_15<=';')||(LA16_15>='=' && LA16_15<='z')||LA16_15=='|'||(LA16_15>='~' && LA16_15<='\uD7FF')||(LA16_15>='\uE000' && LA16_15<='\uFFFD')) && (( !this.inElem ))) {s = 17;}
-
- else s = 39;
-
-
- input.seek(index16_15);
- if ( s>=0 ) return s;
- break;
- case 27 :
- var LA16_12 = input.LA(1);
-
-
- var index16_12 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_12>='\t' && LA16_12<='\n')||LA16_12=='\r'||(LA16_12>=' ' && LA16_12<='!')||(LA16_12>='#' && LA16_12<='%')||(LA16_12>='(' && LA16_12<=';')||(LA16_12>='=' && LA16_12<='z')||LA16_12=='|'||(LA16_12>='~' && LA16_12<='\uD7FF')||(LA16_12>='\uE000' && LA16_12<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else if ( (LA16_12=='\"'||LA16_12=='\'') && (( !this.inElem ))) {s = 17;}
-
- else s = 36;
-
-
- input.seek(index16_12);
- if ( s>=0 ) return s;
- break;
- case 28 :
- var LA16_46 = input.LA(1);
-
-
- var index16_46 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inElem )) ) {s = 56;}
-
-
- input.seek(index16_46);
- if ( s>=0 ) return s;
- break;
- case 29 :
- var LA16_20 = input.LA(1);
-
-
- var index16_20 = input.index();
- input.rewind();
- s = -1;
- if ( (( this.inQuotAttr )) ) {s = 43;}
-
- else if ( (( this.inAposAttr )) ) {s = 44;}
-
- else if ( (( !this.inElem )) ) {s = 17;}
-
- else if ( (( this.inElem )) ) {s = 45;}
-
-
- input.seek(index16_20);
- if ( s>=0 ) return s;
- break;
- case 30 :
- var LA16_5 = input.LA(1);
-
-
- var index16_5 = input.index();
- input.rewind();
- s = -1;
- if ( ((LA16_5>='\t' && LA16_5<='\n')||LA16_5=='\r'||LA16_5==' ') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 5;}
-
- else if ( (LA16_5=='\"'||LA16_5=='\'') && (( !this.inElem ))) {s = 17;}
-
- else if ( (LA16_5=='!'||(LA16_5>='#' && LA16_5<='%')||(LA16_5>='(' && LA16_5<=';')||(LA16_5>='=' && LA16_5<='z')||LA16_5=='|'||(LA16_5>='~' && LA16_5<='\uD7FF')||(LA16_5>='\uE000' && LA16_5<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}
-
- else s = 23;
-
-
- input.seek(index16_5);
- if ( s>=0 ) return s;
- break;
- case 31 :
- var LA16_1 = input.LA(1);
-
-
- var index16_1 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_1=='\"') && ((( this.inQuotAttr )||( !this.inElem )))) {s = 15;}
-
- else if ( ((LA16_1>='\t' && LA16_1<='\n')||LA16_1=='\r'||(LA16_1>=' ' && LA16_1<='!')||(LA16_1>='#' && LA16_1<='%')||(LA16_1>='\'' && LA16_1<=';')||(LA16_1>='=' && LA16_1<='z')||LA16_1=='|'||(LA16_1>='~' && LA16_1<='\uD7FF')||(LA16_1>='\uE000' && LA16_1<='\uFFFD')) && (( !this.inElem ))) {s = 17;}
-
- else s = 16;
-
-
- input.seek(index16_1);
- if ( s>=0 ) return s;
- break;
- case 32 :
- var LA16_13 = input.LA(1);
-
-
- var index16_13 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_13=='#') ) {s = 37;}
-
- else if ( (LA16_13=='a'||LA16_13=='g'||LA16_13=='l'||LA16_13=='q') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 38;}
-
-
- input.seek(index16_13);
- if ( s>=0 ) return s;
- break;
- case 33 :
- var LA16_9 = input.LA(1);
-
-
- var index16_9 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_9=='{') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 28;}
-
- else s = 29;
-
-
- input.seek(index16_9);
- if ( s>=0 ) return s;
- break;
- case 34 :
- var LA16_2 = input.LA(1);
-
-
- var index16_2 = input.index();
- input.rewind();
- s = -1;
- if ( (LA16_2=='\'') && ((( this.inAposAttr )||( !this.inElem )))) {s = 18;}
-
- else if ( ((LA16_2>='\t' && LA16_2<='\n')||LA16_2=='\r'||(LA16_2>=' ' && LA16_2<='%')||(LA16_2>='(' && LA16_2<=';')||(LA16_2>='=' && LA16_2<='z')||LA16_2=='|'||(LA16_2>='~' && LA16_2<='\uD7FF')||(LA16_2>='\uE000' && LA16_2<='\uFFFD')) && (( !this.inElem ))) {s = 17;}
-
- else s = 19;
-
-
- input.seek(index16_2);
- if ( s>=0 ) return s;
- break;
- }
- }).call(this.recognizer, s, input);
- if (!org.antlr.lang.isUndefined(retval)) {
- return retval;
- }
- var nvae =
- new org.antlr.runtime.NoViableAltException(this.getDescription(), 16, _s, input);
- this.error(nvae);
- throw nvae;
- },
- dummy: null
-});
-
-})();
-exports.XMLLexer = XMLLexer; });
-define('ace/mode/xquery/XQDTParser', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQuerySemanticHighlighter'], function(require, exports, module) {
-
-var org = require("./antlr3-all").org;
-var XQuerySemanticHighlighter = require("./XQuerySemanticHighlighter").XQuerySemanticHighlighter;
-
-var XQDTParser = exports.XQDTParser = function(input, state)
-{
- this.highlighter = new XQuerySemanticHighlighter();
- var that = this;
-
- input.getTokenSource().addComment = function(start, stop) {
- var comments = input.getTokenSource().comments;
- for(var i in comments)
- {
- var c = comments[i];
- that.highlighter.addToken(c.start, c.stop, "comment");
- }
- input.getTokenSource().comments = [];
- that.highlighter.addToken(start, stop, "comment")
- };
- XQDTParser.superclass.constructor.call(this, input, state);
-};
-
-org.antlr.lang.extend(XQDTParser, org.antlr.runtime.Parser, {
-
-});
-
-});
-define('ace/mode/xquery/XQuerySemanticHighlighter', ['require', 'exports', 'module' , 'ace/mode/xquery/Position'], function(require, exports, module) {
-
- var Position = require("./Position").Position;
- var XQuerySemanticHighlighter = exports.XQuerySemanticHighlighter = function() {
- this.tokenizer = null;
- this.plain = null;
- this.source = [];
- this.lines = [];
-
- this.getTokens = function() {
- var resultLines = new Array(this.source.length);
- var resultStates = new Array(this.source.length);
- var previousState = "start";
- var i = 0;
- for(i in this.source){
- var lineTokens = [];
- var tokens = [];
- if(this.lines[i]) {
- tokens = this.lines[i].sort(function(a, b){ return a.position.getOffset() - b.position.getOffset(); });
- }
- var sourceLine = this.source[i];
- var tokenizedLine = "";
- var cursor = 0;
- var j = 0;
- for(j in tokens)
- {
- var token = tokens[j];
- var position = token.position;
- if(position.getOffset() > cursor) {
- var value = sourceLine.substring(cursor, position.getOffset());
- tokenizedLine += value;
- lineTokens.push({
- type: "text",
- value: value
- });
- }
- cursor = position.getOffset() + position.getLength();
- value = sourceLine.substring(position.getOffset(), cursor);
- tokenizedLine += value;
- lineTokens.push({
- type: token.type,
- value: value
- });
- }
-
- var nextState = "start";
- if(lineTokens.length > 0) {
- lineTokens[lineTokens.length - 1].type;
- }
- nextState = (nextState != "comment" && nextState != "string" && nextState != "cdata" && nextState != "tag") ? "start" : nextState;
-
- if(cursor < (sourceLine.length )) {
- value = sourceLine.substring(cursor);
- lineTokens.push({
- type: "text",
- value: value
- });
- tokenizedLine += value;
- }
- //Check if the tokenized line is equal to the original one:
- if(sourceLine == tokenizedLine) {
- resultLines[i] = lineTokens;
- resultStates[i] = nextState;
- //result[i] = { line: sourceLine, startState: previousState, tokens: { tokens: lineTokens, state: nextState } };
- } else {
- //console.log("sourceLine: " + sourceLine);
- //console.log("tokenizedLine: " + tokenizedLine);
- resultLines[i] = [{ type: "text", value: sourceLine }];
- resultStates[i] = nextState;
- //result[i] = { tokens: [ { type: "text", value: sourceLine } ], state: nextState };
- }
-
- if(resultLines[i].length === 1 && resultLines[i][0].type === "text" && this.tokenizer instanceof Object) {
- var prev = resultStates[i - 1] ? resultStates[i - 1] : "start";
- var result = this.tokenizer.getLineTokens(resultLines[i][0].value, prev);
- resultLines[i] = result.tokens;
- resultStates[i] = result.state;
- }
- }
- return {states: resultStates, lines: resultLines};
- };
-
- this.addToken = function(start, stop, type) {
- var before = this.plain.substring(0, start);
- var startLine = this.plain.substring(0, start).split("\n").length;
- startLine = startLine == 0 ? 0 : startLine - 1;
-
- var offset = before.lastIndexOf("\n");
- offset = offset == -1 ? start : start - before.lastIndexOf("\n") - 1;
-
- var cursor = start;
-
- var text = this.plain.substring(start, stop);
-
- var currentLine = startLine;
- for(var i in text)
- {
- var c = text[i];
- if(c == "\n") {
- var s = i;
- s = s < stop ? s : stop;
- this.addPosition(new Position(currentLine, offset, s), type);
- currentLine++;
- offset = 0;
- cursor = i;
- }
- };
- this.addPosition(new Position(currentLine, offset, stop - cursor + 1), type);
- };
-
- this.addPosition = function(position, type)
- {
- var line = position.getLine();
- if(!this.lines[line]) {
- this.lines[line] = [];
- }
- this.lines[line].push({
- type: type,
- position: position
- });
- };
-
- this.setSource = function(source)
- {
- this.plain = source.data;
- this.source = this.plain.split("\n");
- };
- //console.log("Line: " + token.getLine());
- //console.log(token.getText());
- //console.log(type);
- };
-});
-define('ace/mode/xquery/Position', ['require', 'exports', 'module' ], function(require, exports, module) {
- var Position = exports.Position = function(line, offset, length)
- {
- this.line = line;
- this.offset = offset;
- this.length = length;
-
- this.getLine = function()
- {
- return this.line;
- };
-
- this.getOffset = function()
- {
- return this.offset;
- };
-
- this.getLength = function()
- {
- return this.length;
- };
- };
-
-});
-
-define('ace/tokenizer', ['require', 'exports', 'module' ], function(require, exports, module) {
-
-
-/**
- * class Tokenizer
- *
- * This class takes a set of highlighting rules, and creates a tokenizer out of them. For more information, see [the wiki on extending highlighters](https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#wiki-extendingTheHighlighter).
- *
- **/
-
-/**
- * new Tokenizer(rules, flag)
- * - rules (Object): The highlighting rules
- * - flag (String): Any additional regular expression flags to pass (like "i" for case insensitive)
- *
- * Constructs a new tokenizer based on the given rules and flags.
- *
- **/
-var Tokenizer = function(rules, flag) {
- flag = flag ? "g" + flag : "g";
- this.rules = rules;
-
- this.regExps = {};
- this.matchMappings = {};
- for ( var key in this.rules) {
- var rule = this.rules[key];
- var state = rule;
- var ruleRegExps = [];
- var matchTotal = 0;
- var mapping = this.matchMappings[key] = {};
-
- for ( var i = 0; i < state.length; i++) {
-
- if (state[i].regex instanceof RegExp)
- state[i].regex = state[i].regex.toString().slice(1, -1);
-
- // Count number of matching groups. 2 extra groups from the full match
- // And the catch-all on the end (used to force a match);
- var matchcount = new RegExp("(?:(" + state[i].regex + ")|(.))").exec("a").length - 2;
-
- // Replace any backreferences and offset appropriately.
- var adjustedregex = state[i].regex.replace(/\\([0-9]+)/g, function (match, digit) {
- return "\\" + (parseInt(digit, 10) + matchTotal + 1);
- });
-
- if (matchcount > 1 && state[i].token.length !== matchcount-1)
- throw new Error("For " + state[i].regex + " the matching groups and length of the token array don't match (rule #" + i + " of state " + key + ")");
-
- mapping[matchTotal] = {
- rule: i,
- len: matchcount
- };
- matchTotal += matchcount;
-
- ruleRegExps.push(adjustedregex);
- }
-
- this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
- }
-};
-
-(function() {
-
- /**
- * Tokenizer.getLineTokens() -> Object
- *
- * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
- **/
- this.getLineTokens = function(line, startState) {
- var currentState = startState || "start";
- var state = this.rules[currentState];
- var mapping = this.matchMappings[currentState];
- var re = this.regExps[currentState];
- re.lastIndex = 0;
-
- var match, tokens = [];
-
- var lastIndex = 0;
-
- var token = {
- type: null,
- value: ""
- };
-
- while (match = re.exec(line)) {
- var type = "text";
- var rule = null;
- var value = [match[0]];
-
- for (var i = 0; i < match.length-2; i++) {
- if (match[i + 1] === undefined)
- continue;
-
- rule = state[mapping[i].rule];
-
- if (mapping[i].len > 1)
- value = match.slice(i+2, i+1+mapping[i].len);
-
- // compute token type
- if (typeof rule.token == "function")
- type = rule.token.apply(this, value);
- else
- type = rule.token;
-
- if (rule.next) {
- currentState = rule.next;
- state = this.rules[currentState];
- mapping = this.matchMappings[currentState];
- lastIndex = re.lastIndex;
-
- re = this.regExps[currentState];
-
- if (re === undefined) {
- throw new Error("You indicated a state of " + rule.next + " to go to, but it doesn't exist!");
- }
-
- re.lastIndex = lastIndex;
- }
- break;
- }
-
- if (value[0]) {
- if (typeof type == "string") {
- value = [value.join("")];
- type = [type];
- }
- for (var i = 0; i < value.length; i++) {
- if (!value[i])
- continue;
-
- if ((!rule || rule.merge || type[i] === "text") && token.type === type[i]) {
- token.value += value[i];
- } else {
- if (token.type)
- tokens.push(token);
-
- token = {
- type: type[i],
- value: value[i]
- };
- }
- }
- }
-
- if (lastIndex == line.length)
- break;
-
- lastIndex = re.lastIndex;
- }
-
- if (token.type)
- tokens.push(token);
-
- return {
- tokens : tokens,
- state : currentState
- };
- };
-
-}).call(Tokenizer.prototype);
-
-exports.Tokenizer = Tokenizer;
-});
-define('ace/mode/xquery_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
-
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var XQueryHighlightRules = function() {
-
- var keywordMapper = this.createKeywordMapper({
- keyword: "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position"
- }, "identifier");
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- start : [ {
- token : "text",
- regex : "<\\!\\[CDATA\\[",
- next : "cdata"
- }, {
- token : "xml_pe",
- regex : "<\\?.*?\\?>"
- }, {
- token : "comment",
- regex : "<\\!--",
- next : "comment"
- }, {
- token : "comment",
- regex : "\\(:",
- next : "comment"
- }, {
- token : "text", // opening tag
- regex : "<\\/?",
- next : "tag"
- }, {
- token : "constant", // number
- regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token : "variable", // variable
- regex : "\\$[a-zA-Z_][a-zA-Z0-9_\\-:]*\\b"
- }, {
- token: "string",
- regex : '".*?"'
- }, {
- token: "string",
- regex : "'.*?'"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token: "support.function",
- regex: "\\w[\\w+_\\-:]+(?=\\()"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token: "keyword.operator",
- regex: "\\*|=|<|>|\\-|\\+"
- }, {
- token: "lparen",
- regex: "[[({]"
- }, {
- token: "rparen",
- regex: "[\\])}]"
- } ],
-
- tag : [ {
- token : "text",
- regex : ">",
- next : "start"
- }, {
- token : "meta.tag",
- regex : "[-_a-zA-Z0-9:]+"
- }, {
- token : "text",
- regex : "\\s+"
- }, {
- token : "string",
- regex : '".*?"'
- }, {
- token : "string",
- regex : "'.*?'"
- } ],
-
- cdata : [ {
- token : "comment",
- regex : "\\]\\]>",
- next : "start"
- }, {
- token : "comment",
- regex : "\\s+"
- }, {
- token : "comment",
- regex : "(?:[^\\]]|\\](?!\\]>))+"
- } ],
-
- comment : [ {
- token : "comment",
- regex : ".*?-->",
- next : "start"
- }, {
- token: "comment",
- regex : ".*:\\)",
- next : "start"
- }, {
- token : "comment",
- regex : ".+"
- } ]
- };
-};
-
-oop.inherits(XQueryHighlightRules, TextHighlightRules);
-
-exports.XQueryHighlightRules = XQueryHighlightRules;
-});
-
-define('ace/mode/text_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {
-
-
-var lang = require("../lib/lang");
-
-var TextHighlightRules = function() {
-
- // regexp must not have capturing parentheses
- // regexps are ordered -> the first match is used
-
- this.$rules = {
- "start" : [{
- token : "empty_line",
- regex : '^$'
- }, {
- token : "text",
- regex : ".+"
- }]
- };
-};
-
-(function() {
-
- this.addRules = function(rules, prefix) {
- for (var key in rules) {
- var state = rules[key];
- for (var i=0; i<state.length; i++) {
- var rule = state[i];
- if (rule.next) {
- rule.next = prefix + rule.next;
- }
- }
- this.$rules[prefix + key] = state;
- }
- };
-
- this.getRules = function() {
- return this.$rules;
- };
-
- this.embedRules = function (HighlightRules, prefix, escapeRules, states) {
- var embedRules = new HighlightRules().getRules();
- if (states) {
- for (var i = 0; i < states.length; i++) {
- states[i] = prefix + states[i];
- }
- } else {
- states = [];
- for (var key in embedRules) {
- states.push(prefix + key);
- }
- }
- this.addRules(embedRules, prefix);
-
- for (var i = 0; i < states.length; i++) {
- Array.prototype.unshift.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));
- }
-
- if (!this.$embeds) {
- this.$embeds = [];
- }
- this.$embeds.push(prefix);
- }
-
- this.getEmbeds = function() {
- return this.$embeds;
- }
-
- this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
- var keywords = Object.create(null);
- Object.keys(map).forEach(function(className) {
- var list = map[className].split(splitChar || "|");
- for (var i = list.length; i--; )
- keywords[list[i]] = className;
- });
- map = null;
- return ignoreCase
- ? function(value) {return keywords[value.toLowerCase()] || defaultToken }
- : function(value) {return keywords[value] || defaultToken };
- }
-
-}).call(TextHighlightRules.prototype);
-
-exports.TextHighlightRules = TextHighlightRules;
-});
diff --git a/vendor/assets/javascripts/highlightjs.min.js b/vendor/assets/javascripts/highlightjs.min.js
new file mode 100644
index 00000000000..d8acc5c5320
--- /dev/null
+++ b/vendor/assets/javascripts/highlightjs.min.js
@@ -0,0 +1 @@
+var hljs=new function(){function k(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+k(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(i(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(i(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&i(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?"":b.classPrefix,U='<span class="'+T,Y=W?"":"</span>";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{k:a,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|<!--|-->"},{cN:"xmlDocTag",b:"</?",e:">"}]},b.CLCM,b.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(e){var h="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var g="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var a={cN:"yardoctag",b:"@[A-Za-z]+"};var i={cN:"comment",v:[{b:"#",e:"$",c:[a]},{b:"^\\=begin",e:"^\\=end",c:[a],r:10},{b:"^__END__",e:"\\n$"}]};var c={cN:"subst",b:"#\\{",e:"}",k:g};var d={cN:"string",c:[e.BE,c],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">",r:10},{b:"%[qw]?/",e:"/",r:10},{b:"%[qw]?%",e:"%",r:10},{b:"%[qw]?-",e:"-",r:10},{b:"%[qw]?\\|",e:"\\|",r:10},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var b={cN:"params",b:"\\(",e:"\\)",k:g};var f=[d,i,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]},i]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:h}),b,i]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[d,{b:h}],r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[i,{cN:"regexp",c:[e.BE,c],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];c.c=f;b.c=f;return{k:g,c:f}});hljs.registerLanguage("diff",function(a){return{c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,a.REGEXP_MODE,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBLCLM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/</,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html"],cI:true,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("markdown",function(a){return{c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].+?[\\)\\]]",rB:true,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:true,rE:true,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:true,eE:true},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:true,eE:true,}],r:10},{b:"^\\[.+\\]:",e:"$",rB:true,c:[{cN:"link_reference",b:"\\[",e:"\\]",eB:true,eE:true},{cN:"link_url",b:"\\s",e:"$"}]}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",e:"\\)",c:["self",a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.NM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("http",function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}});hljs.registerLanguage("java",function(b){var a="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws";return{k:a,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}],r:10},b.CLCM,b.CBLCLM,b.ASM,b.QSM,{bK:"protected public private",e:/[{;=]/,k:a,c:[{cN:"class",bK:"class interface",eW:true,i:/[:"<>]/,c:[{bK:"extends implements",r:10},b.UTM]},{b:b.UIR+"\\s*\\(",rB:true,c:[b.UTM]}]},b.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBLCLM,c,d]}]},{cN:"class",bK:"class interface",e:"{",i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)"/,e:/"/,},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){return{cI:true,i:/[<>]/,c:[{cN:"operator",b:"\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}});hljs.registerLanguage("ini",function(a){return{cI:true,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM],r:0}]}]}});hljs.registerLanguage("perl",function(c){var d="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var f={cN:"subst",b:"[$@]\\{",e:"\\}",k:d};var g={b:"->{",e:"}"};var a={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@\*](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@\*][^\s\w{]/,r:0}]};var e={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var h=[c.BE,f,a];var b=[a,c.HCM,e,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},g,{cN:"string",c:h,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[c.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[c.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+c.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[c.HCM,e,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[c.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];f.c=b;g.c=b;return{k:d,c:b}});hljs.registerLanguage("objectivec",function(a){var d={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign self synchronized id nonatomic super unichar IBOutlet IBAction strong weak @private @protected @public @try @property @end @throw @catch @finally @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};var c=/[a-zA-Z@][a-zA-Z0-9_]*/;var b="@interface @class @protocol @implementation";return{k:d,l:c,i:"</",c:[a.CLCM,a.CBLCLM,a.CNM,a.QSM,{cN:"string",b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"},{cN:"preprocessor",b:"#import",e:"$",c:[{cN:"title",b:'"',e:'"'},{cN:"title",b:"<",e:">"}]},{cN:"preprocessor",b:"#",e:"$"},{cN:"class",b:"("+b.split(" ").join("|")+")\\b",e:"({|$)",k:b,l:c,c:[a.UTM]},{cN:"variable",b:"\\."+a.UIR,r:0}]}});hljs.registerLanguage("coffeescript",function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module exports global window document"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var f=c.inherit(c.TM,{b:a});var e={cN:"subst",b:/#\{/,e:/}/,k:b};var d=[c.BNM,c.inherit(c.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[c.BE]},{b:/'/,e:/'/,c:[c.BE]},{b:/"""/,e:/"""/,c:[c.BE,e]},{b:/"/,e:/"/,c:[c.BE,e]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[e,c.HCM]},{b:"//[gim]*",r:0},{b:"/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"}]},{cN:"property",b:"@"+a},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"}];e.c=d;return{k:b,c:d.concat([{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"function",b:"("+a+"\\s*=\\s*)?(\\(.*\\))?\\s*\\B[-=]>",e:"[-=]>",rB:true,c:[f,{cN:"params",b:"\\(",rB:true,c:[{b:/\(/,e:/\)/,k:b,c:["self"].concat(d)}]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:true,i:/[:="\[\]]/,c:[f]},f]},{cN:"attribute",b:a+":",e:":",rB:true,eE:true,r:0}])}});hljs.registerLanguage("nginx",function(c){var b={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+c.UIR}]};var a={eW:true,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[c.HCM,{cN:"string",c:[c.BE,b],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:true,eE:true},{cN:"regexp",c:[c.BE,b],v:[{b:"\\s\\^",e:"\\s|{|;",rE:true},{b:"~\\*?\\s+",e:"\\s|{|;",rE:true},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},b]};return{c:[c.HCM,{b:c.UIR+"\\s",e:";|{",rB:true,c:[c.inherit(c.UTM,{starts:a})],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{cI:true,c:[a.HCM,{cN:"tag",b:"</?",e:">"},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});hljs.registerLanguage("cpp",function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c"],k:b,i:"</",c:[a.CLCM,a.CBLCLM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$",c:[{b:"include\\s*<",e:">",i:"\\n"},a.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10,c:["self"]}]}});hljs.registerLanguage("makefile",function(a){var b={cN:"variable",b:/\$\(/,e:/\)/,c:[a.BE]};return{c:[a.HCM,{b:/^\w+\s*\W*=/,rB:true,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:true,starts:{e:/$/,r:0,c:[b],}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,c:[a.QSM,b]}]}}); \ No newline at end of file
diff --git a/vendor/assets/stylesheets/highlightjs.min.css b/vendor/assets/stylesheets/highlightjs.min.css
new file mode 100644
index 00000000000..f2429be6228
--- /dev/null
+++ b/vendor/assets/stylesheets/highlightjs.min.css
@@ -0,0 +1 @@
+.hljs{display:block;padding:.5em;background:#f0f0f0}.hljs,.hljs-subst,.hljs-tag .hljs-title,.lisp .hljs-title,.clojure .hljs-built_in,.nginx .hljs-title{color:black}.hljs-string,.hljs-title,.hljs-constant,.hljs-parent,.hljs-tag .hljs-value,.hljs-rules .hljs-value,.hljs-rules .hljs-value .hljs-number,.hljs-preprocessor,.hljs-pragma,.haml .hljs-symbol,.ruby .hljs-symbol,.ruby .hljs-symbol .hljs-string,.hljs-aggregate,.hljs-template_tag,.django .hljs-variable,.smalltalk .hljs-class,.hljs-addition,.hljs-flow,.hljs-stream,.bash .hljs-variable,.apache .hljs-tag,.apache .hljs-cbracket,.tex .hljs-command,.tex .hljs-special,.erlang_repl .hljs-function_or_atom,.asciidoc .hljs-header,.markdown .hljs-header,.coffeescript .hljs-attribute{color:#800}.smartquote,.hljs-comment,.hljs-annotation,.hljs-template_comment,.diff .hljs-header,.hljs-chunk,.asciidoc .hljs-blockquote,.markdown .hljs-blockquote{color:#888}.hljs-number,.hljs-date,.hljs-regexp,.hljs-literal,.hljs-hexcolor,.smalltalk .hljs-symbol,.smalltalk .hljs-char,.go .hljs-constant,.hljs-change,.lasso .hljs-variable,.makefile .hljs-variable,.asciidoc .hljs-bullet,.markdown .hljs-bullet,.asciidoc .hljs-link_url,.markdown .hljs-link_url{color:#080}.hljs-label,.hljs-javadoc,.ruby .hljs-string,.hljs-decorator,.hljs-filter .hljs-argument,.hljs-localvars,.hljs-array,.hljs-attr_selector,.hljs-important,.hljs-pseudo,.hljs-pi,.haml .hljs-bullet,.hljs-doctype,.hljs-deletion,.hljs-envvar,.hljs-shebang,.apache .hljs-sqbracket,.nginx .hljs-built_in,.tex .hljs-formula,.erlang_repl .hljs-reserved,.hljs-prompt,.asciidoc .hljs-link_label,.markdown .hljs-link_label,.vhdl .hljs-attribute,.clojure .hljs-attribute,.asciidoc .hljs-attribute,.lasso .hljs-attribute,.coffeescript .hljs-property,.hljs-phony{color:#88F}.hljs-keyword,.hljs-id,.hljs-title,.hljs-built_in,.hljs-aggregate,.css .hljs-tag,.hljs-javadoctag,.hljs-phpdoc,.hljs-yardoctag,.smalltalk .hljs-class,.hljs-winutils,.bash .hljs-variable,.apache .hljs-tag,.go .hljs-typename,.tex .hljs-command,.asciidoc .hljs-strong,.markdown .hljs-strong,.hljs-request,.hljs-status{font-weight:bold}.asciidoc .hljs-emphasis,.markdown .hljs-emphasis{font-style:italic}.nginx .hljs-built_in{font-weight:normal}.coffeescript .javascript,.javascript .xml,.lasso .markup,.tex .hljs-formula,.xml .javascript,.xml .vbscript,.xml .css,.xml .hljs-cdata{opacity:.5} \ No newline at end of file