From 98505eea847dc6c66e5ae1ababa20ea38d4abd87 Mon Sep 17 00:00:00 2001 From: David Chambers Date: Wed, 5 Nov 2014 20:04:12 -0800 Subject: [PATCH] use triple-quoted strings to avoid backslashes --- src/Data/Char/Char.purs | 20 ++-- src/Data/String.purs | 200 ++++++++++++++++++++++--------------- src/Data/String/Regex.purs | 130 ++++++++++++++---------- 3 files changed, 205 insertions(+), 145 deletions(-) diff --git a/src/Data/Char/Char.purs b/src/Data/Char/Char.purs index e7eeea1..2fa34e3 100644 --- a/src/Data/Char/Char.purs +++ b/src/Data/Char/Char.purs @@ -11,14 +11,18 @@ module Data.Char charString (Char s) = s foreign import toCharCode - "function toCharCode(c){\ - \ return c.charCodeAt(0);\ - \}" :: Char -> Number - - foreign import fromCharCode - "function fromCharCode(c){\ - \ return String.fromCharCode(c);\ - \}" :: Number -> Char + """ + function toCharCode(c) { + return c.charCodeAt(0); + } + """ :: Char -> Number + + foreign import fromCharCode + """ + function fromCharCode(c) { + return String.fromCharCode(c); + } + """ :: Number -> Char instance eqChar :: Eq Char where (==) (Char a) (Char b) = a == b diff --git a/src/Data/String.purs b/src/Data/String.purs index aefdbe3..1dded56 100644 --- a/src/Data/String.purs +++ b/src/Data/String.purs @@ -26,10 +26,12 @@ module Data.String import Data.Function foreign import _charAt - "function _charAt(i, s, Just, Nothing) {\ - \ if (i < 0 || i >= s.length) return Nothing;\ - \ else return Just(s.charAt(i));\ - \}" :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Char) + """ + function _charAt(i, s, Just, Nothing) { + if (i < 0 || i >= s.length) return Nothing; + else return Just(s.charAt(i)); + } + """ :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Char) charAt :: Number -> String -> Maybe Char charAt n s = runFn4 _charAt n s Just Nothing @@ -38,116 +40,150 @@ module Data.String fromChar = charString foreign import _charCodeAt - "function _charCodeAt(i, s, Just, Nothing) {\ - \ if (i < 0 || i >= s.length) return Nothing;\ - \ else return Just(s.charCodeAt(i));\ - \}" :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Number) + """ + function _charCodeAt(i, s, Just, Nothing) { + if (i < 0 || i >= s.length) return Nothing; + else return Just(s.charCodeAt(i)); + } + """ :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Number) charCodeAt :: Number -> String -> Maybe Number charCodeAt n s = runFn4 _charCodeAt n s Just Nothing foreign import fromCharArray - "function fromCharArray(a) {\ - \ return a.join(''); \ - \}" :: [Char] -> String + """ + function fromCharArray(a) { + return a.join(''); + } + """ :: [Char] -> String foreign import indexOf - "function indexOf(x) {\ - \ return function(s) {\ - \ return s.indexOf(x);\ - \ }; \ - \}" :: String -> String -> Number + """ + function indexOf(x) { + return function(s) { + return s.indexOf(x); + }; + } + """ :: String -> String -> Number foreign import indexOf' - "function indexOf$prime(x) {\ - \ return function(startAt) {\ - \ return function(s) {\ - \ return s.indexOf(x, startAt);\ - \ }; \ - \ }; \ - \}" :: String -> Number -> String -> Number + """ + function indexOf$prime(x) { + return function(startAt) { + return function(s) { + return s.indexOf(x, startAt); + }; + }; + } + """ :: String -> Number -> String -> Number foreign import lastIndexOf - "function lastIndexOf(x) {\ - \ return function(s) {\ - \ return s.lastIndexOf(x);\ - \ };\ - \}" :: String -> String -> Number + """ + function lastIndexOf(x) { + return function(s) { + return s.lastIndexOf(x); + }; + } + """ :: String -> String -> Number foreign import lastIndexOf' - "function lastIndexOf$prime(x) {\ - \ return function(startAt) {\ - \ return function(s) {\ - \ return s.lastIndexOf(x, startAt);\ - \ }; \ - \ }; \ - \}" :: String -> Number -> String -> Number + """ + function lastIndexOf$prime(x) { + return function(startAt) { + return function(s) { + return s.lastIndexOf(x, startAt); + }; + }; + } + """ :: String -> Number -> String -> Number foreign import length - "function length(s) {\ - \ return s.length;\ - \}" :: String -> Number + """ + function length(s) { + return s.length; + } + """ :: String -> Number foreign import localeCompare - "function localeCompare(s1) {\ - \ return function(s2) {\ - \ return s1.localeCompare(s2);\ - \ };\ - \}" :: String -> String -> Number + """ + function localeCompare(s1) { + return function(s2) { + return s1.localeCompare(s2); + }; + } + """ :: String -> String -> Number foreign import replace - "function replace(s1) {\ - \ return function(s2) {\ - \ return function(s3) {\ - \ return s3.replace(s1, s2);\ - \ };\ - \ };\ - \}" :: String -> String -> String -> String + """ + function replace(s1) { + return function(s2) { + return function(s3) { + return s3.replace(s1, s2); + }; + }; + } + """ :: String -> String -> String -> String foreign import take - "function take(n) {\ - \ return function(s) {\ - \ return s.substr(0, n);\ - \ };\ - \}" :: Number -> String -> String + """ + function take(n) { + return function(s) { + return s.substr(0, n); + }; + } + """ :: Number -> String -> String foreign import drop - "function drop(n) {\ - \ return function(s) {\ - \ return s.substr(n);\ - \ };\ - \}" :: Number -> String -> String + """ + function drop(n) { + return function(s) { + return s.substr(n); + }; + } + """ :: Number -> String -> String foreign import split - "function split(sep) {\ - \ return function(s) {\ - \ return s.split(sep);\ - \ };\ - \}" :: String -> String -> [String] + """ + function split(sep) { + return function(s) { + return s.split(sep); + }; + } + """ :: String -> String -> [String] foreign import toCharArray - "function toCharArray(s) {\ - \ return s.split('');\ - \}" :: String -> [Char] + """ + function toCharArray(s) { + return s.split(''); + } + """ :: String -> [Char] foreign import toLower - "function toLower(s) {\ - \ return s.toLowerCase();\ - \}" :: String -> String + """ + function toLower(s) { + return s.toLowerCase(); + } + """ :: String -> String foreign import toUpper - "function toUpper(s) {\ - \ return s.toUpperCase();\ - \}" :: String -> String + """ + function toUpper(s) { + return s.toUpperCase(); + } + """ :: String -> String foreign import trim - "function trim(s) {\ - \ return s.trim();\ - \}" :: String -> String + """ + function trim(s) { + return s.trim(); + } + """ :: String -> String foreign import joinWith - "function joinWith (s) {\ - \ return function (xs) {\ - \ return xs.join(s);\ - \ };\ - \}" :: String -> [String] -> String + """ + function joinWith(s) { + return function(xs) { + return xs.join(s); + }; + } + """ :: String -> [String] -> String diff --git a/src/Data/String/Regex.purs b/src/Data/String/Regex.purs index 102c06a..225f1b6 100644 --- a/src/Data/String/Regex.purs +++ b/src/Data/String/Regex.purs @@ -21,9 +21,11 @@ import Data.String (indexOf) foreign import data Regex :: * foreign import showRegex' - "function showRegex$prime(r){\ - \ return '' + r;\ - \}" :: Regex -> String + """ + function showRegex$prime(r) { + return '' + r; + } + """ :: Regex -> String instance showRegex :: Show Regex where show = showRegex' @@ -37,30 +39,36 @@ type RegexFlags = } foreign import regex' - "function regex$prime(s1) {\ - \ return function(s2) {\ - \ return new RegExp(s1, s2);\ - \ };\ - \}" :: String -> String -> Regex + """ + function regex$prime(s1) { + return function(s2) { + return new RegExp(s1, s2); + }; + } + """ :: String -> String -> Regex regex :: String -> RegexFlags -> Regex regex source flags = regex' source $ renderFlags flags foreign import source - "function source(r) {\ - \ return r.source;\ - \}" :: Regex -> String + """ + function source(r) { + return r.source; + } + """ :: Regex -> String foreign import flags - "function flags(r) {\ - \ return {\ - \ multiline: r.multiline,\ - \ ignoreCase: r.ignoreCase,\ - \ global: r.global,\ - \ sticky: !!r.sticky,\ - \ unicode: !!r.unicode\ - \ };\ - \}" :: Regex -> RegexFlags + """ + function flags(r) { + return { + multiline: r.multiline, + ignoreCase: r.ignoreCase, + global: r.global, + sticky: !!r.sticky, + unicode: !!r.unicode + }; + } + """ :: Regex -> RegexFlags renderFlags :: RegexFlags -> String renderFlags flags = @@ -80,51 +88,63 @@ parseFlags s = } foreign import test - "function test(r) {\ - \ return function (s) {\ - \ return r.test(s);\ - \ };\ - \}" :: Regex -> String -> Boolean + """ + function test(r) { + return function(s) { + return r.test(s); + }; + } + """ :: Regex -> String -> Boolean foreign import _match - "function _match(r, s, Just, Nothing) {\ - \ var m = s.match(r);\ - \ return m == null ? Nothing : Just(m);\ - \}" :: forall r. Fn4 Regex String ([String] -> r) r r + """ + function _match(r, s, Just, Nothing) { + var m = s.match(r); + return m == null ? Nothing : Just(m); + } + """ :: forall r. Fn4 Regex String ([String] -> r) r r match :: Regex -> String -> Maybe [String] match r s = runFn4 _match r s Just Nothing foreign import replace - "function replace(r) {\ - \ return function(s1) {\ - \ return function(s2) {\ - \ return s2.replace(r, s1);\ - \ };\ - \ };\ - \}" :: Regex -> String -> String -> String + """ + function replace(r) { + return function(s1) { + return function(s2) { + return s2.replace(r, s1); + }; + }; + } + """ :: Regex -> String -> String -> String foreign import replace' - "function replace$prime(r) {\ - \ return function(f) {\ - \ return function(s2) {\ - \ return s2.replace(r, function (match) {\ - \ return f(match)(Array.prototype.splice.call(arguments, 1, arguments.length - 3));\ - \ });\ - \ };\ - \ };\ - \}" :: Regex -> (String -> [String] -> String) -> String -> String + """ + function replace$prime(r) { + return function(f) { + return function(s2) { + return s2.replace(r, function(match) { + return f(match)(Array.prototype.splice.call(arguments, 1, arguments.length - 3)); + }); + }; + }; + } + """ :: Regex -> (String -> [String] -> String) -> String -> String foreign import search - "function search(r) {\ - \ return function (s) {\ - \ return s.search(r);\ - \ };\ - \}" :: Regex -> String -> Number + """ + function search(r) { + return function(s) { + return s.search(r); + }; + } + """ :: Regex -> String -> Number foreign import split - "function split(r) {\ - \ return function(s) {\ - \ return s.split(r);\ - \ };\ - \}" :: Regex -> String -> [String] + """ + function split(r) { + return function(s) { + return s.split(r); + }; + } + """ :: Regex -> String -> [String]