go-tinyqr

An experimental minimal QR Code generator  http://go-qrcode.appspot.com
git clone https://git.ce9e.org/go-tinyqr.git

commit
4802c0ec0c97e78b669b46d93fd0bdfe9e544cd1
parent
4942deac2a656eb8e7430e0aa80224c8b1ac35cb
Author
Tom Harwood <tfh@skip.org>
Date
2014-04-22 23:17
golint fixes

Diffstat

M encoder.go 35 ++++++++++++++++++-----------------
M encoder_test.go 20 +++++++++++---------
M qrcode.go 48 ++++++++++++++++++++++++------------------------
M qrcode_decode_test.go 14 +++++++-------
M regular_symbol.go 32 ++++++++++++++++----------------
M regular_symbol_test.go 5 ++---
M symbol.go 20 ++++++++++----------
M symbol_test.go 13 +++++++------
M version.go 2 +-
M version_test.go 2 +-

10 files changed, 97 insertions, 94 deletions


diff --git a/encoder.go b/encoder.go

@@ -116,7 +116,7 @@ type dataEncoder struct {
  116   116 
  117   117 // newDataEncoder constructs a dataEncoder.
  118   118 func newDataEncoder(t dataEncoderType) *dataEncoder {
  119    -1 	var d *dataEncoder = &dataEncoder{}
   -1   119 	d := &dataEncoder{}
  120   120 
  121   121 	switch t {
  122   122 	case dataEncoderType1To9:
@@ -168,7 +168,7 @@ func (d *dataEncoder) encode(data []byte) (*bitset.Bitset, error) {
  168   168 	d.optimised = nil
  169   169 
  170   170 	if len(data) == 0 {
  171    -1 		return nil, errors.New("No data to encode")
   -1   171 		return nil, errors.New("no data to encode")
  172   172 	}
  173   173 
  174   174 	// Classify data into unoptimised segments.
@@ -181,7 +181,7 @@ func (d *dataEncoder) encode(data []byte) (*bitset.Bitset, error) {
  181   181 	}
  182   182 
  183   183 	// Encode data.
  184    -1 	var encoded *bitset.Bitset = bitset.New()
   -1   184 	encoded := bitset.New()
  185   185 	for _, s := range d.optimised {
  186   186 		d.encodeDataRaw(s.data, s.dataMode, encoded)
  187   187 	}
@@ -193,8 +193,8 @@ func (d *dataEncoder) encode(data []byte) (*bitset.Bitset, error) {
  193   193 // e.g. "123ZZ#!#!" =>
  194   194 // [numeric, 3, "123"] [alphanumeric, 2, "ZZ"] [byte, 4, "#!#!"].
  195   195 func (d *dataEncoder) classifyDataModes() {
  196    -1 	var start int = 0
  197    -1 	var mode dataMode = dataModeNone
   -1   196 	var start int
   -1   197 	mode := dataModeNone
  198   198 
  199   199 	for i, v := range d.data {
  200   200 		newMode := dataModeNone
@@ -271,7 +271,7 @@ func (d *dataEncoder) optimiseDataModes() error {
  271   271 			}
  272   272 		}
  273   273 
  274    -1 		var optimised segment = segment{dataMode: mode,
   -1   274 		optimised := segment{dataMode: mode,
  275   275 			data: make([]byte, 0, numChars)}
  276   276 
  277   277 		for k := i; k < j; k++ {
@@ -289,8 +289,8 @@ func (d *dataEncoder) optimiseDataModes() error {
  289   289 // encodeDataRaw encodes data in dataMode. The encoded data is appended to
  290   290 // encoded.
  291   291 func (d *dataEncoder) encodeDataRaw(data []byte, dataMode dataMode, encoded *bitset.Bitset) {
  292    -1 	var modeIndicator *bitset.Bitset = d.modeIndicator(dataMode)
  293    -1 	var charCountBits int = d.charCountBits(dataMode)
   -1   292 	modeIndicator := d.modeIndicator(dataMode)
   -1   293 	charCountBits := d.charCountBits(dataMode)
  294   294 
  295   295 	// Append mode indicator.
  296   296 	encoded.Append(modeIndicator)
@@ -304,8 +304,9 @@ func (d *dataEncoder) encodeDataRaw(data []byte, dataMode dataMode, encoded *bit
  304   304 		for i := 0; i < len(data); i += 3 {
  305   305 			charsRemaining := len(data) - i
  306   306 
  307    -1 			var value uint32 = 0
  308    -1 			var bitsUsed int = 1
   -1   307 			var value uint32
   -1   308 			bitsUsed := 1
   -1   309 
  309   310 			for j := 0; j < charsRemaining && j < 3; j++ {
  310   311 				value *= 10
  311   312 				value += uint32(data[i+j] - 0x30)
@@ -317,13 +318,13 @@ func (d *dataEncoder) encodeDataRaw(data []byte, dataMode dataMode, encoded *bit
  317   318 		for i := 0; i < len(data); i += 2 {
  318   319 			charsRemaining := len(data) - i
  319   320 
  320    -1 			var value uint32 = 0
   -1   321 			var value uint32
  321   322 			for j := 0; j < charsRemaining && j < 2; j++ {
  322   323 				value *= 45
  323   324 				value += encodeAlphanumericCharacter(data[i+j])
  324   325 			}
  325   326 
  326    -1 			var bitsUsed int = 6
   -1   327 			bitsUsed := 6
  327   328 			if charsRemaining > 1 {
  328   329 				bitsUsed = 11
  329   330 			}
@@ -382,20 +383,20 @@ func (d *dataEncoder) charCountBits(dataMode dataMode) int {
  382   383 // An error is returned if the mode is not supported, or the length requested is
  383   384 // too long to be represented.
  384   385 func (d *dataEncoder) encodedLength(dataMode dataMode, n int) (int, error) {
  385    -1 	var modeIndicator *bitset.Bitset = d.modeIndicator(dataMode)
  386    -1 	var charCountBits int = d.charCountBits(dataMode)
   -1   386 	modeIndicator := d.modeIndicator(dataMode)
   -1   387 	charCountBits := d.charCountBits(dataMode)
  387   388 
  388   389 	if modeIndicator == nil {
  389    -1 		return 0, errors.New("Mode not supported")
   -1   390 		return 0, errors.New("mode not supported")
  390   391 	}
  391   392 
  392   393 	maxLength := (1 << uint8(charCountBits)) - 1
  393   394 
  394   395 	if n > maxLength {
  395    -1 		return 0, errors.New("Length too long to be represented")
   -1   396 		return 0, errors.New("length too long to be represented")
  396   397 	}
  397   398 
  398    -1 	var length int = modeIndicator.Len() + charCountBits
   -1   399 	length := modeIndicator.Len() + charCountBits
  399   400 
  400   401 	switch dataMode {
  401   402 	case dataModeNumeric:

diff --git a/encoder_test.go b/encoder_test.go

@@ -70,7 +70,7 @@ func TestByteModeLengthCalculations(t *testing.T) {
   70    70 	}{}
   71    71 
   72    72 	for i, test := range tests {
   73    -1 		var encoder *dataEncoder = newDataEncoder(test.dataEncoderType)
   -1    73 		encoder := newDataEncoder(test.dataEncoderType)
   74    74 		var resultLength int
   75    75 
   76    76 		resultLength, err := encoder.encodedLength(test.dataMode, test.numSymbols)
@@ -126,9 +126,9 @@ func TestSingleModeEncodings(t *testing.T) {
  126   126 	}
  127   127 
  128   128 	for _, test := range tests {
  129    -1 		var encoder *dataEncoder = newDataEncoder(test.dataEncoderType)
   -1   129 		encoder := newDataEncoder(test.dataEncoderType)
   -1   130 		encoded := bitset.New()
  130   131 
  131    -1 		var encoded *bitset.Bitset = bitset.New()
  132   132 		encoder.encodeDataRaw([]byte(test.data), test.dataMode, encoded)
  133   133 
  134   134 		if !test.expected.Equals(encoded) {
@@ -244,9 +244,9 @@ func TestOptimiseEncoding(t *testing.T) {
  244   244 			numTotalChars += v.numChars
  245   245 		}
  246   246 
  247    -1 		var data []byte = make([]byte, numTotalChars)
   -1   247 		data := make([]byte, numTotalChars)
  248   248 
  249    -1 		var i int = 0
   -1   249 		i := 0
  250   250 		for _, v := range test.actual {
  251   251 			for j := 0; j < v.numChars; j++ {
  252   252 				switch v.dataMode {
@@ -264,14 +264,14 @@ func TestOptimiseEncoding(t *testing.T) {
  264   264 			}
  265   265 		}
  266   266 
  267    -1 		var encoder *dataEncoder = newDataEncoder(test.dataEncoderType)
   -1   267 		encoder := newDataEncoder(test.dataEncoderType)
  268   268 
  269   269 		_, err := encoder.encode(data)
  270   270 
  271   271 		if err != nil {
  272   272 			t.Errorf("Got %s, expected valid encoding", err.Error())
  273   273 		} else {
  274    -1 			var ok bool = true
   -1   274 			ok := true
  275   275 
  276   276 			if len(encoder.optimised) != len(test.optimised) {
  277   277 				ok = false
@@ -294,7 +294,8 @@ func TestOptimiseEncoding(t *testing.T) {
  294   294 }
  295   295 
  296   296 func testModeSegmentsString(segments []testModeSegment) string {
  297    -1 	var result string = "["
   -1   297 	result := "["
   -1   298 
  298   299 	for i, segment := range segments {
  299   300 		if i > 0 {
  300   301 			result += ", "
@@ -310,7 +311,8 @@ func testModeSegmentsString(segments []testModeSegment) string {
  310   311 }
  311   312 
  312   313 func segmentsString(segments []segment) string {
  313    -1 	var result string = "["
   -1   314 	result := "["
   -1   315 
  314   316 	for i, segment := range segments {
  315   317 		if i > 0 {
  316   318 			result += ", "

diff --git a/qrcode.go b/qrcode.go

@@ -137,10 +137,10 @@ func New(content string, level RecoveryLevel) (*QRCode, error) {
  137   137 	if err != nil {
  138   138 		return nil, err
  139   139 	} else if chosenVersion == nil {
  140    -1 		return nil, errors.New("Content too long to encode")
   -1   140 		return nil, errors.New("content too long to encode")
  141   141 	}
  142   142 
  143    -1 	var q *QRCode = &QRCode{
   -1   143 	q := &QRCode{
  144   144 		Content: content,
  145   145 
  146   146 		Level:         level,
@@ -180,13 +180,13 @@ func newWithForcedVersion(content string, version int, level RecoveryLevel) (*QR
  180   180 		return nil, err
  181   181 	}
  182   182 
  183    -1 	var chosenVersion *qrCodeVersion = getQRCodeVersion(level, version)
   -1   183 	chosenVersion := getQRCodeVersion(level, version)
  184   184 
  185   185 	if chosenVersion == nil {
  186    -1 		return nil, errors.New("Cannot find QR Code version")
   -1   186 		return nil, errors.New("cannot find QR Code version")
  187   187 	}
  188   188 
  189    -1 	var q *QRCode = &QRCode{
   -1   189 	q := &QRCode{
  190   190 		Content: content,
  191   191 
  192   192 		Level:         level,
@@ -234,9 +234,8 @@ func (q *QRCode) Image(size int) image.Image {
  234   234 	// Center the symbol within the image.
  235   235 	offset := (size - realSize*pixelsPerModule) / 2
  236   236 
  237    -1 	var rect image.Rectangle = image.Rectangle{Min: image.Point{0, 0}, Max: image.Point{size, size}}
  238    -1 
  239    -1 	var img *image.RGBA = image.NewRGBA(rect)
   -1   237 	rect := image.Rectangle{Min: image.Point{0, 0}, Max: image.Point{size, size}}
   -1   238 	img := image.NewRGBA(rect)
  240   239 
  241   240 	for i := 0; i < size; i++ {
  242   241 		for j := 0; j < size; j++ {
@@ -244,7 +243,7 @@ func (q *QRCode) Image(size int) image.Image {
  244   243 		}
  245   244 	}
  246   245 
  247    -1 	var bitmap [][]bool = q.symbol.bitmap()
   -1   246 	bitmap := q.symbol.bitmap()
  248   247 	for y, row := range bitmap {
  249   248 		for x, v := range row {
  250   249 			if v {
@@ -267,7 +266,7 @@ func (q *QRCode) Image(size int) image.Image {
  267   266 // size is both the image width and height in pixels. If size is too small then
  268   267 // a larger image is silently returned.
  269   268 func (q *QRCode) PNG(size int) ([]byte, error) {
  270    -1 	var img image.Image = q.Image(size)
   -1   269 	img := q.Image(size)
  271   270 
  272   271 	var b bytes.Buffer
  273   272 	err := png.Encode(&b, img)
@@ -302,10 +301,10 @@ func (q *QRCode) encode(numTerminatorBits int) {
  302   301 	q.addTerminatorBits(numTerminatorBits)
  303   302 	q.addPadding()
  304   303 
  305    -1 	var encoded *bitset.Bitset = q.encodeBlocks()
   -1   304 	encoded := q.encodeBlocks()
  306   305 
  307    -1 	var numMasks int = 8
  308    -1 	var penalty int = 0
   -1   306 	const numMasks int = 8
   -1   307 	penalty := 0
  309   308 
  310   309 	for mask := 0; mask < numMasks; mask++ {
  311   310 		var s *symbol
@@ -317,7 +316,7 @@ func (q *QRCode) encode(numTerminatorBits int) {
  317   316 			log.Panic(err.Error())
  318   317 		}
  319   318 
  320    -1 		var p int = s.penaltyScore()
   -1   319 		p := s.penaltyScore()
  321   320 
  322   321 		//log.Printf("mask=%d p=%3d p1=%3d p2=%3d p3=%3d p4=%d\n", mask, p, s.penalty1(), s.penalty2(), s.penalty3(), s.penalty4())
  323   322 
@@ -351,18 +350,19 @@ func (q *QRCode) encodeBlocks() *bitset.Bitset {
  351   350 		ecStartOffset int
  352   351 	}
  353   352 
  354    -1 	var block []dataBlock = make([]dataBlock, q.version.numBlocks())
   -1   353 	block := make([]dataBlock, q.version.numBlocks())
   -1   354 
   -1   355 	start := 0
   -1   356 	end := 0
   -1   357 	blockID := 0
  355   358 
  356    -1 	var start int = 0
  357    -1 	var end int = 0
  358    -1 	var blockID int = 0
  359   359 	for _, b := range q.version.block {
  360   360 		for j := 0; j < b.numBlocks; j++ {
  361   361 			start = end
  362   362 			end = start + b.numDataCodewords*8
  363   363 
  364   364 			// Apply error correction to each block.
  365    -1 			var numErrorCodewords int = b.numCodewords - b.numDataCodewords
   -1   365 			numErrorCodewords := b.numCodewords - b.numDataCodewords
  366   366 			block[blockID].data = reedsolomon.Encode(q.data.Substr(start, end), numErrorCodewords)
  367   367 			block[blockID].ecStartOffset = end - start
  368   368 
@@ -380,7 +380,7 @@ func (q *QRCode) encodeBlocks() *bitset.Bitset {
  380   380 	result := bitset.New()
  381   381 
  382   382 	// Combine data blocks.
  383    -1 	var working bool = true
   -1   383 	working := true
  384   384 	for i := 0; working; i += 8 {
  385   385 		working = false
  386   386 
@@ -401,7 +401,7 @@ func (q *QRCode) encodeBlocks() *bitset.Bitset {
  401   401 		working = false
  402   402 
  403   403 		for j, b := range block {
  404    -1 			var offset int = i + block[j].ecStartOffset
   -1   404 			offset := i + block[j].ecStartOffset
  405   405 			if offset >= block[j].data.Len() {
  406   406 				continue
  407   407 			}
@@ -422,9 +422,9 @@ func (q *QRCode) encodeBlocks() *bitset.Bitset {
  422   422 func max(a int, b int) int {
  423   423 	if a > b {
  424   424 		return a
  425    -1 	} else {
  426    -1 		return b
  427   425 	}
   -1   426 
   -1   427 	return b
  428   428 }
  429   429 
  430   430 // addPadding pads the encoded data upto the full length required.
@@ -439,7 +439,7 @@ func (q *QRCode) addPadding() {
  439   439 	q.data.AppendNumBools(q.version.numBitsToPadToCodeword(q.data.Len()), false)
  440   440 
  441   441 	// Pad codewords 0b11101100 and 0b00010001.
  442    -1 	var padding [2]*bitset.Bitset = [2]*bitset.Bitset{
   -1   442 	padding := [2]*bitset.Bitset{
  443   443 		bitset.New(true, true, true, false, true, true, false, false),
  444   444 		bitset.New(false, false, false, true, false, false, false, true),
  445   445 	}

diff --git a/qrcode_decode_test.go b/qrcode_decode_test.go

@@ -142,13 +142,13 @@ func TestDecodeFuzz(t *testing.T) {
  142   142 		t.Skip("Decode fuzz tests not enabled")
  143   143 	}
  144   144 
  145    -1 	var r *rand.Rand = rand.New(rand.NewSource(0))
   -1   145 	r := rand.New(rand.NewSource(0))
  146   146 
  147    -1 	const kIterations int = 32
  148    -1 	const kMaxLength int = 128
   -1   147 	const iterations int = 32
   -1   148 	const maxLength int = 128
  149   149 
  150    -1 	for i := 0; i < kIterations; i++ {
  151    -1 		len := r.Intn(kMaxLength-1) + 1
   -1   150 	for i := 0; i < iterations; i++ {
   -1   151 		len := r.Intn(maxLength-1) + 1
  152   152 
  153   153 		var content string
  154   154 		for j := 0; j < len; j++ {
@@ -179,7 +179,7 @@ func zbarimgCheck(q *QRCode) error {
  179   179 
  180   180 	if s != q.Content {
  181   181 		q.WriteFile(256, fmt.Sprintf("%x.png", q.Content))
  182    -1 		return fmt.Errorf("Got '%s' (%x) expected '%s' (%x)", s, s, q.Content, q.Content)
   -1   182 		return fmt.Errorf("got '%s' (%x) expected '%s' (%x)", s, s, q.Content, q.Content)
  183   183 	}
  184   184 
  185   185 	return nil
@@ -194,7 +194,7 @@ func zbarimgDecode(q *QRCode) (string, error) {
  194   194 		return "", err
  195   195 	}
  196   196 
  197    -1 	var cmd *exec.Cmd = exec.Command("zbarimg", "--quiet", "-Sdisable",
   -1   197 	cmd := exec.Command("zbarimg", "--quiet", "-Sdisable",
  198   198 		"-Sqrcode.enable", "/dev/stdin")
  199   199 
  200   200 	var out bytes.Buffer

diff --git a/regular_symbol.go b/regular_symbol.go

@@ -106,7 +106,7 @@ var (
  106   106 
  107   107 func buildRegularSymbol(version qrCodeVersion, mask int,
  108   108 	data *bitset.Bitset) (*symbol, error) {
  109    -1 	var m *regularSymbol = &regularSymbol{
   -1   109 	m := &regularSymbol{
  110   110 		version: version,
  111   111 		mask:    mask,
  112   112 		data:    data,
@@ -130,10 +130,10 @@ func buildRegularSymbol(version qrCodeVersion, mask int,
  130   130 }
  131   131 
  132   132 func (m *regularSymbol) addFinderPatterns() {
  133    -1 	var fpSize int = finderPatternSize
  134    -1 	var fp [][]bool = finderPattern
  135    -1 	var fpHBorder [][]bool = finderPatternHorizontalBorder
  136    -1 	var fpVBorder [][]bool = finderPatternVerticalBorder
   -1   133 	fpSize := finderPatternSize
   -1   134 	fp := finderPattern
   -1   135 	fpHBorder := finderPatternHorizontalBorder
   -1   136 	fpVBorder := finderPatternVerticalBorder
  137   137 
  138   138 	// Top left Finder Pattern.
  139   139 	m.symbol.set2dPattern(0, 0, fp)
@@ -164,7 +164,7 @@ func (m *regularSymbol) addAlignmentPatterns() {
  164   164 }
  165   165 
  166   166 func (m *regularSymbol) addTimingPatterns() {
  167    -1 	var value bool = true
   -1   167 	value := true
  168   168 
  169   169 	for i := finderPatternSize + 1; i < m.size-finderPatternSize; i++ {
  170   170 		m.symbol.set(i, finderPatternSize-1, value)
@@ -175,10 +175,10 @@ func (m *regularSymbol) addTimingPatterns() {
  175   175 }
  176   176 
  177   177 func (m *regularSymbol) addFormatInfo() {
  178    -1 	var fpSize int = finderPatternSize
  179    -1 	var l int = formatInfoLengthBits - 1
   -1   178 	fpSize := finderPatternSize
   -1   179 	l := formatInfoLengthBits - 1
  180   180 
  181    -1 	var f *bitset.Bitset = m.version.formatInfo(m.mask)
   -1   181 	f := m.version.formatInfo(m.mask)
  182   182 
  183   183 	// Bits 0-7, under the top right finder pattern.
  184   184 	for i := 0; i <= 7; i++ {
@@ -210,10 +210,10 @@ func (m *regularSymbol) addFormatInfo() {
  210   210 }
  211   211 
  212   212 func (m *regularSymbol) addVersionInfo() {
  213    -1 	var fpSize int = finderPatternSize
   -1   213 	fpSize := finderPatternSize
  214   214 
  215    -1 	var v *bitset.Bitset = m.version.versionInfo()
  216    -1 	var l int = versionInfoLengthBits - 1
   -1   215 	v := m.version.versionInfo()
   -1   216 	l := versionInfoLengthBits - 1
  217   217 
  218   218 	if v == nil {
  219   219 		return
@@ -236,11 +236,11 @@ const (
  236   236 )
  237   237 
  238   238 func (m *regularSymbol) addData() (bool, error) {
  239    -1 	var xOffset int = 1
  240    -1 	var dir direction = up
   -1   239 	xOffset := 1
   -1   240 	dir := up
  241   241 
  242    -1 	var x int = m.size - 2
  243    -1 	var y int = m.size - 1
   -1   242 	x := m.size - 2
   -1   243 	y := m.size - 1
  244   244 
  245   245 	for i := 0; i < m.data.Len(); i++ {
  246   246 		var mask bool

diff --git a/regular_symbol_test.go b/regular_symbol_test.go

@@ -12,10 +12,9 @@ import (
   12    12 
   13    13 func TestBuildRegularSymbol(t *testing.T) {
   14    14 	for k := 0; k <= 7; k++ {
   15    -1 		var v *qrCodeVersion = getQRCodeVersion(Low, 1)
   16    -1 		var s *symbol
   -1    15 		v := getQRCodeVersion(Low, 1)
   17    16 
   18    -1 		var data *bitset.Bitset = bitset.New()
   -1    17 		data := bitset.New()
   19    18 		for i := 0; i < 26; i++ {
   20    19 			data.AppendNumBools(8, false)
   21    20 		}

diff --git a/symbol.go b/symbol.go

@@ -90,9 +90,9 @@ func (m *symbol) set2dPattern(x int, y int, v [][]bool) {
   90    90 
   91    91 // bitmap returns the entire symbol, including the quiet zone.
   92    92 func (m *symbol) bitmap() [][]bool {
   93    -1 	var module [][]bool = make([][]bool, len(m.module))
   -1    93 	module := make([][]bool, len(m.module))
   94    94 
   95    -1 	for i, _ := range m.module {
   -1    95 	for i := range m.module {
   96    96 		module[i] = m.module[i][:]
   97    97 	}
   98    98 
@@ -142,7 +142,7 @@ func (m *symbol) penaltyScore() int {
  142   142 // 0-5: score = 0
  143   143 // 6+ : score = penaltyWeight1 + (numAdjacentModules - 5)
  144   144 func (m *symbol) penalty1() int {
  145    -1 	var penalty int = 0
   -1   145 	penalty := 0
  146   146 
  147   147 	for x := 0; x < m.symbolSize; x++ {
  148   148 		lastValue := m.get(x, 0)
@@ -159,7 +159,7 @@ func (m *symbol) penalty1() int {
  159   159 				if count == 6 {
  160   160 					penalty += penaltyWeight1 + 1
  161   161 				} else if count > 6 {
  162    -1 					penalty += 1
   -1   162 					penalty++
  163   163 				}
  164   164 			}
  165   165 		}
@@ -180,7 +180,7 @@ func (m *symbol) penalty1() int {
  180   180 				if count == 6 {
  181   181 					penalty += penaltyWeight1 + 1
  182   182 				} else if count > 6 {
  183    -1 					penalty += 1
   -1   183 					penalty++
  184   184 				}
  185   185 			}
  186   186 		}
@@ -193,7 +193,7 @@ func (m *symbol) penalty1() int {
  193   193 //
  194   194 // m*n: score = penaltyWeight2 * (m-1) * (n-1).
  195   195 func (m *symbol) penalty2() int {
  196    -1 	var penalty int = 0
   -1   196 	penalty := 0
  197   197 
  198   198 	for y := 1; y < m.symbolSize; y++ {
  199   199 		for x := 1; x < m.symbolSize; x++ {
@@ -217,7 +217,7 @@ func (m *symbol) penalty2() int {
  217   217 //
  218   218 // Existence of the pattern scores penaltyWeight3.
  219   219 func (m *symbol) penalty3() int {
  220    -1 	var penalty int = 0
   -1   220 	penalty := 0
  221   221 
  222   222 	for y := 0; y < m.symbolSize; y++ {
  223   223 		var bitBuffer int16 = 0x00
@@ -272,8 +272,8 @@ func (m *symbol) penalty3() int {
  272   272 
  273   273 // penalty4 returns the penalty score...
  274   274 func (m *symbol) penalty4() int {
  275    -1 	var numModules int = m.symbolSize * m.symbolSize
  276    -1 	var numDarkModules int = 0
   -1   275 	numModules := m.symbolSize * m.symbolSize
   -1   276 	numDarkModules := 0
  277   277 
  278   278 	for x := 0; x < m.symbolSize; x++ {
  279   279 		for y := 0; y < m.symbolSize; y++ {
@@ -283,7 +283,7 @@ func (m *symbol) penalty4() int {
  283   283 		}
  284   284 	}
  285   285 
  286    -1 	var numDarkModuleDeviation int = numModules/2 - numDarkModules
   -1   286 	numDarkModuleDeviation := numModules/2 - numDarkModules
  287   287 	if numDarkModuleDeviation < 0 {
  288   288 		numDarkModuleDeviation *= -1
  289   289 	}

diff --git a/symbol_test.go b/symbol_test.go

@@ -6,10 +6,10 @@ package qrcode
    6     6 import "testing"
    7     7 
    8     8 func TestSymbolBasic(t *testing.T) {
    9    -1 	var size int = 10
   10    -1 	var quietZoneSize int = 4
   -1     9 	size := 10
   -1    10 	quietZoneSize := 4
   11    11 
   12    -1 	var m *symbol = newSymbol(size, quietZoneSize)
   -1    12 	m := newSymbol(size, quietZoneSize)
   13    13 
   14    14 	if m.size != size+quietZoneSize*2 {
   15    15 		t.Errorf("Symbol size is %d, expected %d", m.size, size+quietZoneSize*2)
@@ -28,7 +28,7 @@ func TestSymbolBasic(t *testing.T) {
   28    28 				t.Errorf("New symbol is not empty")
   29    29 			}
   30    30 
   31    -1 			var value bool = i*j%2 == 0
   -1    31 			value := i*j%2 == 0
   32    32 			m.set(i, j, value)
   33    33 
   34    34 			v = m.get(i, j)
@@ -302,7 +302,7 @@ func TestSymbolPenalties(t *testing.T) {
  302   302 	}
  303   303 
  304   304 	for i, test := range tests {
  305    -1 		var s *symbol = newSymbol(len(test.pattern[0]), 4)
   -1   305 		s := newSymbol(len(test.pattern[0]), 4)
  306   306 		s.set2dPattern(0, 0, test.pattern)
  307   307 
  308   308 		penalty1 := s.penalty1()
@@ -310,7 +310,8 @@ func TestSymbolPenalties(t *testing.T) {
  310   310 		penalty3 := s.penalty3()
  311   311 		penalty4 := s.penalty4()
  312   312 
  313    -1 		var ok bool = true
   -1   313 		ok := true
   -1   314 
  314   315 		if test.expectedPenalty1 != -1 && test.expectedPenalty1 != penalty1 {
  315   316 			ok = false
  316   317 		}

diff --git a/version.go b/version.go

@@ -2965,7 +2965,7 @@ func (v qrCodeVersion) numDataBits() int {
 2965  2965 //
 2966  2966 // On success the chosen QR Code version is returned.
 2967  2967 func chooseQRCodeVersion(level RecoveryLevel, encoder *dataEncoder, numDataBits int) *qrCodeVersion {
 2968    -1 	var chosenVersion *qrCodeVersion = nil
   -1  2968 	var chosenVersion *qrCodeVersion
 2969  2969 
 2970  2970 	for _, v := range versions {
 2971  2971 		if v.level != level {

diff --git a/version_test.go b/version_test.go

@@ -54,7 +54,7 @@ func TestFormatInfo(t *testing.T) {
   54    54 	}
   55    55 
   56    56 	for i, test := range tests {
   57    -1 		var v *qrCodeVersion = getQRCodeVersion(test.level, 1)
   -1    57 		v := getQRCodeVersion(test.level, 1)
   58    58 
   59    59 		result := v.formatInfo(test.maskPattern)
   60    60