Skip to content

Instantly share code, notes, and snippets.

@snoyberg
Created December 29, 2011 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snoyberg/1533274 to your computer and use it in GitHub Desktop.
Save snoyberg/1533274 to your computer and use it in GitHub Desktop.
Yesod module list
import Data.Char
import Data.Maybe
import Data.List
main = do
putStrLn "<table border='1' cellpadding='5'><thead><tr><th></th><th>Repository</th><th>Package</th><th>Module</th></tr></thead><tbody>"
interact $ \s -> unlines $ zipWith row (sort $ mapMaybe tuple $ lines s) [1..]
putStrLn "</tbody></table>"
tuple x =
if isUpper firstLetter && not ("test/" `isPrefixOf` modu)
then Just (repo, package, modu)
else Nothing
where
(repo, y) = break (== '/') x
(package, z) = break (== '/') $ drop 1 y
modu = drop 1 z
firstLetter =
case reverse $ takeWhile (/= '/') $ reverse modu of
c:_ -> c
[] ->
case modu of
c:_ -> c
[] -> '?'
row (repo, package, modu) i =
concat
[ "<tr><td>"
, show (i :: Int)
, "</td><td>"
, repo
, "</td><td>"
, package
, "</td><td>"
, modu
, "</td></tr>"
]
#!/bin/sh
find wai/ hamlet/ yesod persistent/ -name \*.hs | grep -v test.hs | grep -v experimental | grep -v leak.hs | grep -v autogen | grep -v persistent-test | grep -v /dist/ | grep -v wai-eventsource | grep -v Paths_ | grep -v yesod-examples | grep -v foobar | sort | runghc cleanup.hs > modules.html
<table border='1' cellpadding='5'><thead><tr><th></th><th>Repository</th><th>Package</th><th>Module</th></tr></thead><tbody>
<tr><td>1</td><td>hamlet</td><td>hamlet</td><td>HamletTest.hs</td></tr>
<tr><td>2</td><td>hamlet</td><td>hamlet</td><td>Text/Hamlet.hs</td></tr>
<tr><td>3</td><td>hamlet</td><td>hamlet</td><td>Text/Hamlet/Parse.hs</td></tr>
<tr><td>4</td><td>hamlet</td><td>hamlet</td><td>Text/Hamlet/RT.hs</td></tr>
<tr><td>5</td><td>hamlet</td><td>shakespeare</td><td>Text/Shakespeare.hs</td></tr>
<tr><td>6</td><td>hamlet</td><td>shakespeare</td><td>Text/Shakespeare/Base.hs</td></tr>
<tr><td>7</td><td>hamlet</td><td>shakespeare-css</td><td>ShakespeareCssTest.hs</td></tr>
<tr><td>8</td><td>hamlet</td><td>shakespeare-css</td><td>Text/Cassius.hs</td></tr>
<tr><td>9</td><td>hamlet</td><td>shakespeare-css</td><td>Text/Css.hs</td></tr>
<tr><td>10</td><td>hamlet</td><td>shakespeare-css</td><td>Text/Lucius.hs</td></tr>
<tr><td>11</td><td>hamlet</td><td>shakespeare-css</td><td>Text/MkSizeType.hs</td></tr>
<tr><td>12</td><td>hamlet</td><td>shakespeare-i18n</td><td>Text/Shakespeare/I18N.hs</td></tr>
<tr><td>13</td><td>hamlet</td><td>shakespeare-js</td><td>ShakespeareJsTest.hs</td></tr>
<tr><td>14</td><td>hamlet</td><td>shakespeare-js</td><td>Text/Coffee.hs</td></tr>
<tr><td>15</td><td>hamlet</td><td>shakespeare-js</td><td>Text/Julius.hs</td></tr>
<tr><td>16</td><td>hamlet</td><td>shakespeare-text</td><td>Text/Shakespeare/Text.hs</td></tr>
<tr><td>17</td><td>persistent</td><td>persistent</td><td>Database/Persist.hs</td></tr>
<tr><td>18</td><td>persistent</td><td>persistent</td><td>Database/Persist/EntityDef.hs</td></tr>
<tr><td>19</td><td>persistent</td><td>persistent</td><td>Database/Persist/GenericSql.hs</td></tr>
<tr><td>20</td><td>persistent</td><td>persistent</td><td>Database/Persist/GenericSql/Internal.hs</td></tr>
<tr><td>21</td><td>persistent</td><td>persistent</td><td>Database/Persist/GenericSql/Migration.hs</td></tr>
<tr><td>22</td><td>persistent</td><td>persistent</td><td>Database/Persist/GenericSql/Raw.hs</td></tr>
<tr><td>23</td><td>persistent</td><td>persistent</td><td>Database/Persist/Quasi.hs</td></tr>
<tr><td>24</td><td>persistent</td><td>persistent</td><td>Database/Persist/Query.hs</td></tr>
<tr><td>25</td><td>persistent</td><td>persistent</td><td>Database/Persist/Query/GenericSql.hs</td></tr>
<tr><td>26</td><td>persistent</td><td>persistent</td><td>Database/Persist/Query/Join.hs</td></tr>
<tr><td>27</td><td>persistent</td><td>persistent</td><td>Database/Persist/Query/Join/Sql.hs</td></tr>
<tr><td>28</td><td>persistent</td><td>persistent</td><td>Database/Persist/Store.hs</td></tr>
<tr><td>29</td><td>persistent</td><td>persistent</td><td>Database/Persist/TH/Library.hs</td></tr>
<tr><td>30</td><td>persistent</td><td>persistent</td><td>Database/Persist/Util.hs</td></tr>
<tr><td>31</td><td>persistent</td><td>persistent-mongoDB</td><td>Database/Persist/MongoDB.hs</td></tr>
<tr><td>32</td><td>persistent</td><td>persistent-postgresql</td><td>Database/Persist/Postgresql.hs</td></tr>
<tr><td>33</td><td>persistent</td><td>persistent-sqlite</td><td>Database/Persist/Sqlite.hs</td></tr>
<tr><td>34</td><td>persistent</td><td>persistent-sqlite</td><td>Database/Sqlite.hs</td></tr>
<tr><td>35</td><td>persistent</td><td>persistent-template</td><td>Database/Persist/TH.hs</td></tr>
<tr><td>36</td><td>persistent</td><td>pool</td><td>Data/Pool.hs</td></tr>
<tr><td>37</td><td>wai</td><td>wai</td><td>Network/Wai.hs</td></tr>
<tr><td>38</td><td>wai</td><td>wai-app-static</td><td>Network/Wai/Application/Static.hs</td></tr>
<tr><td>39</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Handler/CGI.hs</td></tr>
<tr><td>40</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/AcceptOverride.hs</td></tr>
<tr><td>41</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/Autohead.hs</td></tr>
<tr><td>42</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/CleanPath.hs</td></tr>
<tr><td>43</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/Gzip.hs</td></tr>
<tr><td>44</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/Jsonp.hs</td></tr>
<tr><td>45</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/MethodOverride.hs</td></tr>
<tr><td>46</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/RequestLogger.hs</td></tr>
<tr><td>47</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/Rewrite.hs</td></tr>
<tr><td>48</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Middleware/Vhost.hs</td></tr>
<tr><td>49</td><td>wai</td><td>wai-extra</td><td>Network/Wai/Parse.hs</td></tr>
<tr><td>50</td><td>wai</td><td>wai-handler-devel</td><td>FullApp.hs</td></tr>
<tr><td>51</td><td>wai</td><td>wai-handler-devel</td><td>Helper.hs</td></tr>
<tr><td>52</td><td>wai</td><td>wai-handler-devel</td><td>Network/Wai/Application/Devel.hs</td></tr>
<tr><td>53</td><td>wai</td><td>wai-handler-devel</td><td>Network/Wai/Handler/DevelServer.hs</td></tr>
<tr><td>54</td><td>wai</td><td>wai-handler-devel</td><td>SmallApp.hs</td></tr>
<tr><td>55</td><td>wai</td><td>wai-handler-launch</td><td>Network/Wai/Handler/Launch.hs</td></tr>
<tr><td>56</td><td>wai</td><td>wai-handler-scgi</td><td>Network/Wai/Handler/SCGI.hs</td></tr>
<tr><td>57</td><td>wai</td><td>wai-handler-webkit</td><td>Network/Wai/Handler/Webkit.hs</td></tr>
<tr><td>58</td><td>wai</td><td>wai-test</td><td>Network/Wai/Test.hs</td></tr>
<tr><td>59</td><td>wai</td><td>wai-websockets</td><td>Network/Wai/Handler/WebSockets.hs</td></tr>
<tr><td>60</td><td>wai</td><td>warp</td><td>Network/Wai/Handler/Warp.hs</td></tr>
<tr><td>61</td><td>wai</td><td>warp</td><td>Timeout.hs</td></tr>
<tr><td>62</td><td>yesod</td><td>yesod</td><td>Build.hs</td></tr>
<tr><td>63</td><td>yesod</td><td>yesod</td><td>Devel.hs</td></tr>
<tr><td>64</td><td>yesod</td><td>yesod</td><td>Scaffolding/CodeGen.hs</td></tr>
<tr><td>65</td><td>yesod</td><td>yesod</td><td>Scaffolding/Scaffolder.hs</td></tr>
<tr><td>66</td><td>yesod</td><td>yesod</td><td>Yesod.hs</td></tr>
<tr><td>67</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth.hs</td></tr>
<tr><td>68</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/BrowserId.hs</td></tr>
<tr><td>69</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Dummy.hs</td></tr>
<tr><td>70</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Email.hs</td></tr>
<tr><td>71</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Facebook.hs</td></tr>
<tr><td>72</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/GoogleEmail.hs</td></tr>
<tr><td>73</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/HashDB.hs</td></tr>
<tr><td>74</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Kerberos.hs</td></tr>
<tr><td>75</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Message.hs</td></tr>
<tr><td>76</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/OAuth.hs</td></tr>
<tr><td>77</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/OpenId.hs</td></tr>
<tr><td>78</td><td>yesod</td><td>yesod-auth</td><td>Yesod/Auth/Rpxnow.hs</td></tr>
<tr><td>79</td><td>yesod</td><td>yesod-core</td><td>Yesod/Content.hs</td></tr>
<tr><td>80</td><td>yesod</td><td>yesod-core</td><td>Yesod/Core.hs</td></tr>
<tr><td>81</td><td>yesod</td><td>yesod-core</td><td>Yesod/Dispatch.hs</td></tr>
<tr><td>82</td><td>yesod</td><td>yesod-core</td><td>Yesod/Handler.hs</td></tr>
<tr><td>83</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal.hs</td></tr>
<tr><td>84</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/Cache.hs</td></tr>
<tr><td>85</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/Core.hs</td></tr>
<tr><td>86</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/Dispatch.hs</td></tr>
<tr><td>87</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/Request.hs</td></tr>
<tr><td>88</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/RouteParsing.hs</td></tr>
<tr><td>89</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/Session.hs</td></tr>
<tr><td>90</td><td>yesod</td><td>yesod-core</td><td>Yesod/Internal/TestApi.hs</td></tr>
<tr><td>91</td><td>yesod</td><td>yesod-core</td><td>Yesod/Logger.hs</td></tr>
<tr><td>92</td><td>yesod</td><td>yesod-core</td><td>Yesod/Message.hs</td></tr>
<tr><td>93</td><td>yesod</td><td>yesod-core</td><td>Yesod/Request.hs</td></tr>
<tr><td>94</td><td>yesod</td><td>yesod-core</td><td>Yesod/Widget.hs</td></tr>
<tr><td>95</td><td>yesod</td><td>yesod-default</td><td>Yesod/Default/Config.hs</td></tr>
<tr><td>96</td><td>yesod</td><td>yesod-default</td><td>Yesod/Default/Handlers.hs</td></tr>
<tr><td>97</td><td>yesod</td><td>yesod-default</td><td>Yesod/Default/Main.hs</td></tr>
<tr><td>98</td><td>yesod</td><td>yesod-default</td><td>Yesod/Default/Util.hs</td></tr>
<tr><td>99</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form.hs</td></tr>
<tr><td>100</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Class.hs</td></tr>
<tr><td>101</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Fields.hs</td></tr>
<tr><td>102</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Functions.hs</td></tr>
<tr><td>103</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/I18n/English.hs</td></tr>
<tr><td>104</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/I18n/Portuguese.hs</td></tr>
<tr><td>105</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/I18n/Swedish.hs</td></tr>
<tr><td>106</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Input.hs</td></tr>
<tr><td>107</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Jquery.hs</td></tr>
<tr><td>108</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/MassInput.hs</td></tr>
<tr><td>109</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Nic.hs</td></tr>
<tr><td>110</td><td>yesod</td><td>yesod-form</td><td>Yesod/Form/Types.hs</td></tr>
<tr><td>111</td><td>yesod</td><td>yesod-form</td><td>Yesod/Helpers/Crud.hs</td></tr>
<tr><td>112</td><td>yesod</td><td>yesod-json</td><td>Yesod/Json.hs</td></tr>
<tr><td>113</td><td>yesod</td><td>yesod-newsfeed</td><td>Yesod/AtomFeed.hs</td></tr>
<tr><td>114</td><td>yesod</td><td>yesod-newsfeed</td><td>Yesod/Feed.hs</td></tr>
<tr><td>115</td><td>yesod</td><td>yesod-newsfeed</td><td>Yesod/FeedTypes.hs</td></tr>
<tr><td>116</td><td>yesod</td><td>yesod-newsfeed</td><td>Yesod/RssFeed.hs</td></tr>
<tr><td>117</td><td>yesod</td><td>yesod-persistent</td><td>Yesod/Persist.hs</td></tr>
<tr><td>118</td><td>yesod</td><td>yesod-sitemap</td><td>Yesod/Sitemap.hs</td></tr>
<tr><td>119</td><td>yesod</td><td>yesod-static</td><td>Yesod/Static.hs</td></tr>
</tbody></table>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment