Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,20 @@ Regex is a regular expression toolkit for regex-base with:
See the [About page](http://about.regex.uk) for details.


## regex and regex-examples

* the `regex` package contains the regex library
* the `regex-examples` package contains the tutorial, tests
and example programs


## Road Map

- [X] 2017-01-26 v0.0.0.1 Pre-release (I)
- [X] 2017-01-30 v0.0.0.2 Pre-release (II)
- [X] 2017-02-19 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1)
- [ ] 2017-02-26 v0.1.1.0 [Tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2)
- [X] 2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1)
- [X] 2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5)
- [ ] 2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2)
- [ ] 2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3)
- [ ] 2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4)

Expand Down
1 change: 1 addition & 0 deletions Text/RE.hs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ module Text.RE
, expandMacros'
-- * Tools
-- ** Grep
, Line(..)
, grep
, grepLines
, GrepScript
Expand Down
3 changes: 2 additions & 1 deletion Text/RE/Tools/Grep.lhs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
{-# LANGUAGE CPP #-}

module Text.RE.Tools.Grep
( grep
( Line(..)
, grep
, grepLines
, GrepScript
, grepScript
Expand Down
9 changes: 8 additions & 1 deletion changelog
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
-*-change-log-*-

0.1.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-17
0.2.0.1 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-20
* remove library from regex-examples (#43)

0.2.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-19
* Split off the tutorial tests and examples into regex-examples,
leaving just the library in regex

0.1.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-18
* Cabal file generated from a DRY template
* Library dependencies minimised, test depndencies moved into
examples/re-tests
Expand Down
3 changes: 2 additions & 1 deletion docs/Grep.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ <h1 class="title">Text.RE.Tools.Grep</h1>
<span class="ot">{-# LANGUAGE CPP #-}</span>

<span class="kw">module</span> <span class="dt">Text.RE.Tools.Grep</span>
( grep
( <span class="dt">Line</span>(<span class="fu">..</span>)
, grep
, grepLines
, <span class="dt">GrepScript</span>
, grepScript
Expand Down
56 changes: 35 additions & 21 deletions docs/TestKit.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,18 @@ <h1 class="title">examples/TestKit.lhs</h1>
<span class="ot">#endif</span>

<span class="kw">module</span> <span class="dt">TestKit</span>
( <span class="dt">Vrn</span>
( <span class="dt">Vrn</span>(<span class="fu">..</span>)
, presentVrn
, parseVrn
, bumpVersion
, substVersion
, substVersion_
, readCurrentVersion
, <span class="dt">Test</span>
, runTests
, checkThis
, test_pp
, include
, cmp
) <span class="kw">where</span>

Expand All @@ -106,10 +110,23 @@ <h2 id="vrn-and-friends">Vrn and friends</h2>
<div class="sourceCode"><pre class="sourceCode literate haskell"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Vrn</span> <span class="fu">=</span> <span class="dt">Vrn</span> { _vrn_a, _vrn_b, _vrn_c,<span class="ot"> _vrn_d ::</span> <span class="dt">Int</span> }
<span class="kw">deriving</span> (<span class="dt">Show</span>,<span class="dt">Eq</span>,<span class="dt">Ord</span>)

<span class="ot">presentVrn ::</span> <span class="dt">Vrn</span> <span class="ot">-&gt;</span> <span class="dt">String</span>
presentVrn <span class="dt">Vrn</span>{<span class="fu">..</span>} <span class="fu">=</span> printf <span class="st">&quot;%d.%d.%d.%d&quot;</span> _vrn_a _vrn_b _vrn_c _vrn_d

<span class="ot">parseVrn ::</span> <span class="dt">String</span> <span class="ot">-&gt;</span> <span class="dt">Vrn</span>
parseVrn vrn_s <span class="fu">=</span> <span class="kw">case</span> matched m <span class="kw">of</span>
<span class="dt">True</span> <span class="ot">-&gt;</span> <span class="dt">Vrn</span> (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|])
<span class="dt">False</span> <span class="ot">-&gt;</span> error <span class="fu">$</span> <span class="st">&quot;not a valid version: &quot;</span> <span class="fu">++</span> vrn_s
<span class="kw">where</span>
p c <span class="fu">=</span> fromMaybe oops <span class="fu">$</span> parseInteger <span class="fu">$</span> m <span class="fu">!$$</span> c
m <span class="fu">=</span> vrn_s <span class="fu">?=~</span> [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|]

oops <span class="fu">=</span> error <span class="st">&quot;parseVrn&quot;</span>

<span class="co">-- | register a new version of the package</span>
<span class="ot">bumpVersion ::</span> <span class="dt">String</span> <span class="ot">-&gt;</span> <span class="dt">IO</span> ()
bumpVersion vrn_s <span class="fu">=</span> <span class="kw">do</span>
vrn0 <span class="ot">&lt;-</span> read_current_version
vrn0 <span class="ot">&lt;-</span> readCurrentVersion
rex&#39; <span class="ot">&lt;-</span> compileRegex () <span class="fu">$</span> printf <span class="st">&quot;- \\[[xX]\\].*%d\\.%d\\.%d\\.%d&quot;</span> _vrn_a _vrn_b _vrn_c _vrn_d
nada <span class="ot">&lt;-</span> null <span class="fu">.</span> linesMatched <span class="fu">&lt;$&gt;</span> grepLines rex&#39; <span class="st">&quot;lib/md/roadmap-incl.md&quot;</span>
M.when nada <span class="fu">$</span>
Expand All @@ -123,38 +140,25 @@ <h2 id="vrn-and-friends">Vrn and friends</h2>
write_current_version vrn
substVersion <span class="st">&quot;lib/hackage-template.svg&quot;</span> <span class="st">&quot;docs/badges/hackage.svg&quot;</span>
<span class="dt">False</span> <span class="ot">-&gt;</span> error <span class="fu">$</span>
printf <span class="st">&quot;version not later ~(%s &gt; %s)&quot;</span> vrn_s <span class="fu">$</span> present_vrn vrn0
printf <span class="st">&quot;version not later ~(%s &gt; %s)&quot;</span> vrn_s <span class="fu">$</span> presentVrn vrn0
<span class="kw">where</span>
vrn<span class="fu">@</span><span class="dt">Vrn</span>{<span class="fu">..</span>} <span class="fu">=</span> parse_vrn vrn_s
vrn<span class="fu">@</span><span class="dt">Vrn</span>{<span class="fu">..</span>} <span class="fu">=</span> parseVrn vrn_s

<span class="ot">substVersion ::</span> FilePath <span class="ot">-&gt;</span> FilePath <span class="ot">-&gt;</span> <span class="dt">IO</span> ()
substVersion in_f out_f <span class="fu">=</span>
LBS.readFile in_f <span class="fu">&gt;&gt;=</span> substVersion_ <span class="fu">&gt;&gt;=</span> LBS.writeFile out_f

<span class="ot">substVersion_ ::</span> (<span class="dt">IsRegex</span> <span class="dt">RE</span> a,<span class="dt">Replace</span> a) <span class="ot">=&gt;</span> a <span class="ot">-&gt;</span> <span class="dt">IO</span> a
substVersion_ txt <span class="fu">=</span>
flip replaceAll ms <span class="fu">.</span> pack_ <span class="fu">.</span> present_vrn <span class="fu">&lt;$&gt;</span> read_current_version
flip replaceAll ms <span class="fu">.</span> pack_ <span class="fu">.</span> presentVrn <span class="fu">&lt;$&gt;</span> readCurrentVersion
<span class="kw">where</span>
ms <span class="fu">=</span> txt <span class="fu">*=~</span> [re|&lt;&lt;\$version\$&gt;&gt;|]

<span class="ot">read_current_version ::</span> <span class="dt">IO</span> <span class="dt">Vrn</span>
read_current_version <span class="fu">=</span> parse_vrn <span class="fu">&lt;$&gt;</span> readFile <span class="st">&quot;lib/version.txt&quot;</span>
<span class="ot">readCurrentVersion ::</span> <span class="dt">IO</span> <span class="dt">Vrn</span>
readCurrentVersion <span class="fu">=</span> parseVrn <span class="fu">&lt;$&gt;</span> readFile <span class="st">&quot;lib/version.txt&quot;</span>

<span class="ot">write_current_version ::</span> <span class="dt">Vrn</span> <span class="ot">-&gt;</span> <span class="dt">IO</span> ()
write_current_version <span class="fu">=</span> writeFile <span class="st">&quot;lib/version.txt&quot;</span> <span class="fu">.</span> present_vrn

<span class="ot">present_vrn ::</span> <span class="dt">Vrn</span> <span class="ot">-&gt;</span> <span class="dt">String</span>
present_vrn <span class="dt">Vrn</span>{<span class="fu">..</span>} <span class="fu">=</span> printf <span class="st">&quot;%d.%d.%d.%d&quot;</span> _vrn_a _vrn_b _vrn_c _vrn_d

<span class="ot">parse_vrn ::</span> <span class="dt">String</span> <span class="ot">-&gt;</span> <span class="dt">Vrn</span>
parse_vrn vrn_s <span class="fu">=</span> <span class="kw">case</span> matched m <span class="kw">of</span>
<span class="dt">True</span> <span class="ot">-&gt;</span> <span class="dt">Vrn</span> (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|])
<span class="dt">False</span> <span class="ot">-&gt;</span> error <span class="fu">$</span> <span class="st">&quot;not a valid version: &quot;</span> <span class="fu">++</span> vrn_s
<span class="kw">where</span>
p c <span class="fu">=</span> fromMaybe oops <span class="fu">$</span> parseInteger <span class="fu">$</span> m <span class="fu">!$$</span> c
m <span class="fu">=</span> vrn_s <span class="fu">?=~</span> [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|]

oops <span class="fu">=</span> error <span class="st">&quot;parse_vrn&quot;</span></code></pre></div>
write_current_version <span class="fu">=</span> writeFile <span class="st">&quot;lib/version.txt&quot;</span> <span class="fu">.</span> presentVrn</code></pre></div>
<h2 id="test-and-friends">Test and friends</h2>
<div class="sourceCode"><pre class="sourceCode literate haskell"><code class="sourceCode haskell"><span class="kw">data</span> <span class="dt">Test</span> <span class="fu">=</span>
<span class="dt">Test</span>
Expand Down Expand Up @@ -213,6 +217,16 @@ <h2 id="test-and-friends">Test and friends</h2>
exitWith <span class="fu">$</span> <span class="dt">ExitFailure</span> <span class="dv">1</span>
<span class="kw">where</span>
tmp_pth <span class="fu">=</span> <span class="st">&quot;tmp/mod.lhs&quot;</span></code></pre></div>
<h2 id="simple-include-processor">simple include processor</h2>
<div class="sourceCode"><pre class="sourceCode literate haskell"><code class="sourceCode haskell"><span class="ot">include ::</span> <span class="dt">LBS.ByteString</span> <span class="ot">-&gt;</span> <span class="dt">IO</span> <span class="dt">LBS.ByteString</span>
include <span class="fu">=</span> sed&#39; <span class="fu">$</span> <span class="dt">Select</span>
[ (,) [re|^%include ${file}(@{%string})$|] <span class="fu">$</span> <span class="dt">EDIT_fun</span> <span class="dt">TOP</span> incl
, (,) [re|^.*$|] <span class="fu">$</span> <span class="dt">EDIT_fun</span> <span class="dt">TOP</span> <span class="fu">$</span> \_ _ _ _<span class="ot">-&gt;</span>return <span class="dt">Nothing</span>
]
<span class="kw">where</span>
incl _ mtch _ _ <span class="fu">=</span> <span class="dt">Just</span> <span class="fu">&lt;$&gt;</span> LBS.readFile (prs_s <span class="fu">$</span> mtch <span class="fu">!$$</span> [cp|file|])
prs_s <span class="fu">=</span> maybe (error <span class="st">&quot;include&quot;</span>) T.unpack <span class="fu">.</span> parseString</code></pre></div>
<h2 id="cmp">cmp</h2>
<div class="sourceCode"><pre class="sourceCode literate haskell"><code class="sourceCode haskell"><span class="ot">cmp ::</span> <span class="dt">T.Text</span> <span class="ot">-&gt;</span> <span class="dt">T.Text</span> <span class="ot">-&gt;</span> <span class="dt">IO</span> <span class="dt">Bool</span>
cmp src dst <span class="fu">=</span> handle hdl <span class="fu">$</span> <span class="kw">do</span>
_ <span class="ot">&lt;-</span> SH.shelly <span class="fu">$</span> SH.verbosely <span class="fu">$</span>
Expand Down
4 changes: 2 additions & 2 deletions docs/badges/hackage.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion docs/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,11 @@ <h2 id="changelog">
</h2>
<div class="sourceCode"><pre class="sourceCode changelog"><code class="sourceCode changelog">-*-change-log-*-

0.1.0.0 Chris Dornan &lt;chris.dornan@irisconnect.co.uk&gt; 2017-02-17
0.2.0.0 Chris Dornan &lt;chris.dornan@irisconnect.co.uk&gt; 2017-02-19
<span class="dv">*</span> Split off the tutorial tests and examples into regex-examples,
leaving just the library in regex

0.1.0.0 Chris Dornan &lt;chris.dornan@irisconnect.co.uk&gt; 2017-02-18
<span class="dv">*</span> Cabal file generated from a DRY template
<span class="dv">*</span> Library dependencies minimised, test depndencies moved into
examples/re-tests
Expand Down
15 changes: 13 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<div class="widget" id="pages">
<ul class="page-nav">
<li class='pagenav moi'><a href='index'>Home</a></li>
<li class='secnav'><a href='#twopackages'>regex and regex-examples</a></li>
<li class='secnav'><a href='#roadmap'>Road Map</a></li>
<li class='secnav'><a href='#build'>Build Status</a></li>
<li class='secnav'><a href='#installation'>Installing the Package</a></li>
Expand Down Expand Up @@ -102,6 +103,13 @@ <h1 id="regex">regex</h1>
<li>comprehensive documentation and copious examples.</li>
</ul>
<p>See the <a href="http://about.regex.uk">About page</a> for details.</p>
<h2 id="twopackages">
regex and regex-examples
</h2>
<ul>
<li>the <code>regex</code> package contains the regex library</li>
<li>the <code>regex-examples</code> package contains the tutorial, tests and example programs</li>
</ul>
<h2 id="roadmap">
Road Map
</h2>
Expand All @@ -113,10 +121,13 @@ <h2 id="roadmap">
<input type='checkbox' class='task-list-item-checkbox' checked='' disabled=''/>2017-01-30 v0.0.0.2 Pre-release (II)
</li>
<li class="task-list-item">
<input type='checkbox' class='task-list-item-checkbox' checked='' disabled=''/>2017-02-19 v0.1.0.0 <a href="https://github.com/iconnect/regex/milestone/1">Proposed core API with presentable Haddocks</a>
<input type='checkbox' class='task-list-item-checkbox' checked='' disabled=''/>2017-02-18 v0.1.0.0 <a href="https://github.com/iconnect/regex/milestone/1">Proposed core API with presentable Haddocks</a>
</li>
<li class="task-list-item">
<input type='checkbox' class='task-list-item-checkbox' checked='' disabled=''/>2017-02-19 v0.2.0.0 <a href="https://github.com/iconnect/regex/milestone/5">Package split into regex and regex-examples</a>
</li>
<li class="task-list-item">
<input type='checkbox' class='task-list-item-checkbox' disabled=''/>2017-02-26 v0.1.1.0 <a href="https://github.com/iconnect/regex/milestone/2">Tutorials and examples finalized</a>
<input type='checkbox' class='task-list-item-checkbox' disabled=''/>2017-02-26 v0.3.0.0 <a href="https://github.com/iconnect/regex/milestone/2">API adjustments, tutorials and examples finalized</a>
</li>
<li class="task-list-item">
<input type='checkbox' class='task-list-item-checkbox' disabled=''/>2017-03-20 v1.0.0.0 <a href="https://github.com/iconnect/regex/milestone/3">First stable release</a>
Expand Down
Loading