packages feed

language-pig 0.3.0.0 → 0.3.0.1

raw patch · 4 files changed

+12/−2 lines, 4 files

Files

language-pig.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                language-pig-version:             0.3.0.0+version:             0.3.0.1 synopsis:            Pig parser in haskell. description:         Parser and pretty printer for the Apache Pig scripting language (http://pig.apache.org/). The current version is implemented using Parsec parser combinators. -- description:         
src/Language/Pig/Parser/AST.hs view
@@ -42,6 +42,7 @@                | ExpressionTransform Expression Alias                | FunctionTransform Function Alias                | EnvTransform Scalar Alias+               | IdentityTransform Alias                DERIVE  data Join = Join String String
src/Language/Pig/Parser/Parser.hs view
@@ -247,7 +247,8 @@          <|> flattenTransform          <|> tupleFieldGlob          <|> expressionTransform-         <|> functionTransform+         <|> try(functionTransform)+         <|> identityTransform          <|> envTransform  flattenTransform :: Parser Transform@@ -280,6 +281,11 @@                   pigQuotedString String <*>                   (reserved "AS" *>                    (Identifier <$> identifier))++-- field is just used as-is from input file+identityTransform :: Parser Transform+identityTransform = IdentityTransform <$>+                      (Identifier <$> pigIdentifier)  -- general expression: -- fieldExpression or literal or function or binary operation (+-*/%) or bincond (?:)
test/Language/Pig/Parser/Test.hs view
@@ -27,6 +27,9 @@     , testCase "foreach stmt with ternary if-then-else" (testStmt "users = FOREACH users GENERATE *, (cohort <= 4 ? '04' : '59') AS herd;"                                                                  "Seq [Assignment (Identifier \"users\") (ForeachClause (Identifier \"users\") (GenBlock [TupleFieldGlob,ExpressionTransform (BinCond (BooleanExpression LessEqual (AliasTerm (Identifier \"cohort\")) (ScalarTerm (Number (Left 4)))) (ScalarTerm (String \"04\")) (ScalarTerm (String \"59\"))) (Identifier \"herd\")]))]")+   , testCase "foreach stmt with field as is" (testStmt "desktop_client_dates2 = FOREACH desktop_client_dates GENERATE '$date' AS date, (datediff < 0 OR datediff > 30 ? server_date : device_date) AS device_date, user_id;"+                                                        "Seq [Assignment (Identifier \"desktop_client_dates2\") (ForeachClause (Identifier \"desktop_client_dates\") (GenBlock [EnvTransform (String \"$date\") (Identifier \"date\"),ExpressionTransform (BinCond (BooleanBinary Or (BooleanExpression Less (AliasTerm (Identifier \"datediff\")) (ScalarTerm (Number (Left 0)))) (BooleanExpression Greater (AliasTerm (Identifier \"datediff\")) (ScalarTerm (Number (Left 30))))) (AliasTerm (Identifier \"server_date\")) (AliasTerm (Identifier \"device_date\"))) (Identifier \"device_date\"),IdentityTransform (Identifier \"user_id\")]))]")+    , testCase "foreach stmt with ternary if-then-else complex" (testStmt "desktop_client_dates = FOREACH desktop_client GENERATE server_date AS server_date, device_date AS device_date, user_id AS user_id, (server_date != '0' AND device_date != '0' ? (ISOToUnix(CustomFormatToISO(server_date,'YYYY-MM-dd'))-ISOToUnix(CustomFormatToISO(device_date,'YYYY-MM-dd')))/86400000 : 0) AS datediff;"                                                                           "Seq [Assignment (Identifier \"desktop_client_dates\") (ForeachClause (Identifier \"desktop_client\") (GenBlock [AliasTransform (Identifier \"server_date\") (Identifier \"server_date\"),AliasTransform (Identifier \"device_date\") (Identifier \"device_date\"),AliasTransform (Identifier \"user_id\") (Identifier \"user_id\"),ExpressionTransform (BinCond (BooleanBinary And (BooleanExpression NotEqual (AliasTerm (Identifier \"server_date\")) (ScalarTerm (String \"0\"))) (BooleanExpression NotEqual (AliasTerm (Identifier \"device_date\")) (ScalarTerm (String \"0\")))) (Binary Divide (Binary Subtract (FunctionTerm (Function \"ISOToUnix\" [FunctionTerm (Function \"CustomFormatToISO\" [AliasTerm (Identifier \"server_date\"),ScalarTerm (String \"YYYY-MM-dd\")])])) (FunctionTerm (Function \"ISOToUnix\" [FunctionTerm (Function \"CustomFormatToISO\" [AliasTerm (Identifier \"device_date\"),ScalarTerm (String \"YYYY-MM-dd\")])]))) (ScalarTerm (Number (Left 86400000)))) (ScalarTerm (Number (Left 0)))) (Identifier \"datediff\")]))]") {-