blob: 9dff11655eea64cecd82c7568e8c2602198caaff [file] [log] [blame]
/* Copyright 2012 The Go Authors. All rights reserved.
* Use of this source code is governed by a BSD-style
* license that can be found in the LICENSE file.
*/
'use strict';
angular.module('tour.values', []).
// List of modules with description and lessons in it.
value('tableOfContents', [{
'id': 'mechanics',
'title': 'Using the tour',
'description': '<p>Welcome to a tour of the <a href="https://go.dev">Go programming language</a>. The tour covers the most important features of the language, mainly:</p>',
'lessons': ['welcome']
}, {
'id': 'basics',
'title': 'Basics',
'description': '<p>The starting point, learn all the basics of the language.</p><p>Declaring variables, calling functions, and all the things you need to know before moving to the next lessons.</p>',
'lessons': ['basics', 'flowcontrol', 'moretypes']
}, {
'id': 'methods',
'title': 'Methods and interfaces',
'description': '<p>Learn how to define methods on types, how to declare interfaces, and how to put everything together.</p>',
'lessons': ['methods']
}, {
'id': 'generics',
'title': 'Generics',
'description': '<p>Learn how to use type parameters in Go functions and structs.</p>',
'lessons': ['generics']
}, {
'id': 'concurrency',
'title': 'Concurrency',
'description': '<p>Go provides concurrency features as part of the core language.</p><p>This module goes over goroutines and channels, and how they are used to implement different concurrency patterns.</p>',
'lessons': ['concurrency']
}]).
// translation
value('translation', {
'off': 'off',
'on': 'on',
'syntax': 'Syntax-Highlighting',
'lineno': 'Line-Numbers',
'reset': 'Reset Slide',
'format': 'Format Source Code',
'kill': 'Kill Program',
'run': 'Run',
'compile': 'Compile and Run',
'more': 'Options',
'toc': 'Table of Contents',
'prev': 'Previous',
'next': 'Next',
'waiting': 'Waiting for remote server...',
'errcomm': 'Error communicating with remote server.',
'submit-feedback': 'Send feedback about this page',
// GitHub issue template: update repo and messaging when translating.
'github-repo': 'github.com/golang/tour',
'issue-title': 'tour: [REPLACE WITH SHORT DESCRIPTION]',
'issue-message': 'Change the title above to describe your issue and add your feedback here, including code if necessary',
'context': 'Context',
}).
// Config for codemirror plugin
value('ui.config', {
codemirror: {
mode: 'text/x-go',
matchBrackets: true,
lineNumbers: true,
autofocus: true,
indentWithTabs: true,
indentUnit: 4,
tabSize: 4,
lineWrapping: true,
extraKeys: {
'Shift-Enter': function() {
$('#run').click();
},
'Ctrl-Enter': function() {
$('#format').click();
},
'PageDown': function() {
return false;
},
'PageUp': function() {
return false;
},
},
// TODO: is there a better way to do this?
// AngularJS values can't depend on factories.
onChange: function() {
if (window.codeChanged !== null) window.codeChanged();
}
}
}).
// mapping from the old paths (#42) to the new organization.
// The values have been generated with the map.sh script in the tools directory.
value('mapping', {
'#1': '/welcome/1', // Hello, 世界
'#2': '/welcome/2', // Go local
'#3': '/basics/1', // Packages
'#4': '/basics/2', // Imports
'#5': '/basics/3', // Exported names
'#6': '/basics/4', // Functions
'#7': '/basics/5', // Functions continued
'#8': '/basics/6', // Multiple results
'#9': undefined, // Named results
'#10': '/basics/8', // Variables
'#11': '/basics/9', // Variables with initializers
'#12': '/basics/10', // Short variable declarations
'#13': '/basics/11', // Basic types
'#14': '/basics/13', // Type conversions
'#15': '/basics/15', // Constants
'#16': '/basics/16', // Numeric Constants
'#17': '/flowcontrol/1', // For
'#18': '/flowcontrol/2', // For continued
'#19': '/flowcontrol/3', // For is Go's "while"
'#20': '/flowcontrol/4', // Forever
'#21': '/flowcontrol/5', // If
'#22': '/flowcontrol/6', // If with a short statement
'#23': '/flowcontrol/7', // If and else
'#24': '/flowcontrol/8', // Exercise: Loops and Functions
'#25': '/moretypes/2', // Structs
'#26': '/moretypes/3', // Struct Fields
'#27': '/moretypes/1', // Pointers
'#28': '/moretypes/5', // Struct Literals
'#29': undefined, // The new function
'#30': '/moretypes/6', // Arrays
'#31': '/moretypes/7', // Slices
'#32': '/moretypes/8', // Slicing slices
'#33': '/moretypes/9', // Making slices
'#34': '/moretypes/10', // Nil slices
'#35': '/moretypes/12', // Range
'#36': '/moretypes/13', // Range continued
'#37': '/moretypes/14', // Exercise: Slices
'#38': '/moretypes/15', // Maps
'#39': '/moretypes/16', // Map literals
'#40': '/moretypes/17', // Map literals continued
'#41': '/moretypes/18', // Mutating Maps
'#42': '/moretypes/19', // Exercise: Maps
'#43': '/moretypes/20', // Function values
'#44': '/moretypes/21', // Function closures
'#45': '/moretypes/22', // Exercise: Fibonacci closure
'#46': '/flowcontrol/9', // Switch
'#47': '/flowcontrol/10', // Switch evaluation order
'#48': '/flowcontrol/11', // Switch with no condition
'#49': undefined, // Advanced Exercise: Complex cube roots
'#50': undefined, // Methods and Interfaces
'#51': '/methods/1', // Methods
'#52': '/methods/2', // Methods continued
'#53': '/methods/3', // Methods with pointer receivers
'#54': '/methods/4', // Interfaces
'#55': '/methods/5', // Interfaces are satisfied implicitly
'#56': '/methods/8', // Errors
'#57': '/methods/9', // Exercise: Errors
'#58': '/methods/13', // Web servers
'#59': '/methods/14', // Exercise: HTTP Handlers
'#60': '/methods/15', // Images
'#61': '/methods/16', // Exercise: Images
'#62': undefined, // Exercise: Rot13 Reader
'#63': undefined, // Concurrency
'#64': '/concurrency/1', // Goroutines
'#65': '/concurrency/2', // Channels
'#66': '/concurrency/3', // Buffered Channels
'#67': '/concurrency/4', // Range and Close
'#68': '/concurrency/5', // Select
'#69': '/concurrency/6', // Default Selection
'#70': '/concurrency/7', // Exercise: Equivalent Binary Trees
'#71': '/concurrency/8', // Exercise: Equivalent Binary Trees
'#72': '/concurrency/9', // Exercise: Web Crawler
'#73': '/concurrency/10', // Where to Go from here...
});