How to use getIndex method of parser Package

Best Gauge code snippet using parser.getIndex

getlist.go

Source:getlist.go Github

copy

Full Screen

1package webqq2import (3 "encoding/json"4 "fmt"5 "net/url"6 "strconv"7 . "webqq/tools"8 "webqq/tools/simplejson"9)10func init() {11 fmt.Print("")12}13type Friend struct {14 Uin string15 Categories int16 Nick string17 Markname string18 Face int19 Online int20 Id string21}22type FriendMap map[string]*Friend23type CataMap map[int]string24type FriendList struct {25 FriendMap26 CataMap27}28func (qq *Client) GetFriendList() (flst *FriendList, err error) {29 defer func() {30 if e := recover(); e != nil {31 err = e.(error)32 }33 }()34 v := url.Values{}35 h, err := json.Marshal(36 map[string]string{37 `h`: `hello`,38 `vfwebqq`: qq.vfwebqq,39 `hash`: hash(qq.id, qq.ptwebqq)})40 v.Set(`r`, string(h))41 re, err := qq.postForm(`http://s.web2.qq.com/api/get_user_friends2`, v)42 if err != nil {43 panic(err)44 }45 defer re.Body.Close()46 flst, err = friendListParser(ReadByte(re.Body))47 if err != nil {48 panic(err)49 }50 for i := range flst.FriendMap {51 va, err := qq.GetId(i)52 if err != nil {53 panic(err)54 }55 flst.FriendMap[i].Id = va56 }57 return58}59func friendListParser(in []byte) (f *FriendList, err error) {60 js, err := simplejson.NewJson(in)61 if err != nil {62 return nil, err63 }64 f = &FriendList{}65 f.FriendMap = make(FriendMap)66 f.CataMap = make(CataMap)67 result := js.Get(`result`)68 for i, cat := 0, result.Get(`categories`); i < len(cat.MustArray()); i++ {69 f.CataMap[cat.GetIndex(i).Get(`index`).MustInt()] = cat.GetIndex(i).Get(`name`).MustString()70 }71 for i, frd := 0, result.Get(`friends`); i < len(frd.MustArray()); i++ {72 uin := fmt.Sprint(int64(frd.GetIndex(i).Get(`uin`).MustFloat64()))73 categories := frd.GetIndex(i).Get(`categories`).MustInt()74 f.FriendMap[uin] = &Friend{Uin: uin, Categories: categories}75 }76 for i, inf := 0, result.Get(`info`); i < len(inf.MustArray()); i++ {77 uin := fmt.Sprint(int64(inf.GetIndex(i).Get(`uin`).MustFloat64()))78 nick := inf.GetIndex(i).Get(`nick`).MustString()79 face := inf.GetIndex(i).Get(`face`).MustInt()80 flag := inf.GetIndex(i).Get(`flag`).MustInt()81 if ptr, ok := f.FriendMap[uin]; ok {82 ptr.Nick = nick83 ptr.Markname = nick84 ptr.Face = face85 ptr.Online = flag86 }87 }88 for i, mkn := 0, result.Get(`marknames`); i < len(mkn.MustArray()); i++ {89 markname := mkn.GetIndex(i).Get(`markname`).MustString()90 uin := fmt.Sprint(int64(mkn.GetIndex(i).Get(`uin`).MustFloat64()))91 if ptr, ok := f.FriendMap[uin]; ok {92 ptr.Markname = markname93 }94 }95 return96}97type b struct {98 s, e int99}100func nb(c, i int) b {101 return b{s: c | 0, e: i | 0}102}103func hash(is, a string) string {104 r := [4]int{}105 i, _ := strconv.Atoi(is)106 r[0] = i >> 24 & 255107 r[1] = i >> 16 & 255108 r[2] = i >> 8 & 255109 r[3] = i >> 0 & 255110 j := []int{}111 for e := 0; e < len(a); e++ {112 j = append(j, int(a[e]))113 }114 e := []b{}115 for e = append(e, nb(0, len(j)-1)); len(e) > 0; {116 var c = e[len(e)-1]117 e = e[:len(e)-1]118 if !(c.s >= c.e || c.s < 0 || c.e >= len(j)) {119 if c.s+1 == c.e {120 if j[c.s] > j[c.e] {121 j[c.s], j[c.e] = j[c.e], j[c.s]122 }123 } else {124 var f = j[c.s]125 var l = c.s126 var J = c.e127 for c.s < c.e {128 for c.s < c.e && j[c.e] >= f {129 c.e--130 r[0] = (r[0] + 3) & 255131 }132 if c.s < c.e {133 j[c.s] = j[c.e]134 c.s++135 r[1] = (r[1]*13 + 43) & 255136 }137 for c.s < c.e && j[c.s] <= f {138 c.s++139 r[2] = (r[2] - 3) & 255140 }141 if c.s < c.e {142 j[c.e] = j[c.s]143 c.e--144 r[3] = (r[0] ^ r[1] ^ r[2] ^ (r[3] + 1)) & 255145 }146 }147 j[c.s] = f148 e = append(e, nb(l, c.s-1))149 e = append(e, nb(c.s+1, J))150 }151 }152 }153 js := []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}154 es := ""155 for c := 0; c < len(r); c++ {156 es += js[r[c]>>4&15]157 es += js[r[c]&15]158 }159 return es160}161/*162{163 "retcode": 0,164 "result": {165 "friends": [166 {167 "flag": 0,168 "uin": 1192173647,169 "categories": 0170 },171 {172 "flag": 4,173 "uin": 2549892970,174 "categories": 1175 },176 {177 "flag": 0,178 "uin": 4069820047,179 "categories": 0180 },181 {182 "flag": 0,183 "uin": 490067261,184 "categories": 0185 },186 {187 "flag": 0,188 "uin": 4185452572,189 "categories": 0190 },191 {192 "flag": 8,193 "uin": 223290852,194 "categories": 2195 },196 {197 "flag": 8,198 "uin": 1196002108,199 "categories": 2200 }201 ],202 "marknames": [203 {204 "uin": 223290852,205 "markname": "沈超",206 "type": 0207 },208 {209 "uin": 1196002108,210 "markname": "大头",211 "type": 0212 }213 ],214 "categories": [215 {216 "index": 1,217 "sort": 1,218 "name": "道友"219 },220 {221 "index": 2,222 "sort": 2,223 "name": "同学"224 }225 ],226 "vipinfo": [227 {228 "vip_level": 0,229 "u": 1192173647,230 "is_vip": 0231 },232 {233 "vip_level": 0,234 "u": 2549892970,235 "is_vip": 0236 },237 {238 "vip_level": 2,239 "u": 4069820047,240 "is_vip": 1241 },242 {243 "vip_level": 0,244 "u": 490067261,245 "is_vip": 0246 },247 {248 "vip_level": 0,249 "u": 4185452572,250 "is_vip": 0251 },252 {253 "vip_level": 0,254 "u": 223290852,255 "is_vip": 0256 },257 {258 "vip_level": 0,259 "u": 1196002108,260 "is_vip": 0261 }262 ],263 "info": [264 {265 "face": 600,266 "flag": 29884928,267 "nick": "42",268 "uin": 1192173647269 },270 {271 "face": 12,272 "flag": 0,273 "nick": "火里栽莲",274 "uin": 2549892970275 },276 {277 "face": 0,278 "flag": 13107718,279 "nick": "林选",280 "uin": 4069820047281 },282 {283 "face": 336,284 "flag": 13107712,285 "nick": "度竹轻衣",286 "uin": 490067261287 },288 {289 "face": 558,290 "flag": 524802,291 "nick": "Qrox",292 "uin": 4185452572293 },294 {295 "face": 339,296 "flag": 13140480,297 "nick": "弎弍弌廿卅卌",298 "uin": 223290852299 },300 {301 "face": 147,302 "flag": 8388608,303 "nick": "blue~beak",304 "uin": 1196002108305 }306 ]307 }308}*/...

Full Screen

Full Screen

resolve.go

Source:resolve.go Github

copy

Full Screen

1package resolve2import (3 "fmt"4 "parser"5 "maths_functions"6 "types"7 "strings"8 "strconv"9 "equations"10 "maps"11 "replace_vars"12)13type Unknown struct {14 Tab map[int]string15 Deg_max map[int]int16 Part1 map[int]string17 Part2 map[int]string18 Eqs map[int]equations.Equation19}20type Resol struct {21 Tab map[int]string22}23func IsSoluble(U Unknown) (bool) {24 for i := 0; i < len(U.Deg_max); i++ {25 if U.Deg_max[i] > 2 || U.Deg_max[i] < 0 {26 return (false)27 }28 }29 return (true)30}31func Init(U *Unknown, Dat types.Variable) (string) {32 res, t := getSignEq(U)33 if res == "1" {34 if t == 2 {35 ModMAps(U)36 RempEq(U.Tab, U, Dat)37 return ("|")38 }39 if t == 1 {40 return ("Sorry i Cant resolve this equation")41 }42 RempEq(U.Tab, U, Dat)43 return ("|")44 }45 return (res)46}47func ModMAps(U *Unknown) {48 A := Unknown{}49 tmp := make(map[int]string)50 tmp1 := make(map[int]string)51 tmp[0] = U.Part1[0]52 A.Part1 = tmp53 tmp1[0] = U.Part2[0]54 A.Part2 = tmp155 A.Tab = make(map[int]string)56 A.Tab[0] = U.Tab[0]57 A.Tab[1] = "0"58 A.Deg_max = make(map[int]int)59 A.Deg_max[0] = U.Deg_max[0]60 A.Deg_max[1] = 061 U = &A62}63func getSignEq(U *Unknown) (string, int) {64 if len(U.Part1) > 2 {65 66 sign := InitSign(U.Part1[1])67 if sign == "%" {68 return "Sorry i can't resolve this equation", 069 }70 for i := 3; i < len(U.Part1); i += 2 {71 fmt.Println(U.Part1[i])72 if strings.Index(sign, U.Part1[i]) == -1 {73 return "Sorry i can't resolve this equation", 074 }75 }76 if len(sign) == 1 && (len(U.Part2) > 2 || (U.Part2[0] != "0" && U.Part2[0] != "-0")) {77 return "Sorry i can't resolve this equation", 078 }79 if sign == "*" {80 return "1", 181 }82 if sign == "/" {83 return "1", 284 }85 }86 for a := 0; a < len(U.Tab); a++ {87 if strings.Index(U.Tab[a], "(") != -1 || strings.Index(U.Tab[a], ")") != -1 || strings.Index(U.Tab[a], "[") != -1 || strings.Index(U.Tab[a], "]") != -1 || strings.Index(U.Tab[a], "i") != -1 {88 return "Sorry i can't resolve this equation", 089 }90 }91 return "1", 392}93func InitSign(str string) (string) {94 if str == "+" || str == "-" {95 return ("+-")96 }97 return (str)98}99func RempEq(tab map[int]string, U *Unknown, Dat types.Variable) {100 WE := 0101 pos_s := -3102 var sign string103 for i := 0; i < len(tab); i++ {104 tab[i] = strings.ReplaceAll(tab[i], " ", "")105 if (len(U.Part1) - 1) / 2 < i {106 WE = 1107 pos_s = -3108 }109 pos_s += 2110 if WE == 1 && i - 1 >= 0 {111 fmt.Printf("2\n")112 sign = U.Part2[pos_s]113 } else if WE == 0 && i - 1 >= 0 {114 fmt.Printf("1\n")115 sign = U.Part1[pos_s]116 }117 if strings.Index(tab[i], "|") != -1 {118 e := strings.Split(tab[i], "|")119 ck := 0120 GetAllSign(maps.Join(parser.Checkfunc(parser.GetAllIma(e[0], &ck), Dat), ""), e[1], U, WE, sign, Dat)121 } else {122 RPuis(tab[i], 0, WE, U, sign, Dat)123 }124 }125}126func GetAllSign(str string, x string, U *Unknown, WE int, signdeb string, Dat types.Variable) {127 var puis int128 var sign int129 if str[0] == '-' || str[0] == '+' {130 if str[0] == '-' {131 sign = 1132 }133 str = str[1:len(str)]134 }135 for i := GetIndex(str); i != -1; i = GetIndex(str) {136 if str[0] == '-' || str[0] == '+' {137 if str[0] == '-' {138 sign = 1139 }140 str = str[1:len(str)]141 i = GetIndex(str)142 if i == -1 {143 break144 }145 }146 puis = GetMaxDeg(str[0:i], x)147 if puis < 0 {148 puis = 0149 }150 if sign == 1 {151 RPuis(getNumber("-" + str[0:i], x), puis, WE, U, signdeb, Dat)152 } else {153 RPuis(getNumber(str[0:i], x), puis, WE, U, signdeb, Dat)154 }155 str = str[i:len(str)]156 sign = 0157 }158 puis = GetMaxDeg(str, x)159 if puis < 0 {160 puis = 0161 }162 RPuis(getNumber(str, x), puis, WE, U, signdeb, Dat)163}164func getNumber(str string, x string) (string) {165 if strings.Index(str, "ˆ") != -1 || strings.Index(str, "^") != -1 {166 index := strings.Index(str, x)167 str = str[0:index]168 }169 str = strings.ReplaceAll(str, "*", "")170 str = strings.ReplaceAll(str, x, "")171 if str == "" {172 return ("1")173 }174 return (str)175}176func GetIndex(str string) (int) {177 max := -1178 a := strings.Index(str, "/")179 if a != -1 && (max == -1 || a < max) {180 max = a181 }182 a = strings.Index(str, "%")183 if a != -1 && (max == -1 || a < max) {184 max = a185 }186 a = strings.Index(str, "-")187 if a != -1 && (max == -1 || a < max) {188 max = a189 }190 a = strings.Index(str, "+")191 if a != -1 && (max == -1 || a < max) {192 max = a193 }194 return (max)195}196func RPuis(nb string, puis int, wEqs int, U *Unknown, sign string, Dat types.Variable) {197 var Eq equations.Equation198 if len(U.Eqs) == 0 {199 U.Eqs = make(map[int]equations.Equation)200 }201 if val, ok := U.Eqs[wEqs]; ok {202 Eq = val203 } else {204 Eq = equations.Equation{}205 }206 207 nb = replace_vars.GetVars(&Dat, nb)208 t1, _ := strconv.ParseFloat(nb, 64)209 210 if sign == "-" {211 if puis == 0 {212 Eq.C -= t1213 } else if puis == 1 {214 Eq.B -= t1215 } else if puis == 2 {216 Eq.A -= t1217 }218 } else if sign == "+" || sign == "" {219 if puis == 0 {220 Eq.C += t1221 } else if puis == 1 {222 Eq.B += t1223 } else if puis == 2 {224 Eq.A += t1225 }226 }227 U.Eqs[wEqs] = Eq228}229func IsEquation(U *Unknown, Dat types.Variable, t int) (bool) {230 231 var tab map[int]string232 if t == 0 {233 tab = U.Part1234 } else {235 tab = U.Part2236 }237 if len(U.Tab) == 0 {238 U.Tab = make(map[int]string)239 U.Deg_max = make(map[int]int)240 }241 f := 0242 for i := 0; i < len(tab); i += 2 {243 if parser.IsFunc(tab[i], 0) == 1 {244 x := maths_functions.Getx(tab[i])245 p1 := strings.Index(tab[i], "(")246 p2 := strings.Index(tab[i], ")")247 r := tab[i][p1 + 1:p2]248 if parser.IsExpression(x, r, Dat) {249 return (false)250 }251 _, val := parser.GetDataFunc(tab[i], Dat.Table)252 if val == "" {253 return (false)254 }255 U.Tab[len(U.Tab)] = val + "|" + x256 U.Deg_max[len(U.Deg_max)] = GetMaxDeg(val, x)257 f++258 } else {259 U.Tab[len(U.Tab)] = tab[i]260 U.Deg_max[len(U.Deg_max)] = 0261 f++262 }263 }264 if f == 0 {265 return (false)266 }267 return (true)268}269func GetMaxDeg(str string, x string) (int) {270 var z, i int271 str = strings.ReplaceAll(str, " ", "")272 a := strings.Index(str, x)273 if a == -1 {274 return (-3)275 }276 max := 1277 str = strings.ReplaceAll(str, "ˆ", "^")278 for a = a; a != -1; a = strings.Index(str, x) {279 if a + 1 >= len(str) {280 return (max)281 }282 if str[a + 1] == '*' {283 z, i = GetDeg('*', str, a + 1, x)284 if z > max {285 max = z286 }287 } else if string(str[a + 1]) == "^" {288 z, _ = strconv.Atoi(string(str[a + 2]))289 i = a + 3290 if z > max {291 max = z292 }293 }294 if i + 1 >= len(str) {295 return (max)296 }297 str = str[i + 1:len(str)]298 }299 return (max)300}301func GetDeg(sign byte, str string, deb int, x string) (int, int) {302 puis := 1303 i := deb304 for i = i; i < len(str) && str[i] == sign; i += 2 {305 if string(str[i + 1]) == x {306 puis++307 }308 }309 return puis, i310}...

Full Screen

Full Screen

nationstatmanager.go

Source:nationstatmanager.go Github

copy

Full Screen

1package nsmanager2import(3 "download/nsdownload"4 "parser/nsparser"5 ns "entity/nsentity"6 "manager"7 "util"8 "fmt"9 "strings"10 "time"11)12const(13 //NSStart = "198301"14 NSStart = "201401"15 NSEnd = "-1"16 NSDateFormat = "2006-01"17 NSInputDateFormat = "200601"18)19type NationStatManager struct {20 manager.ManagerBase21 downloader *nsdownload.NationStatDownloader22 parser *nsparser.NSParser23 idxmap map[string] []ns.NSDataIndex24 nsstart string //"yyyyMM" or "-1" as to present25 nsend string26}27func (m *NationStatManager) Init() {28 m.ManagerBase.Init()29 m.downloader = nsdownload.NewNationStatDownloader()30 m.parser = nsparser.NewNSParser()31 m.idxmap = make(map[string] []ns.NSDataIndex)32}33func (m *NationStatManager) Process() {34 datastr := m.downloader.GetRoot()35 if len(datastr) == 0 {36 m.Logger.Error("Cannot get the children of root")37 }38 m.WriteIndexData("root", 0, datastr)39 rootData := m.parser.ParseIndex(datastr)40 m.OutputIndex(rootData)41 for _, root := range rootData {42 if root.IsParent {43 m.GetIndex(root, 1)44 }45 }46 m.WriteIndex()47}48func (m *NationStatManager) GetIndex(idxdata ns.NSIndex, level int) {49 datastr := m.downloader.GetChild(idxdata.Id, level)50 if len(datastr) == 0 {51 m.Logger.Error("Cannot get the children of:", idxdata.Id, " in level: ", level)52 }53 m.WriteIndexData(idxdata.Id, level, datastr)54 idxchild := m.parser.ParseIndex(datastr)55 dataid := make([]string, 0)56 for _, idx := range idxchild {57 if idx.IfData == "1" {58 dataid = append(dataid, idx.Id)59 } else if idx.IsParent || idx.IfData == "4" {60 m.GetIndex(idx, level + 1)61 } else {62 //do nothing63 }64 }65 66 if len(dataid) > 0 {67 m.GetData(idxdata.Id, dataid, m.nsstart, m.nsend)68 }69}70func (m *NationStatManager) GetData(pid string, ids []string, start string, end string) {71 datastr := m.downloader.GetData(ids, start, end)72 if len(datastr) == 0 {73 m.Logger.Error("Cannot get data of: ", ids, start, end)74 }75 m.WriteData(ids, start, end, datastr)76 nsvalue := m.parser.ParseData(datastr)77 m.WriteValue(ids, start, end, nsvalue.TableData)78 m.AddIndex(pid, nsvalue.Value.Index)79}80func (m *NationStatManager) AddIndex(pid string, indexes []ns.NSDataIndex) {81 values, ok := m.idxmap[pid]82 if !ok {83 m.idxmap[pid] = indexes84 } else {85 values = append(values, indexes ...)86 m.idxmap[pid] = values87 }88}89func (m *NationStatManager) WriteIndexData(id string, level int, content string) {90 format := "%sdata/ns/index-%v-%v.dat"91 filename := fmt.Sprintf(format, m.BaseDir, level, id)92 fmt.Println(filename)93 util.WriteFile(filename, content)94}95func (m *NationStatManager) WriteData(ids []string, start, end, content string) {96 idstr := strings.Join(ids, "-")97 format := "%sdata/ns/data-%v-%v-%v.dat"98 filename := fmt.Sprintf(format, m.BaseDir, ids[0], start, end)99 content += idstr + "\n" + content100 util.WriteFile(filename, content)101}102func (m *NationStatManager) WriteValue(ids []string, start string, end string, data map[string]string) {103 idstr := strings.Join(ids, "-")104 format := "%sdata/ns/actualdata-%v-%v-%v.dat"105 filename := fmt.Sprintf(format, m.BaseDir, ids[0], start, end)106 content := idstr + "\n"107 for k, v := range data{108 content += k + ": " + v + "\n"109 }110 util.WriteFile(filename, content)111}112func (m *NationStatManager) WriteIndex() {113 format := "%sdata/ns/macroindex.dat"114 filename := fmt.Sprintf(format, m.BaseDir)115 var content string116 for k, vs := range m.idxmap {117 content += fmt.Sprintf("=============Parent: %v\n", k)118 for _, v := range vs {119 content += fmt.Sprintf("%v: %v\n", v.Id, v.Name)120 }121 }122 util.WriteFile(filename, content)123}124func (m *NationStatManager) OutputIndex(idxdata []ns.NSIndex){125 var str string126 for _, v := range idxdata {127 str += fmt.Sprintf("Id: %v, Name: %v, PId: %v, EName: %v, IfData: %v, IsParent: %v\n", v.Id, v.Name, v.PId, v.EName, v.IfData, v.IsParent)128 //fmt.Println(str)129 130 }131 m.Logger.Info(str)132}133func NewNationStatManager(start, end string) *NationStatManager{134 m := new(NationStatManager)135 m.Init()136 137 t, err := time.Parse(NSDateFormat, start)138 if err != nil {139 m.nsstart = "-1"140 } else {141 m.nsstart = t.Format(NSInputDateFormat)142 }143 t, err = time.Parse(NSDateFormat, end)144 if err != nil {145 m.nsend = "-1"146 } else {147 m.nsend = t.Format(NSInputDateFormat)148 }149 fmt.Println("start: ", m.nsstart, " end: ", m.nsend)150 return m151}...

Full Screen

Full Screen

getIndex

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println(parser.getIndex())4}5func getIndex() int {6}7 /usr/local/go/src/parser (from $GOROOT)8 /home/username/go/src/parser (from $GOPATH)

Full Screen

Full Screen

getIndex

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 parser := parser.Parser{Data: "mydata"}4 fmt.Println(parser.GetIndex())5}6import (7func main() {8 parser := parser.Parser{Data: "mydata"}9 fmt.Println(parser.GetIndex())10}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Gauge automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful