1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
|
<!DOCTYPE html><html><head>
<title>valtype::creditcard::visa - Validation types</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file 'vtype.inc' by tcllib/doctools with format 'html'
-->
<!-- Copyright &copy; 2011 Andreas Kupries &lt;andreas_kupries@users.sourceforge.net&gt;
-->
<!-- valtype::creditcard::visa.n
-->
<body><hr> [
<a href="../../../../../../../../home">Tcllib Home</a>
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">valtype::creditcard::visa(n) 1 tcllib "Validation types"</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>valtype::creditcard::visa - Validation for VISA creditcard number</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">API</a></li>
<li class="doctools_section"><a href="#section3">Error Codes</a></li>
<li class="doctools_section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#category">Category</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">snit 2</b></li>
<li>package require <b class="pkgname">valtype::common</b></li>
<li>package require <b class="pkgname">valtype::luhn</b></li>
<li>package require <b class="pkgname">valtype::creditcard::visa <span class="opt">?1?</span></b></li>
</ul>
<ul class="doctools_syntax">
<li><a href="#1"><b class="cmd">valtype::creditcard::visa</b> <b class="method">validate</b> <i class="arg">value</i></a></li>
<li><a href="#2"><b class="cmd">valtype::creditcard::visa</b> <b class="method">checkdigit</b> <i class="arg">value</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>This package implements a snit validation type for a VISA creditcard number.</p>
<p>A validation type is an object that can be used to validate Tcl values
of a particular kind. For example, <b class="cmd">snit::integer</b>, a validation
type defined by the <b class="package"><a href="../snit/snit.html">snit</a></b> package is used to validate that a
Tcl value is an integer.</p>
<p>Every validation type has a <b class="method">validate</b> method which is used to
do the validation. This method must take a single argument, the value
to be validated; further, it must do nothing if the value is valid,
but throw an error if the value is invalid:</p>
<pre class="doctools_example">
valtype::creditcard::visa validate .... ;# Does nothing
valtype::creditcard::visa validate .... ;# Throws an error (bad VISA creditcard number).
</pre>
<p>The <b class="method">validate</b> method will always return the validated value on
success, and throw the <b class="cmd">-errorcode</b> INVALID on error, possibly
with additional elements which provide more details about the problem.</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">API</a></h2>
<p>The API provided by this package satisfies the specification
of snit validation types found in the documentation of
<i class="term"><a href="../snit/snit.html">Snit's Not Incr Tcl</a></i>.</p>
<dl class="doctools_definitions">
<dt><a name="1"><b class="cmd">valtype::creditcard::visa</b> <b class="method">validate</b> <i class="arg">value</i></a></dt>
<dd><p>This method validates the <i class="arg">value</i> and returns it, possibly in a
canonical form, if it passes. If the value does not pass the
validation an error is thrown.</p></dd>
<dt><a name="2"><b class="cmd">valtype::creditcard::visa</b> <b class="method">checkdigit</b> <i class="arg">value</i></a></dt>
<dd><p>This method computes a check digit for the <i class="arg">value</i>. Before doing
so it is validated, except for a checkdigit. If the value does not
pass the validation no check digit is calculated and an error is
thrown instead.</p></dd>
</dl>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">Error Codes</a></h2>
<p>As said in the package description, the errors thrown by the commands
of this package in response to input validation failures use the
<b class="cmd">-errorcode</b> INVALID to distinguish themselves from package
internal errors.</p>
<p>To provide more detailed information about why the validation
failed the <b class="cmd">-errorCode</b> goes actually beyond that.
First, it will contain a code detailing the type itself. Here this is
<b class="const">CREDITCARD VISA</b>. This is then followed by values detailing the
reason for the failure. The full set of <b class="cmd">-errorCode</b>s which can
be thrown by this package are:</p>
<dl class="doctools_definitions">
<dt>INVALID CREDITCARD VISA CHARACTER</dt>
<dd><p>The input value contained one or more bad characters, i.e. characters
which must not occur in the input for it to be a VISA creditcard number.</p></dd>
<dt>INVALID CREDITCARD VISA CHECK-DIGIT</dt>
<dd><p>The check digit of the input value is wrong. This usually signals a
data-entry error, with digits transposed, forgotten, etc. Of course,
th input may be an outright fake too.</p></dd>
<dt>INVALID CREDITCARD VISA LENGTH</dt>
<dd><p>The input value is of the wrong length to be a VISA creditcard number.</p></dd>
<dt>INVALID CREDITCARD VISA PREFIX</dt>
<dd><p>The input value does not start with the magic value(s) required for it
to be a VISA creditcard number.</p></dd>
</dl>
</div>
<div id="section4" class="doctools_section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>valtype</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
Please also report any ideas for enhancements you may have for either
package and/or documentation.</p>
<p>When proposing code changes, please provide <em>unified diffs</em>,
i.e the output of <b class="const">diff -u</b>.</p>
<p>Note further that <em>attachments</em> are strongly preferred over
inlined patches. Attachments can be made by going to the <b class="const">Edit</b>
form of the ticket immediately after its creation, and then using the
left-most button in the secondary navigation bar.</p>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#checking">Checking</a>, <a href="../../../../index.html#testing">Testing</a>, <a href="../../../../index.html#type_checking">Type checking</a>, <a href="../../../../index.html#visa">VISA</a>, <a href="../../../../index.html#validation">Validation</a>, <a href="../../../../index.html#value_checking">Value checking</a>, <a href="../../../../index.html#bank">bank</a>, <a href="../../../../index.html#card_for_credit">card for credit</a>, <a href="../../../../index.html#credit_card">credit card</a>, <a href="../../../../index.html#finance">finance</a>, <a href="../../../../index.html#isa">isA</a></p>
</div>
<div id="category" class="doctools_section"><h2><a name="category">Category</a></h2>
<p>Validation, Type checking</p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright © 2011 Andreas Kupries <andreas_kupries@users.sourceforge.net></p>
</div>
</div></body></html>
|