embulk 0.8.39-java → 0.10.28-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/LICENSE +202 -0
- data/embulk.gemspec +34 -33
- data/lib/embulk.rb +5 -61
- data/lib/embulk/buffer.rb +1 -2
- data/lib/embulk/gem_version.rb +3 -0
- data/lib/embulk/guess/charset.rb +2 -11
- data/lib/embulk/java/bootstrap.rb +0 -1
- data/lib/embulk/java_plugin.rb +9 -1
- data/lib/embulk/logger.rb +2 -1
- data/lib/embulk/page_builder.rb +2 -2
- data/lib/embulk/plugin.rb +2 -2
- data/lib/embulk/schema.rb +3 -4
- data/lib/embulk/version.rb +43 -19
- metadata +23 -762
- data/.gitignore +0 -15
- data/.ruby-version +0 -1
- data/.travis.yml +0 -28
- data/COPYING +0 -14
- data/Gemfile.lock +0 -30
- data/README.md +0 -229
- data/Rakefile +0 -26
- data/appveyor.yml +0 -28
- data/bin/embulk +0 -139
- data/build.gradle +0 -419
- data/embulk-cli/build.gradle +0 -9
- data/embulk-cli/src/main/bat/selfrun.bat +0 -107
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkArguments.java +0 -54
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLine.java +0 -227
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLineException.java +0 -25
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkExample.java +0 -86
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkMigrate.java +0 -480
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkNew.java +0 -419
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkRun.java +0 -786
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSelfUpdate.java +0 -235
- data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSubcommand.java +0 -47
- data/embulk-cli/src/main/java/org/embulk/cli/Main.java +0 -31
- data/embulk-cli/src/main/java/org/embulk/cli/parse/AbstractHelpLineDefinition.java +0 -15
- data/embulk-cli/src/main/java/org/embulk/cli/parse/CliHelpFormatterWithHelpMessages.java +0 -141
- data/embulk-cli/src/main/java/org/embulk/cli/parse/CliOptionsWithHelpMessages.java +0 -45
- data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineHelpRequired.java +0 -10
- data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParseException.java +0 -25
- data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParser.java +0 -187
- data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageAsCliOption.java +0 -36
- data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageLineDefinition.java +0 -20
- data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionBehavior.java +0 -39
- data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionDefinition.java +0 -120
- data/embulk-cli/src/main/sh/selfrun.sh +0 -60
- data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +0 -23
- data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +0 -296
- data/embulk-core/build.gradle +0 -83
- data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +0 -321
- data/embulk-core/src/main/java/org/embulk/EmbulkRunner.java +0 -531
- data/embulk-core/src/main/java/org/embulk/EmbulkService.java +0 -78
- data/embulk-core/src/main/java/org/embulk/EmbulkSetup.java +0 -49
- data/embulk-core/src/main/java/org/embulk/EmbulkVersion.java +0 -109
- data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +0 -87
- data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +0 -107
- data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +0 -47
- data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +0 -36
- data/embulk-core/src/main/java/org/embulk/config/Config.java +0 -15
- data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +0 -15
- data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +0 -32
- data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +0 -26
- data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +0 -14
- data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +0 -149
- data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +0 -34
- data/embulk-core/src/main/java/org/embulk/config/DataSource.java +0 -41
- data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +0 -243
- data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +0 -84
- data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +0 -20
- data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +0 -123
- data/embulk-core/src/main/java/org/embulk/config/Task.java +0 -10
- data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +0 -180
- data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +0 -32
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +0 -349
- data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +0 -34
- data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +0 -38
- data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +0 -24
- data/embulk-core/src/main/java/org/embulk/config/UserDataException.java +0 -4
- data/embulk-core/src/main/java/org/embulk/config/UserDataExceptions.java +0 -17
- data/embulk-core/src/main/java/org/embulk/config/YamlTagResolver.java +0 -53
- data/embulk-core/src/main/java/org/embulk/exec/BufferFileInputPlugin.java +0 -88
- data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +0 -754
- data/embulk-core/src/main/java/org/embulk/exec/ConfigurableGuessInputPlugin.java +0 -9
- data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +0 -53
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +0 -10
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +0 -33
- data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +0 -43
- data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +0 -16
- data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +0 -16
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +0 -309
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +0 -563
- data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +0 -68
- data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +0 -10
- data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +0 -26
- data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +0 -77
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +0 -222
- data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +0 -27
- data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +0 -17
- data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +0 -100
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +0 -215
- data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +0 -22
- data/embulk-core/src/main/java/org/embulk/exec/SkipTransactionException.java +0 -23
- data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +0 -24
- data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +0 -35
- data/embulk-core/src/main/java/org/embulk/exec/TransactionStage.java +0 -27
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +0 -76
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +0 -395
- data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +0 -17
- data/embulk-core/src/main/java/org/embulk/plugin/DefaultPluginType.java +0 -50
- data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +0 -100
- data/embulk-core/src/main/java/org/embulk/plugin/MavenPluginType.java +0 -112
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +0 -993
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +0 -16
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +0 -102
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +0 -78
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +0 -49
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +0 -25
- data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +0 -122
- data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +0 -102
- data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +0 -30
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +0 -96
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +0 -102
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +0 -95
- data/embulk-core/src/main/java/org/embulk/plugin/jar/InvalidJarPluginException.java +0 -14
- data/embulk-core/src/main/java/org/embulk/plugin/jar/JarPluginLoader.java +0 -232
- data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactFinder.java +0 -134
- data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactNotFoundException.java +0 -20
- data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSource.java +0 -187
- data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSourceModule.java +0 -22
- data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenRepositoryNotFoundException.java +0 -31
- data/embulk-core/src/main/java/org/embulk/spi/AbortTransactionResource.java +0 -36
- data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +0 -148
- data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +0 -8
- data/embulk-core/src/main/java/org/embulk/spi/CloseResource.java +0 -42
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +0 -95
- data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +0 -112
- data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +0 -16
- data/embulk-core/src/main/java/org/embulk/spi/DataException.java +0 -23
- data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +0 -16
- data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +0 -16
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +0 -113
- data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +0 -6
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +0 -220
- data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +0 -19
- data/embulk-core/src/main/java/org/embulk/spi/Extension.java +0 -44
- data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +0 -11
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +0 -30
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +0 -169
- data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +0 -13
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +0 -28
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +0 -199
- data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +0 -18
- data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +0 -18
- data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +0 -9
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +0 -33
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +0 -29
- data/embulk-core/src/main/java/org/embulk/spi/Page.java +0 -86
- data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +0 -696
- data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +0 -47
- data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +0 -11
- data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +0 -248
- data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +0 -17
- data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +0 -10
- data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +0 -117
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +0 -139
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +0 -93
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +0 -22
- data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +0 -81
- data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +0 -19
- data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +0 -88
- data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +0 -10
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +0 -17
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +0 -19
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +0 -17
- data/embulk-core/src/main/java/org/embulk/spi/json/JsonParseException.java +0 -17
- data/embulk-core/src/main/java/org/embulk/spi/json/JsonParser.java +0 -233
- data/embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java +0 -100
- data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +0 -55
- data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +0 -180
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +0 -158
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +0 -125
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +0 -12
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +0 -310
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +0 -49
- data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +0 -58
- data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +0 -12
- data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +0 -12
- data/embulk-core/src/main/java/org/embulk/spi/type/JsonType.java +0 -14
- data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +0 -12
- data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +0 -12
- data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +0 -41
- data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +0 -15
- data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +0 -45
- data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +0 -16
- data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +0 -156
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +0 -106
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +0 -113
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +0 -54
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +0 -34
- data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +0 -55
- data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +0 -81
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +0 -10
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +0 -21
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +0 -134
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +0 -200
- data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +0 -81
- data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +0 -93
- data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +0 -111
- data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +0 -119
- data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +0 -100
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +0 -189
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +0 -25
- data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +0 -65
- data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +0 -157
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +0 -123
- data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +0 -52
- data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +0 -38
- data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +0 -88
- data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +0 -126
- data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +0 -149
- data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +0 -168
- data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +0 -130
- data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +0 -53
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +0 -94
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +0 -71
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +0 -20
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +0 -68
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/JsonColumnSetter.java +0 -64
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +0 -78
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +0 -39
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +0 -68
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +0 -63
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +0 -72
- data/embulk-core/src/main/resources/embulk/logback-color.xml +0 -72
- data/embulk-core/src/main/resources/embulk/logback-console.xml +0 -14
- data/embulk-core/src/main/resources/embulk/logback-file.xml +0 -23
- data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +0 -73
- data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +0 -29
- data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +0 -122
- data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +0 -72
- data/embulk-core/src/test/java/org/embulk/RandomManager.java +0 -53
- data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +0 -23
- data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +0 -17
- data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +0 -66
- data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +0 -114
- data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +0 -70
- data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +0 -58
- data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +0 -83
- data/embulk-core/src/test/java/org/embulk/plugin/TestPluginTypeSerDe.java +0 -67
- data/embulk-core/src/test/java/org/embulk/plugin/jar/ExampleJarSpiV0.java +0 -9
- data/embulk-core/src/test/java/org/embulk/plugin/jar/JarBuilder.java +0 -101
- data/embulk-core/src/test/java/org/embulk/plugin/jar/TestJarPluginLoader.java +0 -60
- data/embulk-core/src/test/java/org/embulk/plugin/maven/TestMavenArtifactFinder.java +0 -41
- data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +0 -63
- data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +0 -108
- data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +0 -80
- data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +0 -59
- data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +0 -24
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +0 -89
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +0 -199
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +0 -221
- data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +0 -188
- data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +0 -411
- data/embulk-core/src/test/java/org/embulk/spi/json/TestJsonParser.java +0 -102
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +0 -116
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +0 -75
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +0 -67
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampParser.java +0 -247
- data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +0 -45
- data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +0 -79
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +0 -237
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +0 -123
- data/embulk-core/src/test/resources/m2.test/.gitignore +0 -1
- data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar +0 -0
- data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar.sha1 +0 -1
- data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom +0 -9
- data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom.sha1 +0 -1
- data/embulk-docs/Makefile +0 -178
- data/embulk-docs/build.gradle +0 -41
- data/embulk-docs/make.bat +0 -243
- data/embulk-docs/push-gh-pages.sh +0 -49
- data/embulk-docs/src/_static/embulk-architecture.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-tr.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-wt.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline.ai +0 -396
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr-small.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-wt.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.ai +0 -417
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.svg +0 -1
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-tr.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-wt.png +0 -0
- data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol.ai +1 -394
- data/embulk-docs/src/_static/embulk-logo.svg +0 -133
- data/embulk-docs/src/built-in.rst +0 -1017
- data/embulk-docs/src/conf.py +0 -260
- data/embulk-docs/src/customization.rst +0 -184
- data/embulk-docs/src/developers/index.rst +0 -45
- data/embulk-docs/src/index.rst +0 -102
- data/embulk-docs/src/logo.rst +0 -27
- data/embulk-docs/src/recipe.rst +0 -8
- data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana5.rst +0 -163
- data/embulk-docs/src/release.rst +0 -109
- data/embulk-docs/src/release/release-0.1.0.rst +0 -8
- data/embulk-docs/src/release/release-0.2.0.rst +0 -16
- data/embulk-docs/src/release/release-0.2.1.rst +0 -19
- data/embulk-docs/src/release/release-0.3.0.rst +0 -34
- data/embulk-docs/src/release/release-0.3.1.rst +0 -11
- data/embulk-docs/src/release/release-0.3.2.rst +0 -15
- data/embulk-docs/src/release/release-0.4.0.rst +0 -74
- data/embulk-docs/src/release/release-0.4.1.rst +0 -18
- data/embulk-docs/src/release/release-0.4.10.rst +0 -17
- data/embulk-docs/src/release/release-0.4.2.rst +0 -18
- data/embulk-docs/src/release/release-0.4.3.rst +0 -34
- data/embulk-docs/src/release/release-0.4.4.rst +0 -39
- data/embulk-docs/src/release/release-0.4.5.rst +0 -24
- data/embulk-docs/src/release/release-0.4.6.rst +0 -30
- data/embulk-docs/src/release/release-0.4.7.rst +0 -16
- data/embulk-docs/src/release/release-0.4.8.rst +0 -15
- data/embulk-docs/src/release/release-0.4.9.rst +0 -23
- data/embulk-docs/src/release/release-0.5.0.rst +0 -89
- data/embulk-docs/src/release/release-0.5.1.rst +0 -13
- data/embulk-docs/src/release/release-0.5.2.rst +0 -30
- data/embulk-docs/src/release/release-0.5.3.rst +0 -22
- data/embulk-docs/src/release/release-0.5.4.rst +0 -24
- data/embulk-docs/src/release/release-0.5.5.rst +0 -18
- data/embulk-docs/src/release/release-0.6.0.rst +0 -34
- data/embulk-docs/src/release/release-0.6.1.rst +0 -11
- data/embulk-docs/src/release/release-0.6.10.rst +0 -15
- data/embulk-docs/src/release/release-0.6.11.rst +0 -19
- data/embulk-docs/src/release/release-0.6.12.rst +0 -31
- data/embulk-docs/src/release/release-0.6.13.rst +0 -23
- data/embulk-docs/src/release/release-0.6.14.rst +0 -47
- data/embulk-docs/src/release/release-0.6.15.rst +0 -26
- data/embulk-docs/src/release/release-0.6.16.rst +0 -26
- data/embulk-docs/src/release/release-0.6.17.rst +0 -39
- data/embulk-docs/src/release/release-0.6.18.rst +0 -14
- data/embulk-docs/src/release/release-0.6.19.rst +0 -18
- data/embulk-docs/src/release/release-0.6.2.rst +0 -17
- data/embulk-docs/src/release/release-0.6.20.rst +0 -19
- data/embulk-docs/src/release/release-0.6.21.rst +0 -20
- data/embulk-docs/src/release/release-0.6.22.rst +0 -26
- data/embulk-docs/src/release/release-0.6.23.rst +0 -17
- data/embulk-docs/src/release/release-0.6.24.rst +0 -13
- data/embulk-docs/src/release/release-0.6.25.rst +0 -12
- data/embulk-docs/src/release/release-0.6.26.rst +0 -17
- data/embulk-docs/src/release/release-0.6.27.rst +0 -11
- data/embulk-docs/src/release/release-0.6.3.rst +0 -23
- data/embulk-docs/src/release/release-0.6.4.rst +0 -13
- data/embulk-docs/src/release/release-0.6.5.rst +0 -17
- data/embulk-docs/src/release/release-0.6.6.rst +0 -17
- data/embulk-docs/src/release/release-0.6.7.rst +0 -17
- data/embulk-docs/src/release/release-0.6.8.rst +0 -24
- data/embulk-docs/src/release/release-0.6.9.rst +0 -24
- data/embulk-docs/src/release/release-0.7.0.rst +0 -96
- data/embulk-docs/src/release/release-0.7.1.rst +0 -22
- data/embulk-docs/src/release/release-0.7.10.rst +0 -13
- data/embulk-docs/src/release/release-0.7.11.rst +0 -12
- data/embulk-docs/src/release/release-0.7.2.rst +0 -25
- data/embulk-docs/src/release/release-0.7.3.rst +0 -21
- data/embulk-docs/src/release/release-0.7.4.rst +0 -14
- data/embulk-docs/src/release/release-0.7.5.rst +0 -22
- data/embulk-docs/src/release/release-0.7.6.rst +0 -18
- data/embulk-docs/src/release/release-0.7.7.rst +0 -13
- data/embulk-docs/src/release/release-0.7.8.rst +0 -14
- data/embulk-docs/src/release/release-0.7.9.rst +0 -14
- data/embulk-docs/src/release/release-0.8.0.rst +0 -74
- data/embulk-docs/src/release/release-0.8.1.rst +0 -18
- data/embulk-docs/src/release/release-0.8.10.rst +0 -35
- data/embulk-docs/src/release/release-0.8.11.rst +0 -12
- data/embulk-docs/src/release/release-0.8.12.rst +0 -12
- data/embulk-docs/src/release/release-0.8.13.rst +0 -12
- data/embulk-docs/src/release/release-0.8.14.rst +0 -31
- data/embulk-docs/src/release/release-0.8.15.rst +0 -17
- data/embulk-docs/src/release/release-0.8.16.rst +0 -43
- data/embulk-docs/src/release/release-0.8.17.rst +0 -11
- data/embulk-docs/src/release/release-0.8.18.rst +0 -27
- data/embulk-docs/src/release/release-0.8.19.rst +0 -43
- data/embulk-docs/src/release/release-0.8.2.rst +0 -19
- data/embulk-docs/src/release/release-0.8.20.rst +0 -11
- data/embulk-docs/src/release/release-0.8.21.rst +0 -17
- data/embulk-docs/src/release/release-0.8.22.rst +0 -15
- data/embulk-docs/src/release/release-0.8.23.rst +0 -14
- data/embulk-docs/src/release/release-0.8.24.rst +0 -15
- data/embulk-docs/src/release/release-0.8.25.rst +0 -14
- data/embulk-docs/src/release/release-0.8.26.rst +0 -16
- data/embulk-docs/src/release/release-0.8.27.rst +0 -15
- data/embulk-docs/src/release/release-0.8.28.rst +0 -14
- data/embulk-docs/src/release/release-0.8.29.rst +0 -14
- data/embulk-docs/src/release/release-0.8.3.rst +0 -15
- data/embulk-docs/src/release/release-0.8.30.rst +0 -14
- data/embulk-docs/src/release/release-0.8.31.rst +0 -12
- data/embulk-docs/src/release/release-0.8.32.rst +0 -14
- data/embulk-docs/src/release/release-0.8.33.rst +0 -13
- data/embulk-docs/src/release/release-0.8.34.rst +0 -12
- data/embulk-docs/src/release/release-0.8.35.rst +0 -12
- data/embulk-docs/src/release/release-0.8.36.rst +0 -32
- data/embulk-docs/src/release/release-0.8.37.rst +0 -20
- data/embulk-docs/src/release/release-0.8.38.rst +0 -12
- data/embulk-docs/src/release/release-0.8.39.rst +0 -12
- data/embulk-docs/src/release/release-0.8.4.rst +0 -18
- data/embulk-docs/src/release/release-0.8.5.rst +0 -11
- data/embulk-docs/src/release/release-0.8.6.rst +0 -14
- data/embulk-docs/src/release/release-0.8.7.rst +0 -18
- data/embulk-docs/src/release/release-0.8.8.rst +0 -18
- data/embulk-docs/src/release/release-0.8.9.rst +0 -14
- data/embulk-jruby-strptime/build.gradle +0 -3
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/RubyDateParser.java +0 -121
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeFormat.java +0 -53
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeParser.java +0 -884
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeToken.java +0 -111
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/TimeZoneConverter.java +0 -466
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.flex +0 -62
- data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.java +0 -577
- data/embulk-standards/build.gradle +0 -7
- data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileDecoderPlugin.java +0 -55
- data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileEncoderPlugin.java +0 -67
- data/embulk-standards/src/main/java/org/embulk/standards/ConfigInputPlugin.java +0 -170
- data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +0 -295
- data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +0 -416
- data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +0 -545
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +0 -55
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +0 -71
- data/embulk-standards/src/main/java/org/embulk/standards/JsonParserPlugin.java +0 -235
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +0 -232
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +0 -148
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +0 -59
- data/embulk-standards/src/main/java/org/embulk/standards/RemoveColumnsFilterPlugin.java +0 -268
- data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +0 -479
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +0 -16
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -60
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +0 -91
- data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +0 -1
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +0 -312
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +0 -75
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +0 -457
- data/embulk-standards/src/test/java/org/embulk/standards/TestJsonParserPlugin.java +0 -351
- data/embulk-standards/src/test/java/org/embulk/standards/TestRemoveColumnsFilterPlugin.java +0 -121
- data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +0 -1020
- data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvAllStringsGuessPlugin.java +0 -38
- data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvGuessPlugin.java +0 -248
- data/embulk-standards/src/test/java/org/embulk/standards/preview/TestFilePreview.java +0 -73
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row.csv +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows.csv +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed.csv +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row.csv +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header.csv +0 -3
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows.csv +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_guessed.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column.csv +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_guessed.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_guessed.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_guessed.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_guessed.yml +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_guessed.yml +0 -12
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_guessed.yml +0 -16
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_guessed.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_seed.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_exec.yml +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_load.yml +0 -19
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_previewed.csv +0 -1
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_load.yml +0 -19
- data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_previewed.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_expected.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_filter.yml +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_in.yml +0 -18
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.yml +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_expected.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_in.yml +0 -17
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_unmatched_filter.yml +0 -3
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_without_unmatched_filter.yml +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove.csv +0 -5
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_expected.csv +0 -4
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_filter.yml +0 -2
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_in.yml +0 -18
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_with_unmatched_filter.yml +0 -3
- data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_without_unmatched_filter.yml +0 -2
- data/embulk-test/build.gradle +0 -6
- data/embulk-test/src/main/java/org/embulk/test/EmbulkTests.java +0 -75
- data/embulk-test/src/main/java/org/embulk/test/PreviewResultInputPlugin.java +0 -65
- data/embulk-test/src/main/java/org/embulk/test/TestingBulkLoader.java +0 -129
- data/embulk-test/src/main/java/org/embulk/test/TestingEmbulk.java +0 -710
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +0 -5
- data/gradlew +0 -172
- data/gradlew.bat +0 -84
- data/lib/embulk/data/bundle/.bundle/config +0 -3
- data/lib/embulk/data/bundle/.ruby-version +0 -1
- data/lib/embulk/data/bundle/Gemfile +0 -31
- data/lib/embulk/data/bundle/embulk/filter/example.rb +0 -42
- data/lib/embulk/data/bundle/embulk/input/example.rb +0 -54
- data/lib/embulk/data/bundle/embulk/output/example.rb +0 -58
- data/lib/embulk/data/new/LICENSE.txt +0 -21
- data/lib/embulk/data/new/README.md.vm +0 -106
- data/lib/embulk/data/new/gitignore.vm +0 -17
- data/lib/embulk/data/new/java/build.gradle.vm +0 -96
- data/lib/embulk/data/new/java/config/checkstyle/checkstyle.xml +0 -128
- data/lib/embulk/data/new/java/config/checkstyle/default.xml +0 -108
- data/lib/embulk/data/new/java/decoder.java.vm +0 -86
- data/lib/embulk/data/new/java/encoder.java.vm +0 -88
- data/lib/embulk/data/new/java/file_input.java.vm +0 -145
- data/lib/embulk/data/new/java/file_output.java.vm +0 -95
- data/lib/embulk/data/new/java/filter.java.vm +0 -57
- data/lib/embulk/data/new/java/formatter.java.vm +0 -55
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +0 -5
- data/lib/embulk/data/new/java/gradlew +0 -172
- data/lib/embulk/data/new/java/gradlew.bat +0 -84
- data/lib/embulk/data/new/java/input.java.vm +0 -89
- data/lib/embulk/data/new/java/output.java.vm +0 -79
- data/lib/embulk/data/new/java/parser.java.vm +0 -61
- data/lib/embulk/data/new/java/plugin_loader.rb.vm +0 -3
- data/lib/embulk/data/new/java/test.java.vm +0 -5
- data/lib/embulk/data/new/ruby/.ruby-version +0 -1
- data/lib/embulk/data/new/ruby/Gemfile +0 -2
- data/lib/embulk/data/new/ruby/Rakefile +0 -3
- data/lib/embulk/data/new/ruby/decoder_guess.rb.vm +0 -25
- data/lib/embulk/data/new/ruby/filter.rb.vm +0 -50
- data/lib/embulk/data/new/ruby/formatter.rb.vm +0 -49
- data/lib/embulk/data/new/ruby/gemspec.vm +0 -20
- data/lib/embulk/data/new/ruby/input.rb.vm +0 -59
- data/lib/embulk/data/new/ruby/output.rb.vm +0 -61
- data/lib/embulk/data/new/ruby/parser.rb.vm +0 -44
- data/lib/embulk/data/new/ruby/parser_guess.rb.vm +0 -65
- data/lib/embulk/data/package_data.rb +0 -59
- data/lib/embulk/guess/bzip2.rb +0 -23
- data/lib/embulk/guess/csv.rb +0 -374
- data/lib/embulk/guess/csv_all_strings.rb +0 -13
- data/lib/embulk/guess/gzip.rb +0 -18
- data/lib/embulk/guess/json.rb +0 -50
- data/lib/embulk/runner.rb +0 -53
- data/settings.gradle +0 -8
- data/test/helper.rb +0 -23
- data/test/monkey_strptime/mri/date/test_date_strptime.rb +0 -515
- data/test/monkey_strptime/run-test.rb +0 -29
- data/test/vanilla/guess/test_csv_all_strings.rb +0 -43
- data/test/vanilla/guess/test_csv_guess.rb +0 -170
- data/test/vanilla/guess/test_schema_guess.rb +0 -47
- data/test/vanilla/guess/test_time_format_guess.rb +0 -135
- data/test/vanilla/run-test.rb +0 -14
- data/test/vanilla/time/test_timestamp_parser.rb +0 -117
@@ -1,14 +0,0 @@
|
|
1
|
-
Release 0.8.6
|
2
|
-
==================================
|
3
|
-
|
4
|
-
General Changes
|
5
|
-
------------------
|
6
|
-
|
7
|
-
* Upgraded JRuby from 9.0.4.0 to 9.0.5.0. See `JRuby 9.0.5.0 release notes <http://jruby.org/2016/01/26/jruby-9-0-5-0.html>`_ for details.
|
8
|
-
|
9
|
-
* Upgraded msgpack-java from 0.8.1 to 0.8.3. See `MessagePack Java release notes <https://github.com/msgpack/msgpack-java/blob/develop/RELEASE_NOTES.md>`_ for details.
|
10
|
-
|
11
|
-
|
12
|
-
Release Date
|
13
|
-
------------------
|
14
|
-
2016-02-24
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Release 0.8.7
|
2
|
-
==================================
|
3
|
-
|
4
|
-
General Changes
|
5
|
-
------------------
|
6
|
-
|
7
|
-
* LineDecoder skips UTF-8 BOM appropriately.
|
8
|
-
|
9
|
-
* Timestamp guess uses ``%z`` instead of ``%Z``. Parsing behavior doesn't change but formatting behavior changes if output plugins use guessed configuration to format timestamp (this is unlikely because guessed configuration is most likely used by input plugins to parse timestamp).
|
10
|
-
|
11
|
-
* Fix uninitialized constant MessagePack (@sonots++)
|
12
|
-
|
13
|
-
* Fixed a possible busy loop at TaskDeserializer.
|
14
|
-
|
15
|
-
|
16
|
-
Release Date
|
17
|
-
------------------
|
18
|
-
2016-03-04
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Release 0.8.8
|
2
|
-
==================================
|
3
|
-
|
4
|
-
General Changes
|
5
|
-
------------------
|
6
|
-
|
7
|
-
* Upgraded joda-time from 2.8.1 to 2.9.2. This upgrade includes a fix to handle JDK 8u60.
|
8
|
-
|
9
|
-
* joda-time 2.9.0 release note http://www.joda.org/joda-time/upgradeto290.html
|
10
|
-
|
11
|
-
* joda-time #288 https://github.com/JodaOrg/joda-time/issues/288
|
12
|
-
|
13
|
-
* joda-time #291 https://github.com/JodaOrg/joda-time/issues/291
|
14
|
-
|
15
|
-
|
16
|
-
Release Date
|
17
|
-
------------------
|
18
|
-
2016-03-14
|
@@ -1,14 +0,0 @@
|
|
1
|
-
Release 0.8.9
|
2
|
-
==================================
|
3
|
-
|
4
|
-
General Changes
|
5
|
-
------------------
|
6
|
-
|
7
|
-
* Added ``date:`` option to timestamp parser. If format doesn't include date part, date option is used as the default date. For example, parsing text "02:46:29" with ``format: %H:%M:%S`` and ``date: 2016-02-03`` options returns "2016-02-03 02:46:29".
|
8
|
-
|
9
|
-
* Upgraded msgpack-core version from 0.8.6 to 0.8.7. Release notes of msgpack-java: https://github.com/msgpack/msgpack-java/blob/develop/RELEASE_NOTES.md
|
10
|
-
|
11
|
-
|
12
|
-
Release Date
|
13
|
-
------------------
|
14
|
-
2016-05-12
|
@@ -1,121 +0,0 @@
|
|
1
|
-
package org.embulk.spi.time;
|
2
|
-
|
3
|
-
import org.jruby.runtime.ThreadContext;
|
4
|
-
|
5
|
-
import java.util.HashMap;
|
6
|
-
import java.util.List;
|
7
|
-
|
8
|
-
import static org.embulk.spi.time.StrptimeParser.FormatBag.has;
|
9
|
-
import static org.jruby.RubyRational.newRationalCanonicalize;
|
10
|
-
|
11
|
-
/**
|
12
|
-
* This class has {@code StrptimeParser} and provides methods that are calls from JRuby.
|
13
|
-
*
|
14
|
-
* TODO
|
15
|
-
* This class is tentatively required for executing test/mri/date/test_date_strptime.rb
|
16
|
-
* (#617). The {@code StrptimeParser} and {@code RubyDateParser} will be merged into
|
17
|
-
* JRuby (jruby/jruby#4591). embulk-jruby-strptime is removed when Embulk start using
|
18
|
-
* the JRuby that bundles embulk-jruby-strptime.
|
19
|
-
*/
|
20
|
-
public class RubyDateParser
|
21
|
-
{
|
22
|
-
private final StrptimeParser strptimeParser;
|
23
|
-
|
24
|
-
public RubyDateParser()
|
25
|
-
{
|
26
|
-
this.strptimeParser = new StrptimeParser();
|
27
|
-
}
|
28
|
-
|
29
|
-
/**
|
30
|
-
* Date._strptime method in JRuby 9.1.5.0's lib/ruby/stdlib/date/format.rb is replaced
|
31
|
-
* with this method. This is Java implementation of date__strptime method in MRI 2.3.1's
|
32
|
-
* ext/date/date_strptime.c.
|
33
|
-
* @see <a href="https://github.com/jruby/jruby/blob/036ce39f0476d4bd718e23e64caff36bb50b8dbc/lib/ruby/stdlib/date/format.rb">format.rb</a>
|
34
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strptime.c">date_strptime.c</a>
|
35
|
-
*/
|
36
|
-
public HashMap<String, Object> parse(ThreadContext context, final String format, final String text)
|
37
|
-
{
|
38
|
-
final List<StrptimeToken> compiledPattern = strptimeParser.compilePattern(format);
|
39
|
-
final StrptimeParser.FormatBag bag = strptimeParser.parse(compiledPattern, text);
|
40
|
-
if (bag != null) {
|
41
|
-
return convertFormatBagToHash(context, bag);
|
42
|
-
}
|
43
|
-
else {
|
44
|
-
return null;
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
private HashMap<String, Object> convertFormatBagToHash(ThreadContext context, StrptimeParser.FormatBag bag)
|
49
|
-
{
|
50
|
-
final HashMap<String, Object> map = new HashMap<>();
|
51
|
-
|
52
|
-
if (has(bag.getMDay())) {
|
53
|
-
map.put("mday", bag.getMDay());
|
54
|
-
}
|
55
|
-
if (has(bag.getWDay())) {
|
56
|
-
map.put("wday", bag.getWDay());
|
57
|
-
}
|
58
|
-
if (has(bag.getCWDay())) {
|
59
|
-
map.put("cwday", bag.getCWDay());
|
60
|
-
}
|
61
|
-
if (has(bag.getYDay())) {
|
62
|
-
map.put("yday", bag.getYDay());
|
63
|
-
}
|
64
|
-
if (has(bag.getCWeek())) {
|
65
|
-
map.put("cweek", bag.getCWeek());
|
66
|
-
}
|
67
|
-
if (has(bag.getCWYear())) {
|
68
|
-
map.put("cwyear", bag.getCWYear());
|
69
|
-
}
|
70
|
-
if (has(bag.getMin())) {
|
71
|
-
map.put("min", bag.getMin());
|
72
|
-
}
|
73
|
-
if (has(bag.getMon())) {
|
74
|
-
map.put("mon", bag.getMon());
|
75
|
-
}
|
76
|
-
if (has(bag.getHour())) {
|
77
|
-
map.put("hour", bag.getHour());
|
78
|
-
}
|
79
|
-
if (has(bag.getYear())) {
|
80
|
-
map.put("year", bag.getYear());
|
81
|
-
}
|
82
|
-
if (has(bag.getSec())) {
|
83
|
-
map.put("sec", bag.getSec());
|
84
|
-
}
|
85
|
-
if (has(bag.getWNum0())) {
|
86
|
-
map.put("wnum0", bag.getWNum0());
|
87
|
-
}
|
88
|
-
if (has(bag.getWNum1())) {
|
89
|
-
map.put("wnum1", bag.getWNum1());
|
90
|
-
}
|
91
|
-
if (bag.getZone() != null) {
|
92
|
-
map.put("zone", bag.getZone());
|
93
|
-
int offset = TimeZoneConverter.dateZoneToDiff(bag.getZone());
|
94
|
-
if (offset != Integer.MIN_VALUE) {
|
95
|
-
map.put("offset", offset);
|
96
|
-
}
|
97
|
-
}
|
98
|
-
if (has(bag.getSecFraction())) {
|
99
|
-
map.put("sec_fraction", newRationalCanonicalize(context, bag.getSecFraction(), (long)Math.pow(10, bag.getSecFractionSize())));
|
100
|
-
}
|
101
|
-
if (bag.hasSeconds()) {
|
102
|
-
if (has(bag.getSecondsSize())) {
|
103
|
-
map.put("seconds", newRationalCanonicalize(context, bag.getSeconds(), (long) Math.pow(10, bag.getSecondsSize())));
|
104
|
-
}
|
105
|
-
else {
|
106
|
-
map.put("seconds", bag.getSeconds());
|
107
|
-
}
|
108
|
-
}
|
109
|
-
if (has(bag.getMerid())) {
|
110
|
-
map.put("_merid", bag.getMerid());
|
111
|
-
}
|
112
|
-
if (has(bag.getCent())) {
|
113
|
-
map.put("_cent", bag.getCent());
|
114
|
-
}
|
115
|
-
if (bag.getLeftover() != null) {
|
116
|
-
map.put("leftover", bag.getLeftover());
|
117
|
-
}
|
118
|
-
|
119
|
-
return map;
|
120
|
-
}
|
121
|
-
}
|
@@ -1,53 +0,0 @@
|
|
1
|
-
package org.embulk.spi.time;
|
2
|
-
|
3
|
-
/**
|
4
|
-
* This class is ported from org.jruby.util.RubyDateFormatter.Format in JRuby
|
5
|
-
* 9.1.5.0 and modified for StrptimeParser under EPL.
|
6
|
-
* @see <a href="https://github.com/jruby/jruby/blob/036ce39f0476d4bd718e23e64caff36bb50b8dbc/core/src/main/java/org/jruby/util/RubyDateFormatter.java>RubyDateFormatter.java</a>.
|
7
|
-
*
|
8
|
-
* TODO
|
9
|
-
* This class is tentatively required for {@code StrptimeParser} class.
|
10
|
-
* The {@code StrptimeParser} and {@code RubyDateParser} will be merged into JRuby
|
11
|
-
* (jruby/jruby#4591). embulk-jruby-strptime is removed when Embulk start using
|
12
|
-
* the JRuby that bundles embulk-jruby-strptime.
|
13
|
-
*/
|
14
|
-
enum StrptimeFormat
|
15
|
-
{
|
16
|
-
FORMAT_STRING, // raw string, no formatting
|
17
|
-
FORMAT_SPECIAL, // composition of other formats
|
18
|
-
|
19
|
-
FORMAT_WEEK_LONG, // %A
|
20
|
-
FORMAT_WEEK_SHORT, // %a
|
21
|
-
FORMAT_MONTH_LONG, // %B
|
22
|
-
FORMAT_MONTH_SHORT, // %b, %h
|
23
|
-
FORMAT_CENTURY, // %C
|
24
|
-
FORMAT_DAY, // %d
|
25
|
-
FORMAT_DAY_S, // %e
|
26
|
-
FORMAT_WEEKYEAR, // %G
|
27
|
-
FORMAT_WEEKYEAR_SHORT, // %g
|
28
|
-
FORMAT_HOUR, // %H
|
29
|
-
FORMAT_HOUR_M, // %I
|
30
|
-
FORMAT_DAY_YEAR, // %j
|
31
|
-
FORMAT_HOUR_BLANK, // %k
|
32
|
-
FORMAT_MILLISEC, // %L
|
33
|
-
FORMAT_HOUR_S, // %l
|
34
|
-
FORMAT_MINUTES, // %M
|
35
|
-
FORMAT_MONTH, // %m
|
36
|
-
FORMAT_NANOSEC, // %N
|
37
|
-
FORMAT_MERIDIAN_LOWER_CASE, // %P
|
38
|
-
FORMAT_MERIDIAN, // %p
|
39
|
-
FORMAT_MILLISEC_EPOCH, // %Q Only for Date/DateTime from here
|
40
|
-
FORMAT_SECONDS, // %S
|
41
|
-
FORMAT_EPOCH, // %s
|
42
|
-
FORMAT_WEEK_YEAR_S, // %U
|
43
|
-
FORMAT_DAY_WEEK2, // %u
|
44
|
-
FORMAT_WEEK_WEEKYEAR, // %V
|
45
|
-
FORMAT_WEEK_YEAR_M, // %W
|
46
|
-
FORMAT_DAY_WEEK, // %w
|
47
|
-
FORMAT_YEAR_LONG, // %Y
|
48
|
-
FORMAT_YEAR_SHORT, // %y
|
49
|
-
|
50
|
-
FORMAT_COLON_ZONE_OFF, // %z, %:z, %::z, %:::z must be given number of colons as data
|
51
|
-
|
52
|
-
FORMAT_ZONE_ID; // %Z Change between Time and Date
|
53
|
-
}
|
@@ -1,884 +0,0 @@
|
|
1
|
-
package org.embulk.spi.time;
|
2
|
-
|
3
|
-
import java.io.IOException;
|
4
|
-
import java.io.Reader;
|
5
|
-
import java.io.StringReader;
|
6
|
-
import java.util.EnumSet;
|
7
|
-
import java.util.LinkedList;
|
8
|
-
import java.util.List;
|
9
|
-
import java.util.Arrays;
|
10
|
-
import java.util.regex.Matcher;
|
11
|
-
import java.util.regex.Pattern;
|
12
|
-
|
13
|
-
import org.embulk.spi.time.lexer.StrptimeLexer;
|
14
|
-
|
15
|
-
/**
|
16
|
-
* This is Java implementation of ext/date/date_strptime.c in Ruby v2.3.1.
|
17
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strptime.c">date_strptime.c</a>
|
18
|
-
*
|
19
|
-
* TODO
|
20
|
-
* This class is tentatively required for {@code TimestampParser} class.
|
21
|
-
* The {@code StrptimeParser} and {@code RubyDateParser} will be merged into JRuby
|
22
|
-
* (jruby/jruby#4591). embulk-jruby-strptime is removed when Embulk start using
|
23
|
-
* the JRuby that bundles embulk-jruby-strptime.
|
24
|
-
*/
|
25
|
-
public class StrptimeParser
|
26
|
-
{
|
27
|
-
// day_names
|
28
|
-
private static final String[] DAY_NAMES = new String[] {
|
29
|
-
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
|
30
|
-
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
|
31
|
-
};
|
32
|
-
|
33
|
-
// month_names
|
34
|
-
private static final String[] MONTH_NAMES = new String[] {
|
35
|
-
"January", "February", "March", "April", "May", "June", "July", "August", "September",
|
36
|
-
"October", "November", "December", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
37
|
-
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
|
38
|
-
};
|
39
|
-
|
40
|
-
// merid_names
|
41
|
-
private static final String[] MERID_NAMES = new String[] {
|
42
|
-
"am", "pm", "a.m.", "p.m."
|
43
|
-
};
|
44
|
-
|
45
|
-
/**
|
46
|
-
* Ported Date::Format::Bag from JRuby 9.1.5.0's lib/ruby/stdlib/date/format.rb.
|
47
|
-
* @see <a href="https://github.com/jruby/jruby/blob/036ce39f0476d4bd718e23e64caff36bb50b8dbc/lib/ruby/stdlib/date/format.rb">format.rb</a>
|
48
|
-
*/
|
49
|
-
public static class FormatBag
|
50
|
-
{
|
51
|
-
private int mDay = Integer.MIN_VALUE;
|
52
|
-
private int wDay = Integer.MIN_VALUE;
|
53
|
-
private int cWDay = Integer.MIN_VALUE;
|
54
|
-
private int yDay = Integer.MIN_VALUE;
|
55
|
-
private int cWeek = Integer.MIN_VALUE;
|
56
|
-
private int cWYear = Integer.MIN_VALUE;
|
57
|
-
private int min = Integer.MIN_VALUE;
|
58
|
-
private int mon = Integer.MIN_VALUE;
|
59
|
-
private int hour = Integer.MIN_VALUE;
|
60
|
-
private int year = Integer.MIN_VALUE;
|
61
|
-
private int sec = Integer.MIN_VALUE;
|
62
|
-
private int wNum0 = Integer.MIN_VALUE;
|
63
|
-
private int wNum1 = Integer.MIN_VALUE;
|
64
|
-
|
65
|
-
private String zone = null;
|
66
|
-
|
67
|
-
private int secFraction = Integer.MIN_VALUE; // Rational
|
68
|
-
private int secFractionSize = Integer.MIN_VALUE;
|
69
|
-
|
70
|
-
private long seconds = Long.MIN_VALUE; // long or Rational
|
71
|
-
private int secondsSize = Integer.MIN_VALUE;
|
72
|
-
|
73
|
-
private int merid = Integer.MIN_VALUE;
|
74
|
-
private int cent = Integer.MIN_VALUE;
|
75
|
-
|
76
|
-
private boolean fail = false;
|
77
|
-
private String leftover = null;
|
78
|
-
|
79
|
-
public int getMDay()
|
80
|
-
{
|
81
|
-
return mDay;
|
82
|
-
}
|
83
|
-
|
84
|
-
public int getWDay()
|
85
|
-
{
|
86
|
-
return wDay;
|
87
|
-
}
|
88
|
-
|
89
|
-
public int getCWDay()
|
90
|
-
{
|
91
|
-
return cWDay;
|
92
|
-
}
|
93
|
-
|
94
|
-
public int getYDay()
|
95
|
-
{
|
96
|
-
return yDay;
|
97
|
-
}
|
98
|
-
|
99
|
-
public int getCWeek()
|
100
|
-
{
|
101
|
-
return cWeek;
|
102
|
-
}
|
103
|
-
|
104
|
-
public int getCWYear()
|
105
|
-
{
|
106
|
-
return cWYear;
|
107
|
-
}
|
108
|
-
|
109
|
-
public int getMin()
|
110
|
-
{
|
111
|
-
return min;
|
112
|
-
}
|
113
|
-
|
114
|
-
public int getMon()
|
115
|
-
{
|
116
|
-
return mon;
|
117
|
-
}
|
118
|
-
|
119
|
-
public int getHour()
|
120
|
-
{
|
121
|
-
return hour;
|
122
|
-
}
|
123
|
-
|
124
|
-
public int getYear()
|
125
|
-
{
|
126
|
-
return year;
|
127
|
-
}
|
128
|
-
|
129
|
-
public int getSec()
|
130
|
-
{
|
131
|
-
return sec;
|
132
|
-
}
|
133
|
-
|
134
|
-
public int getWNum0()
|
135
|
-
{
|
136
|
-
return wNum0;
|
137
|
-
}
|
138
|
-
|
139
|
-
public int getWNum1()
|
140
|
-
{
|
141
|
-
return wNum1;
|
142
|
-
}
|
143
|
-
|
144
|
-
public String getZone()
|
145
|
-
{
|
146
|
-
return zone;
|
147
|
-
}
|
148
|
-
|
149
|
-
public int getSecFraction()
|
150
|
-
{
|
151
|
-
return secFraction;
|
152
|
-
}
|
153
|
-
|
154
|
-
public int getSecFractionSize()
|
155
|
-
{
|
156
|
-
return secFractionSize;
|
157
|
-
}
|
158
|
-
|
159
|
-
public long getSeconds()
|
160
|
-
{
|
161
|
-
return seconds;
|
162
|
-
}
|
163
|
-
|
164
|
-
public int getSecondsSize()
|
165
|
-
{
|
166
|
-
return secondsSize;
|
167
|
-
}
|
168
|
-
|
169
|
-
public int getMerid()
|
170
|
-
{
|
171
|
-
return merid;
|
172
|
-
}
|
173
|
-
|
174
|
-
public int getCent()
|
175
|
-
{
|
176
|
-
return cent;
|
177
|
-
}
|
178
|
-
|
179
|
-
void fail()
|
180
|
-
{
|
181
|
-
fail = true;
|
182
|
-
}
|
183
|
-
|
184
|
-
public String getLeftover()
|
185
|
-
{
|
186
|
-
return leftover;
|
187
|
-
}
|
188
|
-
|
189
|
-
public boolean setYearIfNotSet(int v)
|
190
|
-
{
|
191
|
-
if (has(year)) {
|
192
|
-
return false;
|
193
|
-
}
|
194
|
-
else {
|
195
|
-
year = v;
|
196
|
-
return true;
|
197
|
-
}
|
198
|
-
}
|
199
|
-
|
200
|
-
public boolean setMonthIfNotSet(int v)
|
201
|
-
{
|
202
|
-
if (has(mon)) {
|
203
|
-
return false;
|
204
|
-
}
|
205
|
-
else {
|
206
|
-
mon = v;
|
207
|
-
return true;
|
208
|
-
}
|
209
|
-
}
|
210
|
-
|
211
|
-
public boolean setMdayIfNotSet(int v)
|
212
|
-
{
|
213
|
-
if (has(mDay)) {
|
214
|
-
return false;
|
215
|
-
}
|
216
|
-
else {
|
217
|
-
mDay = v;
|
218
|
-
return true;
|
219
|
-
}
|
220
|
-
}
|
221
|
-
|
222
|
-
public boolean hasSeconds()
|
223
|
-
{
|
224
|
-
return seconds != Long.MIN_VALUE;
|
225
|
-
}
|
226
|
-
|
227
|
-
public static boolean has(int v)
|
228
|
-
{
|
229
|
-
return v != Integer.MIN_VALUE;
|
230
|
-
}
|
231
|
-
}
|
232
|
-
|
233
|
-
private final StrptimeLexer lexer;
|
234
|
-
|
235
|
-
public StrptimeParser()
|
236
|
-
{
|
237
|
-
this.lexer = new StrptimeLexer((Reader) null);
|
238
|
-
}
|
239
|
-
|
240
|
-
/**
|
241
|
-
* Ported from org.jruby.util.RubyDateFormatter#addToPattern in JRuby 9.1.5.0
|
242
|
-
* under EPL.
|
243
|
-
* @see <a href="https://github.com/jruby/jruby/blob/036ce39f0476d4bd718e23e64caff36bb50b8dbc/core/src/main/java/org/jruby/util/RubyDateFormatter.java">RubyDateFormatter.java</a>
|
244
|
-
*/
|
245
|
-
private void addToPattern(final List<StrptimeToken> compiledPattern, final String str)
|
246
|
-
{
|
247
|
-
for (int i = 0; i < str.length(); i++) {
|
248
|
-
final char c = str.charAt(i);
|
249
|
-
if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
|
250
|
-
compiledPattern.add(StrptimeToken.format(c));
|
251
|
-
}
|
252
|
-
else {
|
253
|
-
compiledPattern.add(StrptimeToken.str(Character.toString(c)));
|
254
|
-
}
|
255
|
-
}
|
256
|
-
}
|
257
|
-
|
258
|
-
/**
|
259
|
-
* Ported from org.jruby.util.RubyDateFormatter#compilePattern in JRuby 9.1.5.0
|
260
|
-
* under EPL.
|
261
|
-
* @see <a href="https://github.com/jruby/jruby/blob/036ce39f0476d4bd718e23e64caff36bb50b8dbc/core/src/main/java/org/jruby/util/RubyDateFormatter.java">RubyDateFormatter.java</a>
|
262
|
-
*/
|
263
|
-
public List<StrptimeToken> compilePattern(final String pattern)
|
264
|
-
{
|
265
|
-
final List<StrptimeToken> compiledPattern = new LinkedList<>();
|
266
|
-
final Reader reader = new StringReader(pattern); // TODO Use try-with-resource statement
|
267
|
-
lexer.yyreset(reader);
|
268
|
-
|
269
|
-
StrptimeToken token;
|
270
|
-
try {
|
271
|
-
while ((token = lexer.yylex()) != null) {
|
272
|
-
if (token.getFormat() != StrptimeFormat.FORMAT_SPECIAL) {
|
273
|
-
compiledPattern.add(token);
|
274
|
-
}
|
275
|
-
else {
|
276
|
-
char c = (Character) token.getData();
|
277
|
-
switch (c) {
|
278
|
-
case 'c':
|
279
|
-
addToPattern(compiledPattern, "a b e H:M:S Y");
|
280
|
-
break;
|
281
|
-
case 'D':
|
282
|
-
case 'x':
|
283
|
-
addToPattern(compiledPattern, "m/d/y");
|
284
|
-
break;
|
285
|
-
case 'F':
|
286
|
-
addToPattern(compiledPattern, "Y-m-d");
|
287
|
-
break;
|
288
|
-
case 'n':
|
289
|
-
compiledPattern.add(StrptimeToken.str("\n"));
|
290
|
-
break;
|
291
|
-
case 'R':
|
292
|
-
addToPattern(compiledPattern, "H:M");
|
293
|
-
break;
|
294
|
-
case 'r':
|
295
|
-
addToPattern(compiledPattern, "I:M:S p");
|
296
|
-
break;
|
297
|
-
case 'T':
|
298
|
-
case 'X':
|
299
|
-
addToPattern(compiledPattern, "H:M:S");
|
300
|
-
break;
|
301
|
-
case 't':
|
302
|
-
compiledPattern.add(StrptimeToken.str("\t"));
|
303
|
-
break;
|
304
|
-
case 'v':
|
305
|
-
addToPattern(compiledPattern, "e-b-Y");
|
306
|
-
break;
|
307
|
-
case 'Z':
|
308
|
-
// +HH:MM in 'date', never zone name
|
309
|
-
compiledPattern.add(StrptimeToken.zoneOffsetColons(1));
|
310
|
-
break;
|
311
|
-
case '+':
|
312
|
-
addToPattern(compiledPattern, "a b e H:M:S ");
|
313
|
-
// %Z: +HH:MM in 'date', never zone name
|
314
|
-
compiledPattern.add(StrptimeToken.zoneOffsetColons(1));
|
315
|
-
addToPattern(compiledPattern, " Y");
|
316
|
-
break;
|
317
|
-
default:
|
318
|
-
throw new Error("Unknown special char: " + c);
|
319
|
-
}
|
320
|
-
}
|
321
|
-
}
|
322
|
-
}
|
323
|
-
catch (IOException e) {
|
324
|
-
e.printStackTrace();
|
325
|
-
}
|
326
|
-
|
327
|
-
return compiledPattern;
|
328
|
-
}
|
329
|
-
|
330
|
-
public FormatBag parse(final List<StrptimeToken> compiledPattern, final String text)
|
331
|
-
{
|
332
|
-
final FormatBag bag = new StringParser(text).parse(compiledPattern);
|
333
|
-
if (bag == null) {
|
334
|
-
return null;
|
335
|
-
}
|
336
|
-
|
337
|
-
if (FormatBag.has(bag.cent)) {
|
338
|
-
if (FormatBag.has(bag.cWYear)) {
|
339
|
-
bag.cWYear += bag.cent * 100;
|
340
|
-
}
|
341
|
-
if (FormatBag.has(bag.year)) {
|
342
|
-
bag.year += bag.cent * 100;
|
343
|
-
}
|
344
|
-
|
345
|
-
// delete bag._cent
|
346
|
-
bag.cent = Integer.MIN_VALUE;
|
347
|
-
}
|
348
|
-
|
349
|
-
if (FormatBag.has(bag.merid)) {
|
350
|
-
if (FormatBag.has(bag.hour)) {
|
351
|
-
bag.hour %= 12;
|
352
|
-
bag.hour += bag.merid;
|
353
|
-
}
|
354
|
-
|
355
|
-
// delete bag._merid
|
356
|
-
bag.merid = Integer.MIN_VALUE;
|
357
|
-
}
|
358
|
-
|
359
|
-
return bag;
|
360
|
-
}
|
361
|
-
|
362
|
-
private static class StringParser
|
363
|
-
{
|
364
|
-
private static final Pattern ZONE_PARSE_REGEX = Pattern.compile("\\A(" +
|
365
|
-
"(?:gmt|utc?)?[-+]\\d+(?:[,.:]\\d+(?::\\d+)?)?" +
|
366
|
-
"|(?-i:[[\\p{Alpha}].\\s]+)(?:standard|daylight)\\s+time\\b" +
|
367
|
-
"|(?-i:[[\\p{Alpha}]]+)(?:\\s+dst)?\\b" +
|
368
|
-
")", Pattern.CASE_INSENSITIVE);
|
369
|
-
|
370
|
-
private final String text;
|
371
|
-
private final FormatBag bag;
|
372
|
-
|
373
|
-
private int pos;
|
374
|
-
private boolean fail;
|
375
|
-
|
376
|
-
private StringParser(String text)
|
377
|
-
{
|
378
|
-
this.text = text;
|
379
|
-
this.bag = new FormatBag();
|
380
|
-
|
381
|
-
this.pos = 0;
|
382
|
-
this.fail = false;
|
383
|
-
}
|
384
|
-
|
385
|
-
private FormatBag parse(final List<StrptimeToken> compiledPattern)
|
386
|
-
{
|
387
|
-
for (int tokenIndex = 0; tokenIndex < compiledPattern.size(); tokenIndex++) {
|
388
|
-
final StrptimeToken token = compiledPattern.get(tokenIndex);
|
389
|
-
|
390
|
-
switch (token.getFormat()) {
|
391
|
-
case FORMAT_STRING: {
|
392
|
-
final String str = token.getData().toString();
|
393
|
-
for (int i = 0; i < str.length(); i++) {
|
394
|
-
final char c = str.charAt(i);
|
395
|
-
if (isSpace(c)) {
|
396
|
-
while (!isEndOfText(text, pos) && isSpace(text.charAt(pos))) {
|
397
|
-
pos++;
|
398
|
-
}
|
399
|
-
}
|
400
|
-
else {
|
401
|
-
if (isEndOfText(text, pos) || c != text.charAt(pos)) {
|
402
|
-
fail = true;
|
403
|
-
}
|
404
|
-
pos++;
|
405
|
-
}
|
406
|
-
}
|
407
|
-
break;
|
408
|
-
}
|
409
|
-
case FORMAT_WEEK_LONG: // %A - The full weekday name (``Sunday'')
|
410
|
-
case FORMAT_WEEK_SHORT: { // %a - The abbreviated name (``Sun'')
|
411
|
-
final int dayIndex = findIndexInPatterns(DAY_NAMES);
|
412
|
-
if (dayIndex >= 0) {
|
413
|
-
bag.wDay = dayIndex % 7;
|
414
|
-
pos += DAY_NAMES[dayIndex].length();
|
415
|
-
}
|
416
|
-
else {
|
417
|
-
fail = true;
|
418
|
-
}
|
419
|
-
break;
|
420
|
-
}
|
421
|
-
case FORMAT_MONTH_LONG: // %B - The full month name (``January'')
|
422
|
-
case FORMAT_MONTH_SHORT: { // %b, %h - The abbreviated month name (``Jan'')
|
423
|
-
final int monIndex = findIndexInPatterns(MONTH_NAMES);
|
424
|
-
if (monIndex >= 0) {
|
425
|
-
bag.mon = monIndex % 12 + 1;
|
426
|
-
pos += MONTH_NAMES[monIndex].length();
|
427
|
-
}
|
428
|
-
else {
|
429
|
-
fail = true;
|
430
|
-
}
|
431
|
-
break;
|
432
|
-
}
|
433
|
-
case FORMAT_CENTURY: { // %C - year / 100 (round down. 20 in 2009)
|
434
|
-
final long cent;
|
435
|
-
if (isNumberPattern(compiledPattern, tokenIndex)) {
|
436
|
-
cent = readDigits(2);
|
437
|
-
}
|
438
|
-
else {
|
439
|
-
cent = readDigitsMax();
|
440
|
-
}
|
441
|
-
bag.cent = (int)cent;
|
442
|
-
break;
|
443
|
-
}
|
444
|
-
case FORMAT_DAY: // %d, %Od - Day of the month, zero-padded (01..31)
|
445
|
-
case FORMAT_DAY_S: { // %e, %Oe - Day of the month, blank-padded ( 1..31)
|
446
|
-
final long day;
|
447
|
-
if (isBlank(text, pos)) {
|
448
|
-
pos += 1; // blank
|
449
|
-
day = readDigits(1);
|
450
|
-
}
|
451
|
-
else {
|
452
|
-
day = readDigits(2);
|
453
|
-
}
|
454
|
-
|
455
|
-
if (!validRange(day, 1, 31)) {
|
456
|
-
fail = true;
|
457
|
-
}
|
458
|
-
bag.mDay = (int)day;
|
459
|
-
break;
|
460
|
-
}
|
461
|
-
case FORMAT_WEEKYEAR: { // %G - The week-based year
|
462
|
-
final long year;
|
463
|
-
if (isNumberPattern(compiledPattern, tokenIndex)) {
|
464
|
-
year = readDigits(4);
|
465
|
-
}
|
466
|
-
else {
|
467
|
-
year = readDigitsMax();
|
468
|
-
}
|
469
|
-
bag.cWYear = (int)year;
|
470
|
-
break;
|
471
|
-
}
|
472
|
-
case FORMAT_WEEKYEAR_SHORT: { // %g - The last 2 digits of the week-based year (00..99)
|
473
|
-
final long v = readDigits(2);
|
474
|
-
if (!validRange(v, 0, 99)) {
|
475
|
-
fail = true;
|
476
|
-
}
|
477
|
-
bag.cWYear = (int)v;
|
478
|
-
if (!bag.has(bag.cent)) {
|
479
|
-
bag.cent = v >= 69 ? 19 : 20;
|
480
|
-
}
|
481
|
-
break;
|
482
|
-
}
|
483
|
-
case FORMAT_HOUR: // %H, %OH - Hour of the day, 24-hour clock, zero-padded (00..23)
|
484
|
-
case FORMAT_HOUR_BLANK: { // %k - Hour of the day, 24-hour clock, blank-padded ( 0..23)
|
485
|
-
final long hour;
|
486
|
-
if (isBlank(text, pos)) {
|
487
|
-
pos += 1; // blank
|
488
|
-
hour = readDigits(1);
|
489
|
-
}
|
490
|
-
else {
|
491
|
-
hour = readDigits(2);
|
492
|
-
}
|
493
|
-
|
494
|
-
if (!validRange(hour, 0, 24)) {
|
495
|
-
fail = true;
|
496
|
-
}
|
497
|
-
bag.hour = (int)hour;
|
498
|
-
break;
|
499
|
-
}
|
500
|
-
case FORMAT_HOUR_M: // %I, %OI - Hour of the day, 12-hour clock, zero-padded (01..12)
|
501
|
-
case FORMAT_HOUR_S: { // %l - Hour of the day, 12-hour clock, blank-padded ( 1..12)
|
502
|
-
final long hour;
|
503
|
-
if (isBlank(text, pos)) {
|
504
|
-
pos += 1; // blank
|
505
|
-
hour = readDigits(1);
|
506
|
-
}
|
507
|
-
else {
|
508
|
-
hour = readDigits(2);
|
509
|
-
}
|
510
|
-
|
511
|
-
if (!validRange(hour, 1, 12)) {
|
512
|
-
fail = true;
|
513
|
-
}
|
514
|
-
bag.hour = (int)hour;
|
515
|
-
break;
|
516
|
-
}
|
517
|
-
case FORMAT_DAY_YEAR: { // %j - Day of the year (001..366)
|
518
|
-
final long day = readDigits(3);
|
519
|
-
if (!validRange(day, 1, 365)) {
|
520
|
-
fail = true;
|
521
|
-
}
|
522
|
-
bag.yDay = (int)day;
|
523
|
-
break;
|
524
|
-
}
|
525
|
-
case FORMAT_MILLISEC: // %L - Millisecond of the second (000..999)
|
526
|
-
case FORMAT_NANOSEC: { // %N - Fractional seconds digits, default is 9 digits (nanosecond)
|
527
|
-
boolean negative = false;
|
528
|
-
if (isSign(text, pos)) {
|
529
|
-
negative = text.charAt(pos) == '-';
|
530
|
-
pos++;
|
531
|
-
}
|
532
|
-
|
533
|
-
final long v;
|
534
|
-
final int initPos = pos;
|
535
|
-
if (isNumberPattern(compiledPattern, tokenIndex)) {
|
536
|
-
if (token.getFormat() == StrptimeFormat.FORMAT_MILLISEC) {
|
537
|
-
v = readDigits(3);
|
538
|
-
}
|
539
|
-
else {
|
540
|
-
v = readDigits(9);
|
541
|
-
}
|
542
|
-
}
|
543
|
-
else {
|
544
|
-
v = readDigitsMax();
|
545
|
-
}
|
546
|
-
|
547
|
-
bag.secFraction = (int)(!negative ? v : -v);
|
548
|
-
bag.secFractionSize = pos - initPos;
|
549
|
-
break;
|
550
|
-
}
|
551
|
-
case FORMAT_MINUTES: { // %M, %OM - Minute of the hour (00..59)
|
552
|
-
final long min = readDigits(2);
|
553
|
-
if (!validRange(min, 0, 59)) {
|
554
|
-
fail = true;
|
555
|
-
}
|
556
|
-
bag.min = (int)min;
|
557
|
-
break;
|
558
|
-
}
|
559
|
-
case FORMAT_MONTH: { // %m, %Om - Month of the year, zero-padded (01..12)
|
560
|
-
final long mon = readDigits(2);
|
561
|
-
if (!validRange(mon, 1, 12)) {
|
562
|
-
fail = true;
|
563
|
-
}
|
564
|
-
bag.mon = (int)mon;
|
565
|
-
break;
|
566
|
-
}
|
567
|
-
case FORMAT_MERIDIAN: // %P - Meridian indicator, lowercase (``am'' or ``pm'')
|
568
|
-
case FORMAT_MERIDIAN_LOWER_CASE: { // %p - Meridian indicator, uppercase (``AM'' or ``PM'')
|
569
|
-
final int meridIndex = findIndexInPatterns(MERID_NAMES);
|
570
|
-
if (meridIndex >= 0) {
|
571
|
-
bag.merid = meridIndex % 2 == 0 ? 0 : 12;
|
572
|
-
pos += MERID_NAMES[meridIndex].length();
|
573
|
-
}
|
574
|
-
else {
|
575
|
-
fail = true;
|
576
|
-
}
|
577
|
-
break;
|
578
|
-
}
|
579
|
-
case FORMAT_MILLISEC_EPOCH: { // %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC.
|
580
|
-
boolean negative = false;
|
581
|
-
if (isMinus(text, pos)) {
|
582
|
-
negative = true;
|
583
|
-
pos++;
|
584
|
-
}
|
585
|
-
|
586
|
-
final long sec = readDigitsMax();
|
587
|
-
bag.seconds = !negative ? sec : -sec;
|
588
|
-
bag.secondsSize = 3;
|
589
|
-
break;
|
590
|
-
}
|
591
|
-
case FORMAT_SECONDS: { // %S - Second of the minute (00..59)
|
592
|
-
final long sec = readDigits(2);
|
593
|
-
if (!validRange(sec, 0, 60)) {
|
594
|
-
fail = true;
|
595
|
-
}
|
596
|
-
bag.sec = (int)sec;
|
597
|
-
break;
|
598
|
-
}
|
599
|
-
case FORMAT_EPOCH: { // %s - Number of seconds since 1970-01-01 00:00:00 UTC.
|
600
|
-
boolean negative = false;
|
601
|
-
if (isMinus(text, pos)) {
|
602
|
-
negative = true;
|
603
|
-
pos++;
|
604
|
-
}
|
605
|
-
|
606
|
-
final long sec = readDigitsMax();
|
607
|
-
bag.seconds = (int)(!negative ? sec : -sec);
|
608
|
-
break;
|
609
|
-
}
|
610
|
-
case FORMAT_WEEK_YEAR_S: // %U, %OU - Week number of the year. The week starts with Sunday. (00..53)
|
611
|
-
case FORMAT_WEEK_YEAR_M: { // %W, %OW - Week number of the year. The week starts with Monday. (00..53)
|
612
|
-
final long week = readDigits(2);
|
613
|
-
if (!validRange(week, 0, 53)) {
|
614
|
-
fail = true;
|
615
|
-
}
|
616
|
-
|
617
|
-
if (token.getFormat() == StrptimeFormat.FORMAT_WEEK_YEAR_S) {
|
618
|
-
bag.wNum0 = (int)week;
|
619
|
-
} else {
|
620
|
-
bag.wNum1 = (int)week;
|
621
|
-
}
|
622
|
-
break;
|
623
|
-
}
|
624
|
-
case FORMAT_DAY_WEEK2: { // %u, %Ou - Day of the week (Monday is 1, 1..7)
|
625
|
-
final long day = readDigits(1);
|
626
|
-
if (!validRange(day, 1, 7)) {
|
627
|
-
fail = true;
|
628
|
-
}
|
629
|
-
bag.cWDay = (int)day;
|
630
|
-
break;
|
631
|
-
}
|
632
|
-
case FORMAT_WEEK_WEEKYEAR: { // %V, %OV - Week number of the week-based year (01..53)
|
633
|
-
final long week = readDigits(2);
|
634
|
-
if (!validRange(week, 1, 53)) {
|
635
|
-
fail = true;
|
636
|
-
}
|
637
|
-
bag.cWeek = (int)week;
|
638
|
-
break;
|
639
|
-
}
|
640
|
-
case FORMAT_DAY_WEEK: { // %w - Day of the week (Sunday is 0, 0..6)
|
641
|
-
final long day = readDigits(1);
|
642
|
-
if (!validRange(day, 0, 6)) {
|
643
|
-
fail = true;
|
644
|
-
}
|
645
|
-
bag.wDay = (int)day;
|
646
|
-
break;
|
647
|
-
}
|
648
|
-
case FORMAT_YEAR_LONG: {
|
649
|
-
// %Y, %EY - Year with century (can be negative, 4 digits at least)
|
650
|
-
// -0001, 0000, 1995, 2009, 14292, etc.
|
651
|
-
boolean negative = false;
|
652
|
-
if (isSign(text, pos)) {
|
653
|
-
negative = text.charAt(pos) == '-';
|
654
|
-
pos++;
|
655
|
-
}
|
656
|
-
|
657
|
-
final long year;
|
658
|
-
if (isNumberPattern(compiledPattern, tokenIndex)) {
|
659
|
-
year = readDigits(4);
|
660
|
-
} else {
|
661
|
-
year = readDigitsMax();
|
662
|
-
}
|
663
|
-
|
664
|
-
bag.year = (int)(!negative ? year : -year);
|
665
|
-
break;
|
666
|
-
}
|
667
|
-
case FORMAT_YEAR_SHORT: { // %y, %Ey, %Oy - year % 100 (00..99)
|
668
|
-
final long y = readDigits(2);
|
669
|
-
if (!validRange(y, 0, 99)) {
|
670
|
-
fail = true;
|
671
|
-
}
|
672
|
-
bag.year = (int)y;
|
673
|
-
if (!bag.has(bag.cent)) {
|
674
|
-
bag.cent = y >= 69 ? 19 : 20;
|
675
|
-
}
|
676
|
-
break;
|
677
|
-
}
|
678
|
-
case FORMAT_ZONE_ID: // %Z - Time zone abbreviation name
|
679
|
-
case FORMAT_COLON_ZONE_OFF: {
|
680
|
-
// %z - Time zone as hour and minute offset from UTC (e.g. +0900)
|
681
|
-
// %:z - hour and minute offset from UTC with a colon (e.g. +09:00)
|
682
|
-
// %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
|
683
|
-
// %:::z - hour, minute and second offset from UTC
|
684
|
-
// (e.g. +09, +09:30, +09:30:30)
|
685
|
-
if (isEndOfText(text, pos)) {
|
686
|
-
fail = true;
|
687
|
-
break;
|
688
|
-
}
|
689
|
-
|
690
|
-
final Matcher m = ZONE_PARSE_REGEX.matcher(text.substring(pos));
|
691
|
-
if (m.find()) {
|
692
|
-
// zone
|
693
|
-
String zone = text.substring(pos, pos + m.end());
|
694
|
-
bag.zone = zone;
|
695
|
-
pos += zone.length();
|
696
|
-
} else {
|
697
|
-
fail = true;
|
698
|
-
}
|
699
|
-
break;
|
700
|
-
}
|
701
|
-
case FORMAT_SPECIAL:
|
702
|
-
{
|
703
|
-
throw new Error("FORMAT_SPECIAL is a special token only for the lexer.");
|
704
|
-
}
|
705
|
-
}
|
706
|
-
}
|
707
|
-
|
708
|
-
if (fail) {
|
709
|
-
return null;
|
710
|
-
}
|
711
|
-
|
712
|
-
if (text.length() > pos) {
|
713
|
-
bag.leftover = text.substring(pos, text.length());
|
714
|
-
}
|
715
|
-
|
716
|
-
return bag;
|
717
|
-
}
|
718
|
-
|
719
|
-
/**
|
720
|
-
* Ported read_digits in MRI 2.3.1's ext/date/date_strptime.c
|
721
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strftime.c">date_strftime.c</a>
|
722
|
-
*/
|
723
|
-
private long readDigits(final int len)
|
724
|
-
{
|
725
|
-
char c;
|
726
|
-
long v = 0;
|
727
|
-
final int initPos = pos;
|
728
|
-
|
729
|
-
for (int i = 0; i < len; i++) {
|
730
|
-
if (isEndOfText(text, pos)) {
|
731
|
-
break;
|
732
|
-
}
|
733
|
-
|
734
|
-
c = text.charAt(pos);
|
735
|
-
if (!isDigit(c)) {
|
736
|
-
break;
|
737
|
-
}
|
738
|
-
else {
|
739
|
-
v = v * 10 + toInt(c);
|
740
|
-
}
|
741
|
-
pos += 1;
|
742
|
-
}
|
743
|
-
|
744
|
-
if (pos == initPos) {
|
745
|
-
fail = true;
|
746
|
-
}
|
747
|
-
|
748
|
-
return v;
|
749
|
-
}
|
750
|
-
|
751
|
-
/**
|
752
|
-
* Ported from READ_DIGITS_MAX in MRI 2.3.1's ext/date/date_strptime.c under BSDL.
|
753
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strftime.c">date_strftime.c</a>
|
754
|
-
*/
|
755
|
-
private long readDigitsMax()
|
756
|
-
{
|
757
|
-
return readDigits(Integer.MAX_VALUE);
|
758
|
-
}
|
759
|
-
|
760
|
-
/**
|
761
|
-
* Returns -1 if text doesn't match with patterns.
|
762
|
-
*/
|
763
|
-
private int findIndexInPatterns(final String[] patterns)
|
764
|
-
{
|
765
|
-
if (isEndOfText(text, pos)) {
|
766
|
-
return -1;
|
767
|
-
}
|
768
|
-
|
769
|
-
for (int i = 0; i < patterns.length; i++) {
|
770
|
-
final String pattern = patterns[i];
|
771
|
-
final int len = pattern.length();
|
772
|
-
if (!isEndOfText(text, pos + len - 1)
|
773
|
-
&& pattern.equalsIgnoreCase(text.substring(pos, pos + len))) { // strncasecmp
|
774
|
-
return i;
|
775
|
-
}
|
776
|
-
}
|
777
|
-
|
778
|
-
return -1; // text doesn't match at any patterns.
|
779
|
-
}
|
780
|
-
|
781
|
-
/**
|
782
|
-
* Ported from num_pattern_p in MRI 2.3.1's ext/date/date_strptime.c under BSDL.
|
783
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strftime.c">date_strftime.c</a>
|
784
|
-
*/
|
785
|
-
private static boolean isNumberPattern(final List<StrptimeToken> compiledPattern, final int i)
|
786
|
-
{
|
787
|
-
if (compiledPattern.size() <= i + 1) {
|
788
|
-
return false;
|
789
|
-
}
|
790
|
-
else {
|
791
|
-
final StrptimeToken nextToken = compiledPattern.get(i + 1);
|
792
|
-
final StrptimeFormat f = nextToken.getFormat();
|
793
|
-
if (f == StrptimeFormat.FORMAT_STRING && isDigit(((String) nextToken.getData()).charAt(0))) {
|
794
|
-
return true;
|
795
|
-
}
|
796
|
-
else if (NUMBER_PATTERNS.contains(f)) {
|
797
|
-
return true;
|
798
|
-
}
|
799
|
-
else {
|
800
|
-
return false;
|
801
|
-
}
|
802
|
-
}
|
803
|
-
}
|
804
|
-
|
805
|
-
// CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy
|
806
|
-
private static final EnumSet<StrptimeFormat> NUMBER_PATTERNS =
|
807
|
-
EnumSet.copyOf(Arrays.asList(
|
808
|
-
StrptimeFormat.FORMAT_CENTURY, // 'C'
|
809
|
-
// D
|
810
|
-
StrptimeFormat.FORMAT_DAY, // 'd'
|
811
|
-
StrptimeFormat.FORMAT_DAY_S, // 'e'
|
812
|
-
// F
|
813
|
-
StrptimeFormat.FORMAT_WEEKYEAR, // 'G'
|
814
|
-
StrptimeFormat.FORMAT_WEEKYEAR_SHORT, // 'g'
|
815
|
-
StrptimeFormat.FORMAT_HOUR, // 'H'
|
816
|
-
StrptimeFormat.FORMAT_HOUR_M, // 'I'
|
817
|
-
StrptimeFormat.FORMAT_DAY_YEAR, // 'j'
|
818
|
-
StrptimeFormat.FORMAT_HOUR_BLANK, // 'k'
|
819
|
-
StrptimeFormat.FORMAT_MILLISEC, // 'L'
|
820
|
-
StrptimeFormat.FORMAT_HOUR_S, // 'l'
|
821
|
-
StrptimeFormat.FORMAT_MINUTES, // 'M'
|
822
|
-
StrptimeFormat.FORMAT_MONTH, // 'm'
|
823
|
-
StrptimeFormat.FORMAT_NANOSEC, // 'N'
|
824
|
-
// Q, R, r
|
825
|
-
StrptimeFormat.FORMAT_SECONDS, // 'S'
|
826
|
-
StrptimeFormat.FORMAT_EPOCH, // 's'
|
827
|
-
// T
|
828
|
-
StrptimeFormat.FORMAT_WEEK_YEAR_S, // 'U'
|
829
|
-
StrptimeFormat.FORMAT_DAY_WEEK2, // 'u'
|
830
|
-
StrptimeFormat.FORMAT_WEEK_WEEKYEAR, // 'V'
|
831
|
-
// v
|
832
|
-
StrptimeFormat.FORMAT_WEEK_YEAR_M, // 'W'
|
833
|
-
StrptimeFormat.FORMAT_DAY_WEEK, // 'w'
|
834
|
-
// X, x
|
835
|
-
StrptimeFormat.FORMAT_YEAR_LONG, // 'Y'
|
836
|
-
StrptimeFormat.FORMAT_YEAR_SHORT // 'y'
|
837
|
-
));
|
838
|
-
|
839
|
-
/**
|
840
|
-
* Ported from valid_pattern_p in MRI 2.3.1's ext/date/date_strptime.c under BSDL.
|
841
|
-
* @see <a href="https://github.com/ruby/ruby/blob/394fa89c67722d35bdda89f10c7de5c304a5efb1/ext/date/date_strftime.c">date_strftime.c</a>
|
842
|
-
*/
|
843
|
-
private static boolean validRange(long v, int lower, int upper)
|
844
|
-
{
|
845
|
-
return lower <= v && v <= upper;
|
846
|
-
}
|
847
|
-
|
848
|
-
private static boolean isSpace(char c)
|
849
|
-
{
|
850
|
-
return c == ' ' || c == '\t' || c == '\n' ||
|
851
|
-
c == '\u000b' || c == '\f' || c == '\r';
|
852
|
-
}
|
853
|
-
|
854
|
-
private static boolean isDigit(char c)
|
855
|
-
{
|
856
|
-
return '0' <= c && c <= '9';
|
857
|
-
}
|
858
|
-
|
859
|
-
private static boolean isEndOfText(String text, int pos)
|
860
|
-
{
|
861
|
-
return pos >= text.length();
|
862
|
-
}
|
863
|
-
|
864
|
-
private static boolean isSign(String text, int pos)
|
865
|
-
{
|
866
|
-
return !isEndOfText(text, pos) && (text.charAt(pos) == '+' || text.charAt(pos) == '-');
|
867
|
-
}
|
868
|
-
|
869
|
-
private static boolean isMinus(String text, int pos)
|
870
|
-
{
|
871
|
-
return !isEndOfText(text, pos) && text.charAt(pos) == '-';
|
872
|
-
}
|
873
|
-
|
874
|
-
private static boolean isBlank(String text, int pos)
|
875
|
-
{
|
876
|
-
return !isEndOfText(text, pos) && text.charAt(pos) == ' ';
|
877
|
-
}
|
878
|
-
|
879
|
-
private static int toInt(char c)
|
880
|
-
{
|
881
|
-
return c - '0';
|
882
|
-
}
|
883
|
-
}
|
884
|
-
}
|